@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,2 @@
1
+ import{jsx as r,jsxs as s}from"react/jsx-runtime";import{Container as _,Heading as A,Picture as G,Button as H,Text as d}from"@anker-in/headless-ui";import{useMemo as C,useState as v}from"react";import{classNames as u}from"@anker-in/lib";import B from"../creditsRedeemList/RedeemVirtualProductModal";import y from"../context/hooks/useRedeemableList";import{useCreditsContext as F}from"../context/provider";import{ROUNDED_BRANDS as P}from"../../../constants";import{useHeadlessContext as j}from"@anker-in/lib";import{AlpcConsumeType as z,AlpcErrorCode as c}from"../context/const";import U from"../modal/RulesModal";import{useRegistration as $}from"../../../components/registration";const ie=({copy:e,id:S})=>{const[D,N]=v(!1),[b,o]=v(),[p,h]=v(),{redeemableList:f}=y({consumeType:z.ExternalProduct}),{pageCommon:l,profile:a,creditInfo:w,setOpenMyRewardsModal:I,openSignUpPopup:M}=F(),{authCodeActivate:E}=$(),{brand:k}=j(),m=P.includes(k),x=Object.keys(a||{}).length>0,T=l?.redeemModal||{};console.log("redeemableList",f);const n=C(()=>{const t=f.find(i=>i.id?.toString()===e?.redeemId?.toString());return t?{alpc:{id:t.id.toString(),consumeCredits:t.consume_credits,remainingInventory:t.remaining_inventory,isLimited:!!t.is_limited,consumeType:t.consume_type,showCredit:!0,title:t.name},config:{title:e.cardTitle,desc:e.cardDesc,type:e.type,value:e.value||"",rules:e.rules,image:e.cardImg}}:null},[f,e]),O=t=>{const i=l?.redeemModal;t===c.CodeLpcShopifyCouponRuleRedeemLimit?o(i?.redeemLimitError):t===c.CodeLpcRuleInventoryNotEnough?o(i?.inventoryNotEnough):t===c.CodeLpcNotEnoughCredits?o(i?.creditsNotEnough):t===c.CodeCrossSiteError?o(i?.crossSiteError):o(i?.commonError)},R=C(()=>a?.activated&&Number(n?.alpc?.consumeCredits)>Number(w?.available_credit||0),[a?.activated,n?.alpc?.consumeCredits,w?.available_credit]),g=Number(n?.alpc.remainingInventory)<=0,L=C(()=>g?l?.soldOut||"Sold Out":x?e.redeemBtn:e.unlockRewards,[x,g,e,l]);return n?s(_,{id:S,children:[r(A,{as:"h2",size:"4",html:e.title}),s("div",{className:u("mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]","l:flex-col l:gap-[12px] l:p-[12px]","min-l:flex-row min-l:gap-[64px]",!m&&"rounded-none",m&&"rounded-[12px]"),children:[r("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",children:e.cardImg?.url&&r(G,{className:u("size-full",m&&"rounded-[12px]"),source:e.mCardImg?.url?`${e.cardImg.url},${e.mCardImg.url} 1024`:e.cardImg.url})}),s("div",{className:"flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]",children:[s("div",{className:"flex flex-col gap-[20px] l:w-full l:gap-[12px]",children:[s("div",{className:"flex flex-col gap-[4px]",children:[r(d,{html:e.cardTitle,className:"text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]"}),r(d,{html:e.cardDesc,className:"text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]"})]}),r(d,{html:e.cardTip,className:"text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]"})]}),s("div",{className:"flex shrink-0 flex-col items-end l:w-full l:items-start",children:[r(H,{variant:"primary",disabled:R||g,onClick:()=>{x?!a?.activated&&!E.isActivateSuccess?E.open():N(!0):M()},title:R?l.insufficientCredits:L,children:L}),b&&r("div",{className:"mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]",children:b}),(e.viewRedeemHistory||e.rulesLink)&&s("div",{className:"mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]",children:[e.viewRedeemHistory&&r(d,{html:e.viewRedeemHistory,className:"cursor-pointer text-[#4794EC] font-bold underline",onClick:()=>I(!0)}),l.ruleLabel&&r(d,{html:l.ruleLabel,className:u("cursor-pointer text-[#4794EC] font-bold underline",e.viewRedeemHistory&&"l:ml-[16px]"),onClick:()=>h(e.rules)})]})]})]})]}),D&&n&&r(B,{copy:T,onClose:()=>{N(!1),o(void 0)},item:n,onError:O}),p&&r(U,{overlayClassName:"md:px-[16px] md:items-center",className:u("md:h-fit md:rounded-b-[16px]",!m&&"md:rounded-none"),isOpen:p.length>0,onClose:()=>h(void 0),titleClassName:"border-b-transparent h-[56px]",rules:p,scrollClassName:"md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0",title:l?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]}):null};export{ie as CreditsGoGift};
2
+ //# sourceMappingURL=CreditsGoGift.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsGoGift/CreditsGoGift.tsx"],
4
+ "sourcesContent": ["import { Container, Heading, Picture, Button, Text } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\nimport { classNames as cn } from '@anker-in/lib'\n\nimport RedeemVirtualProductModal from '../creditsRedeemList/RedeemVirtualProductModal'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport { useCreditsContext } from '../context/provider'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { CreditsGoGiftCopy } from './type'\nimport { AlpcConsumeType, AlpcErrorCode } from '../context/const'\nimport RulesModal from '../modal/RulesModal'\nimport { useRegistration } from '../../../components/registration'\n\nexport const CreditsGoGift = ({ copy, id }: { copy: CreditsGoGiftCopy; id?: string }) => {\n const [showModal, setShowModal] = useState(false)\n const [redeemError, setRedeemError] = useState<string>()\n const [rules, setRules] = useState<string | string[]>()\n const { redeemableList } = useRedeemableList({ consumeType: AlpcConsumeType.ExternalProduct })\n const { pageCommon, profile, creditInfo, setOpenMyRewardsModal, openSignUpPopup } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = Object.keys(profile || {}).length > 0\n\n const redeemModalCopy = pageCommon?.redeemModal || ({} as any)\n\n console.log('redeemableList', redeemableList)\n\n const item = useMemo(() => {\n // \u6839\u636E redeemId \u67E5\u8BE2 ExternalProduct \u7684 ALPC \u6570\u636E\n const alpcData = redeemableList.find(item => item.id?.toString() === copy?.redeemId?.toString())\n if (!alpcData) return null\n\n return {\n alpc: {\n id: alpcData.id.toString(),\n consumeCredits: alpcData.consume_credits,\n remainingInventory: alpcData.remaining_inventory,\n isLimited: !!alpcData.is_limited,\n consumeType: alpcData.consume_type,\n showCredit: true,\n title: alpcData.name,\n },\n config: {\n title: copy.cardTitle,\n desc: copy.cardDesc,\n type: copy.type,\n value: copy.value || '',\n rules: copy.rules,\n image: copy.cardImg,\n },\n }\n }, [redeemableList, copy])\n\n const handleRedeemError = (code: AlpcErrorCode) => {\n const redeemModalCopy = pageCommon?.redeemModal\n if (code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {\n setRedeemError(redeemModalCopy?.redeemLimitError)\n } else if (code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n setRedeemError(redeemModalCopy?.inventoryNotEnough)\n } else if (code === AlpcErrorCode.CodeLpcNotEnoughCredits) {\n setRedeemError(redeemModalCopy?.creditsNotEnough)\n } else if (code === AlpcErrorCode.CodeCrossSiteError) {\n setRedeemError(redeemModalCopy?.crossSiteError)\n } else {\n setRedeemError(redeemModalCopy?.commonError)\n }\n }\n\n const inSufficientCredit = useMemo(() => {\n return (\n profile?.activated && Number(item?.alpc?.consumeCredits) > Number(creditInfo?.available_credit || 0)\n )\n }, [profile?.activated, item?.alpc?.consumeCredits, creditInfo?.available_credit])\n\n const soldOut = Number(item?.alpc.remainingInventory) <= 0\n\n const redeemButtonText = useMemo(() => {\n // \u7F3A\u8D27\u6587\u6848\n if (soldOut) {\n return pageCommon?.soldOut || 'Sold Out'\n } else if (!isLogin) {\n return copy.unlockRewards\n } else {\n return copy.redeemBtn\n }\n }, [isLogin, soldOut, copy, pageCommon])\n\n if (!item) return null\n\n return (\n <Container id={id}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n <div\n className={cn(\n 'mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]',\n 'l:flex-col l:gap-[12px] l:p-[12px]',\n 'min-l:flex-row min-l:gap-[64px]',\n !rounded && 'rounded-none',\n rounded && 'rounded-[12px]'\n )}\n >\n {/* Card Image */}\n <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\">\n {copy.cardImg?.url && (\n <Picture\n className={cn('size-full', rounded && 'rounded-[12px]')}\n source={copy.mCardImg?.url ? `${copy.cardImg.url},${copy.mCardImg.url} 1024` : copy.cardImg.url}\n />\n )}\n </div>\n\n {/* Content Section */}\n <div className=\"flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]\">\n {/* Text Content */}\n <div className=\"flex flex-col gap-[20px] l:w-full l:gap-[12px]\">\n <div className=\"flex flex-col gap-[4px]\">\n <Text\n html={copy.cardTitle}\n className=\"text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]\"\n />\n <Text\n html={copy.cardDesc}\n className=\"text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]\"\n />\n </div>\n <Text\n html={copy.cardTip}\n className=\"text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]\"\n />\n </div>\n\n {/* Button and Links */}\n <div className=\"flex shrink-0 flex-col items-end l:w-full l:items-start\">\n <Button\n variant=\"primary\"\n disabled={inSufficientCredit || soldOut}\n onClick={() => {\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.open()\n } else {\n setShowModal(true)\n }\n }}\n title={inSufficientCredit ? pageCommon.insufficientCredits : redeemButtonText}\n >\n {redeemButtonText}\n </Button>\n {redeemError && (\n <div className=\"mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]\">\n {redeemError}\n </div>\n )}\n {(copy.viewRedeemHistory || copy.rulesLink) && (\n <div className=\"mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]\">\n {copy.viewRedeemHistory && (\n <Text\n html={copy.viewRedeemHistory}\n className=\"cursor-pointer text-[#4794EC] font-bold underline\"\n onClick={() => setOpenMyRewardsModal(true)}\n />\n )}\n {pageCommon.ruleLabel && (\n <Text\n html={pageCommon.ruleLabel}\n className={cn(\n 'cursor-pointer text-[#4794EC] font-bold underline',\n copy.viewRedeemHistory && 'l:ml-[16px]'\n )}\n onClick={() => setRules(copy.rules)}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {showModal && item && (\n <RedeemVirtualProductModal\n copy={redeemModalCopy}\n onClose={() => {\n setShowModal(false)\n setRedeemError(undefined)\n }}\n item={item}\n onError={handleRedeemError}\n />\n )}\n\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules(undefined)}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "Container", "Heading", "Picture", "Button", "Text", "useMemo", "useState", "cn", "RedeemVirtualProductModal", "useRedeemableList", "useCreditsContext", "ROUNDED_BRANDS", "useHeadlessContext", "AlpcConsumeType", "AlpcErrorCode", "RulesModal", "useRegistration", "CreditsGoGift", "copy", "id", "showModal", "setShowModal", "redeemError", "setRedeemError", "rules", "setRules", "redeemableList", "pageCommon", "profile", "creditInfo", "setOpenMyRewardsModal", "openSignUpPopup", "authCodeActivate", "brand", "rounded", "isLogin", "redeemModalCopy", "item", "alpcData", "handleRedeemError", "code", "inSufficientCredit", "soldOut", "redeemButtonText"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { CreditsGoGift } from './CreditsGoGift';
2
+ export type { CreditsGoGiftCopy } from './type';
@@ -0,0 +1,2 @@
1
+ import{CreditsGoGift as e}from"./CreditsGoGift";export{e as CreditsGoGift};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsGoGift/index.ts"],
4
+ "sourcesContent": ["export { CreditsGoGift } from './CreditsGoGift'\nexport type { CreditsGoGiftCopy } from './type'\n"],
5
+ "mappings": "AAAA,OAAS,iBAAAA,MAAqB",
6
+ "names": ["CreditsGoGift"]
7
+ }
@@ -0,0 +1,22 @@
1
+ import { ConsumeType } from '../context/const';
2
+ export type CreditsGoGiftCopy = {
3
+ title: string;
4
+ cardImg: {
5
+ url: string;
6
+ };
7
+ mCardImg?: {
8
+ url: string;
9
+ };
10
+ count?: string;
11
+ cardTitle: string;
12
+ cardDesc: string;
13
+ cardTip: string;
14
+ redeemBtn: string;
15
+ unlockRewards: string;
16
+ viewRedeemHistory?: string;
17
+ rulesLink?: string;
18
+ redeemId: string | number;
19
+ type: ConsumeType;
20
+ value?: string;
21
+ rules: string[];
22
+ };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ import { CreditsGofitCopy } from './type';
2
+ export declare const CreditsGofit: ({ copy, id }: {
3
+ copy: CreditsGofitCopy;
4
+ id?: string;
5
+ }) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ import{jsx as r,jsxs as s}from"react/jsx-runtime";import{Container as H,Heading as T,Picture as A,Button as B,Text as d}from"@anker-in/headless-ui";import{useMemo as g,useState as C}from"react";import{classNames as u}from"@anker-in/lib";import F from"../creditsRedeemList/RedeemVirtualProductModal";import G from"../context/hooks/useRedeemableList";import{useCreditsContext as P}from"../context/provider";import{ROUNDED_BRANDS as j}from"../../../constants";import{useHeadlessContext as y}from"@anker-in/lib";import{AlpcErrorCode as c}from"../context/const";import z from"../modal/rulesModal";import{useRegistration as U}from"../../../components/registration";const le=({copy:e,id:S})=>{const[D,v]=C(!1),[N,o]=C(),[p,h]=C(),{redeemableList:b}=G(),{pageCommon:l,profile:a,creditInfo:w,setOpenMyRewardsModal:I,openSignUpPopup:M}=P(),{authCodeActivate:R}=U(),{brand:k}=y(),m=j.includes(k),x=Object.keys(a||{}).length>0,O=l?.redeemModal||{},n=g(()=>{const t=b.find(i=>i.id?.toString()===e?.redeemId?.toString());return t?{alpc:{id:t.id.toString(),consumeCredits:t.consume_credits,remainingInventory:t.remaining_inventory,isLimited:!!t.is_limited,consumeType:t.consume_type,showCredit:!0,title:t.name},config:{title:e.cardTitle,desc:e.cardDesc,type:e.type,value:e.value||"",rules:e.rules,image:e.cardImg}}:null},[b,e]),_=t=>{const i=l?.redeemModal;t===c.CodeLpcShopifyCouponRuleRedeemLimit?o(i?.redeemLimitError):t===c.CodeLpcRuleInventoryNotEnough?o(i?.inventoryNotEnough):t===c.CodeLpcNotEnoughCredits?o(i?.creditsNotEnough):t===c.CodeCrossSiteError?o(i?.crossSiteError):o(i?.commonError)},E=g(()=>a?.activated&&Number(n?.alpc?.consumeCredits)>Number(w?.available_credit||0),[a?.activated,n?.alpc?.consumeCredits,w?.available_credit]),f=Number(n?.alpc.remainingInventory)<=0,L=g(()=>f?l?.soldOut||"Sold Out":x?e.redeemBtn:e.unlockRewards,[x,f,e,l]);return console.log("copy",e),n?s(H,{id:S,children:[r(T,{as:"h2",size:"4",html:e.title}),s("div",{className:u("mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]","l:flex-col l:gap-[12px] l:p-[12px]","min-l:flex-row min-l:gap-[64px]",!m&&"rounded-none",m&&"rounded-[12px]"),children:[r("div",{className:"relative flex h-[200px] w-[304px] shrink-0 items-center justify-center overflow-hidden l:h-[120px] l:w-full",children:e.cardImg?.url&&r(A,{className:u("size-full",m&&"rounded-[12px]"),source:e.mCardImg?.url?`${e.cardImg.url},${e.mCardImg.url} 768`:e.cardImg.url})}),s("div",{className:"flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]",children:[s("div",{className:"flex flex-col gap-[20px] l:w-full l:gap-[12px]",children:[s("div",{className:"flex flex-col gap-[4px]",children:[r(d,{html:e.cardTitle,className:"text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]"}),r(d,{html:e.cardDesc,className:"text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]"})]}),r(d,{html:e.cardTip,className:"text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]"})]}),s("div",{className:"flex shrink-0 flex-col items-end l:w-full l:items-start",children:[r(B,{variant:"primary",disabled:E||f,onClick:()=>{x?!a?.activated&&!R.isActivateSuccess?R.open():v(!0):M()},title:E?l.insufficientCredits:L,children:L}),N&&r("div",{className:"mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]",children:N}),(e.viewRedeemHistory||e.rulesLink)&&s("div",{className:"mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]",children:[e.viewRedeemHistory&&r(d,{html:e.viewRedeemHistory,className:"cursor-pointer text-[#4794EC] underline",onClick:()=>I(!0)}),l.ruleLabel&&r(d,{html:l.ruleLabel,className:u("cursor-pointer text-[#4794EC] underline",e.viewRedeemHistory&&"l:ml-[16px]"),onClick:()=>h(e.rules)})]})]})]})]}),D&&n&&r(F,{copy:O,onClose:()=>{v(!1),o(void 0)},item:n,onError:_}),p&&r(z,{overlayClassName:"md:px-[16px] md:items-center",className:u("md:h-fit md:rounded-b-[16px]",!m&&"md:rounded-none"),isOpen:p.length>0,onClose:()=>h(void 0),titleClassName:"border-b-transparent h-[56px]",rules:p,scrollClassName:"md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0",title:l?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]}):null};export{le as CreditsGofit};
2
+ //# sourceMappingURL=CreditsGofit.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsGofit/CreditsGofit.tsx"],
4
+ "sourcesContent": ["import { Container, Heading, Picture, Button, Text } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\nimport { classNames as cn } from '@anker-in/lib'\n\nimport RedeemVirtualProductModal from '../creditsRedeemList/RedeemVirtualProductModal'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport { useCreditsContext } from '../context/provider'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { CreditsGofitCopy } from './type'\nimport { AlpcErrorCode } from '../context/const'\nimport RulesModal from '../modal/rulesModal'\nimport { useRegistration } from '../../../components/registration'\n\nexport const CreditsGofit = ({ copy, id }: { copy: CreditsGofitCopy; id?: string }) => {\n const [showModal, setShowModal] = useState(false)\n const [redeemError, setRedeemError] = useState<string>()\n const [rules, setRules] = useState<string | string[]>()\n const { redeemableList } = useRedeemableList()\n const { pageCommon, profile, creditInfo, setOpenMyRewardsModal, openSignUpPopup } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = Object.keys(profile || {}).length > 0\n\n const redeemModalCopy = pageCommon?.redeemModal || ({} as any)\n\n const item = useMemo(() => {\n // \u6839\u636E redeemId \u67E5\u8BE2 ExternalProduct \u7684 ALPC \u6570\u636E\n const alpcData = redeemableList.find(item => item.id?.toString() === copy?.redeemId?.toString())\n if (!alpcData) return null\n\n return {\n alpc: {\n id: alpcData.id.toString(),\n consumeCredits: alpcData.consume_credits,\n remainingInventory: alpcData.remaining_inventory,\n isLimited: !!alpcData.is_limited,\n consumeType: alpcData.consume_type,\n showCredit: true,\n title: alpcData.name,\n },\n config: {\n title: copy.cardTitle,\n desc: copy.cardDesc,\n type: copy.type,\n value: copy.value || '',\n rules: copy.rules,\n image: copy.cardImg,\n },\n }\n }, [redeemableList, copy])\n\n const handleRedeemError = (code: AlpcErrorCode) => {\n const redeemModalCopy = pageCommon?.redeemModal\n if (code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {\n setRedeemError(redeemModalCopy?.redeemLimitError)\n } else if (code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n setRedeemError(redeemModalCopy?.inventoryNotEnough)\n } else if (code === AlpcErrorCode.CodeLpcNotEnoughCredits) {\n setRedeemError(redeemModalCopy?.creditsNotEnough)\n } else if (code === AlpcErrorCode.CodeCrossSiteError) {\n setRedeemError(redeemModalCopy?.crossSiteError)\n } else {\n setRedeemError(redeemModalCopy?.commonError)\n }\n }\n\n const inSufficientCredit = useMemo(() => {\n return (\n profile?.activated && Number(item?.alpc?.consumeCredits) > Number(creditInfo?.available_credit || 0)\n )\n }, [profile?.activated, item?.alpc?.consumeCredits, creditInfo?.available_credit])\n\n const soldOut = Number(item?.alpc.remainingInventory) <= 0\n\n const redeemButtonText = useMemo(() => {\n // \u7F3A\u8D27\u6587\u6848\n if (soldOut) {\n return pageCommon?.soldOut || 'Sold Out'\n } else if (!isLogin) {\n return copy.unlockRewards\n } else {\n return copy.redeemBtn\n }\n }, [isLogin, soldOut, copy, pageCommon])\n\n console.log('copy', copy)\n\n if (!item) return null\n\n return (\n <Container id={id}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n <div\n className={cn(\n 'mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]',\n 'l:flex-col l:gap-[12px] l:p-[12px]',\n 'min-l:flex-row min-l:gap-[64px]',\n !rounded && 'rounded-none',\n rounded && 'rounded-[12px]'\n )}\n >\n {/* Card Image */}\n <div className=\"relative flex h-[200px] w-[304px] shrink-0 items-center justify-center overflow-hidden l:h-[120px] l:w-full\">\n {copy.cardImg?.url && (\n <Picture\n className={cn('size-full', rounded && 'rounded-[12px]')}\n source={copy.mCardImg?.url ? `${copy.cardImg.url},${copy.mCardImg.url} 768` : copy.cardImg.url}\n />\n )}\n </div>\n\n {/* Content Section */}\n <div className=\"flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]\">\n {/* Text Content */}\n <div className=\"flex flex-col gap-[20px] l:w-full l:gap-[12px]\">\n <div className=\"flex flex-col gap-[4px]\">\n <Text\n html={copy.cardTitle}\n className=\"text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]\"\n />\n <Text\n html={copy.cardDesc}\n className=\"text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]\"\n />\n </div>\n <Text\n html={copy.cardTip}\n className=\"text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]\"\n />\n </div>\n\n {/* Button and Links */}\n <div className=\"flex shrink-0 flex-col items-end l:w-full l:items-start\">\n <Button\n variant=\"primary\"\n disabled={inSufficientCredit || soldOut}\n onClick={() => {\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.open()\n } else {\n setShowModal(true)\n }\n }}\n title={inSufficientCredit ? pageCommon.insufficientCredits : redeemButtonText}\n >\n {redeemButtonText}\n </Button>\n {redeemError && (\n <div className=\"mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]\">\n {redeemError}\n </div>\n )}\n {(copy.viewRedeemHistory || copy.rulesLink) && (\n <div className=\"mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]\">\n {copy.viewRedeemHistory && (\n <Text\n html={copy.viewRedeemHistory}\n className=\"cursor-pointer text-[#4794EC] underline\"\n onClick={() => setOpenMyRewardsModal(true)}\n />\n )}\n {pageCommon.ruleLabel && (\n <Text\n html={pageCommon.ruleLabel}\n className={cn(\n 'cursor-pointer text-[#4794EC] underline',\n copy.viewRedeemHistory && 'l:ml-[16px]'\n )}\n onClick={() => setRules(copy.rules)}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {showModal && item && (\n <RedeemVirtualProductModal\n copy={redeemModalCopy}\n onClose={() => {\n setShowModal(false)\n setRedeemError(undefined)\n }}\n item={item}\n onError={handleRedeemError}\n />\n )}\n\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules(undefined)}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "Container", "Heading", "Picture", "Button", "Text", "useMemo", "useState", "cn", "RedeemVirtualProductModal", "useRedeemableList", "useCreditsContext", "ROUNDED_BRANDS", "useHeadlessContext", "AlpcErrorCode", "RulesModal", "useRegistration", "CreditsGofit", "copy", "id", "showModal", "setShowModal", "redeemError", "setRedeemError", "rules", "setRules", "redeemableList", "pageCommon", "profile", "creditInfo", "setOpenMyRewardsModal", "openSignUpPopup", "authCodeActivate", "brand", "rounded", "isLogin", "redeemModalCopy", "item", "alpcData", "handleRedeemError", "code", "inSufficientCredit", "soldOut", "redeemButtonText"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { CreditsGofit } from './CreditsGofit';
2
+ export type { CreditsGofitCopy } from './type';
@@ -0,0 +1,2 @@
1
+ import{CreditsGofit as e}from"./CreditsGofit";export{e as CreditsGofit};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsGofit/index.ts"],
4
+ "sourcesContent": ["export { CreditsGofit } from './CreditsGofit'\nexport type { CreditsGofitCopy } from './type'\n"],
5
+ "mappings": "AAAA,OAAS,gBAAAA,MAAoB",
6
+ "names": ["CreditsGofit"]
7
+ }
@@ -0,0 +1,22 @@
1
+ import { ConsumeType } from '../context/const';
2
+ export type CreditsGofitCopy = {
3
+ title: string;
4
+ cardImg: {
5
+ url: string;
6
+ };
7
+ mCardImg?: {
8
+ url: string;
9
+ };
10
+ count?: string;
11
+ cardTitle: string;
12
+ cardDesc: string;
13
+ cardTip: string;
14
+ redeemBtn: string;
15
+ unlockRewards: string;
16
+ viewRedeemHistory?: string;
17
+ rulesLink?: string;
18
+ redeemId: string | number;
19
+ type: ConsumeType;
20
+ value?: string;
21
+ rules: string[];
22
+ };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Button as w,Container as y,Text as x}from"@anker-in/headless-ui";import{useCallback as k,useState as p}from"react";import{useCreditsContext as h}from"../context/provider";import{numberFormat as v}from"../context/utils";import M from"../modal/activitiesModal";import D from"../modal/MyRewardsModal";import{gaNormalClick as z,classNames as t,useHeadlessContext as B}from"@anker-in/lib";import{ROUNDED_BRANDS as S}from"../../../constants";function U({copy:l,id:b}){const[u,m]=p(!1),[g,c]=p(!1),[d,o]=p(!1),{creditInfo:n,pageCommon:s}=h(),{brand:N}=B(),r=S.includes(N),C=k(a=>{if(z({position:"info_card",label:a.text}),a.type)switch(a.type){case"activities":m(!0);break;case"rewards":c(!0);break}},[]);return i(y,{asChild:!0,id:b,className:"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]",children:[i("div",{className:t("mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]","l:flex-col l:items-start","min-l:px-[48px]","min-xl:px-[100px]",!r&&"rounded-none"),style:{background:"linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)",backdropFilter:"blur(8px)"},children:[i("div",{className:t("grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center"),children:[i("div",{className:"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]",children:[e("div",{className:t("mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]"),children:l.balanceLabel}),i("div",{className:"flex items-baseline",children:[e("div",{className:t("mr-[8px] text-[36px] font-extrabold text-brand-color-1","min-md:text-[44px]","min-xl:text-[56px]"),children:n?v(n.available_credit):0}),e("div",{className:"text-[16px]",children:s?.pointUnit})]})]}),i("div",{className:"w-fit md:flex-1",children:[i("div",{className:t("mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]"),children:[e(x,{className:"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]",html:l.comingSoonLabel}),l.comingSoonTips&&i("div",{className:"group relative ml-[4px] flex cursor-pointer items-start",children:[e(x,{as:"div",html:s?.infoIcon,className:"size-[18px] cursor-pointer [&_svg]:size-full",onClick:()=>{d?o(!1):(o(!0),setTimeout(()=>{o(!1)},5e3))}}),e("div",{className:t("absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]",d?"block":"hidden"),children:i("div",{className:t("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow",!r&&"rounded-none"),children:[e(x,{size:"2",html:l.comingSoonTips,className:"desktop:text-[18px]"}),e("div",{className:t("absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]",!r&&"rounded-none")})]})})]})]}),i("div",{className:"flex items-baseline ",children:[e("div",{className:t("mr-[8px] text-[36px] font-extrabold","min-l:text-[44px]","min-xl:text-[56px]"),children:n?v(n.pending_credit):0}),e("div",{className:"text-[16px]",children:s?.pointUnit})]})]})]}),e("div",{className:t("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"),children:l.buttons?.map((a,f)=>e(w,{variant:f===0?"secondary":"primary",size:"lg",className:"min-w-[156px] laptop:min-w-[189px]",onClick:()=>{C(a)},children:a.text},f))}),s?.activitiesModal&&e(M,{isOpen:u,data:s?.activitiesModal,onClose:()=>{m(!1)}}),s?.rewardsModal&&e(D,{isOpen:g,data:s?.rewardsModal,onClose:()=>{c(!1)}})]}),d&&e("div",{role:"button",tabIndex:0,className:"fixed inset-0 z-10",onClick:()=>o(!1),onKeyDown:a=>a.key==="Escape"&&o(!1)})]})}export{U as CreditsInfoCard};
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Button as g,Container as N,Text as r}from"@anker-in/headless-ui";import{useCallback as C,useState as w}from"react";import{useCreditsContext as y}from"../context/provider";import{numberFormat as b}from"../context/utils";import{gaNormalClick as k,classNames as t,useHeadlessContext as h}from"@anker-in/lib";import{ROUNDED_BRANDS as D}from"../../../constants";function F({copy:l,id:f}){const[n,s]=w(!1),{creditInfo:o,pageCommon:d,setOpenMyRewardsModal:p,setOpenActivitiesModal:m}=y(),{brand:v}=h(),x=D.includes(v),u=C(a=>{if(k({position:"info_card",label:a.text}),a.type)switch(a.type){case"activities":m(!0);break;case"rewards":p(!0);break}},[m,p]);return i(N,{asChild:!0,id:f,className:"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]",children:[i("div",{className:t("mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]","l:flex-col l:items-start","min-l:px-[48px]","min-xl:px-[100px]",!x&&"rounded-none"),style:{background:"linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)",backdropFilter:"blur(8px)"},children:[i("div",{className:t("grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center"),children:[i("div",{className:"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]",children:[e("div",{className:t("mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]"),children:l.balanceLabel}),i("div",{className:"flex items-baseline",children:[e("div",{className:t("mr-[8px] text-[36px] font-extrabold text-brand-color-1","min-md:text-[44px]","min-xl:text-[56px]"),children:o?b(o.available_credit):0}),e("div",{className:"text-[16px]",children:d?.pointUnit})]})]}),i("div",{className:"w-fit md:flex-1",children:[i("div",{className:t("mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]"),children:[e(r,{className:"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]",html:l.comingSoonLabel}),l.comingSoonTips&&i("div",{className:"group relative ml-[4px] flex cursor-pointer items-start",children:[e(r,{as:"div",html:d?.infoIcon,className:"size-[18px] cursor-pointer [&_svg]:size-full",onClick:()=>{n?s(!1):(s(!0),setTimeout(()=>{s(!1)},5e3))}}),e("div",{className:t("absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]",n?"block":"hidden"),children:i("div",{className:t("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow",!x&&"rounded-none"),children:[e(r,{size:"2",html:l.comingSoonTips,className:"desktop:text-[18px]"}),e("div",{className:t("absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]",!x&&"rounded-none")})]})})]})]}),i("div",{className:"flex items-baseline ",children:[e("div",{className:t("mr-[8px] text-[36px] font-extrabold","min-l:text-[44px]","min-xl:text-[56px]"),children:o?b(o.pending_credit):0}),e("div",{className:"text-[16px]",children:d?.pointUnit})]})]})]}),e("div",{className:t("grid w-fit md:w-full l:mt-[32px] l:gap-[12px] gap-[16px] l:pl-0 pl-[48px] md-l:grid-cols-2"),children:l.buttons?.map((a,c)=>e(g,{variant:c===0?"secondary":"primary",size:"lg",className:"min-w-[156px] laptop:min-w-[189px]",onClick:()=>{u(a)},children:a.text},c))})]}),n&&e("div",{role:"button",tabIndex:0,className:"fixed inset-0 z-10",onClick:()=>s(!1),onKeyDown:a=>a.key==="Escape"&&s(!1)})]})}export{F as CreditsInfoCard};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsInfoCard/index.tsx"],
4
- "sourcesContent": ["import { Button, Container, Text } from '@anker-in/headless-ui'\n\nimport { useCallback, useState } from 'react'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\nimport ActivitiesModal from '../modal/activitiesModal'\nimport MyRewardsModal from '../modal/MyRewardsModal'\nimport { gaNormalClick, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\ntype ButtonConfig = {\n text: string\n type: 'activities' | 'rewards'\n}\nexport type CreditsInfoCardCopy = {\n balanceLabel: string\n comingSoonLabel: string\n comingSoonTips: string\n buttons: ButtonConfig[]\n}\n\nexport function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?: string }) {\n const [openActivities, setOpenActivities] = useState(false)\n const [openRewards, setOpenRewards] = useState(false)\n const [hover, setHover] = useState<boolean>(false)\n const { creditInfo, pageCommon } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const handleButtonClick = useCallback((buttonConfig: ButtonConfig) => {\n gaNormalClick({ position: 'info_card', label: buttonConfig.text })\n\n if (buttonConfig.type) {\n switch (buttonConfig.type) {\n case 'activities':\n setOpenActivities(true)\n break\n case 'rewards':\n setOpenRewards(true)\n break\n }\n }\n }, [])\n\n return (\n <Container asChild id={id} className=\"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]\">\n <div\n className={cn(\n 'mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]',\n 'l:flex-col l:items-start',\n 'min-l:px-[48px]',\n 'min-xl:px-[100px]',\n !rounded && 'rounded-none'\n )}\n style={{\n background:\n 'linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)',\n backdropFilter: 'blur(8px)',\n }}\n >\n <div\n className={cn(\n 'grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center'\n )}\n >\n <div className=\"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]\">\n <div\n className={cn(\n 'mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]'\n )}\n >\n {copy.balanceLabel}\n </div>\n <div className=\"flex items-baseline\">\n <div\n className={cn(\n 'mr-[8px] text-[36px] font-extrabold text-brand-color-1',\n 'min-md:text-[44px]',\n 'min-xl:text-[56px]'\n )}\n >\n {creditInfo ? numberFormat(creditInfo.available_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n <div className=\"w-fit md:flex-1\">\n <div className={cn('mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]')}>\n <Text className=\"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]\" html={copy.comingSoonLabel} />\n {copy.comingSoonTips && (\n <div className=\"group relative ml-[4px] flex cursor-pointer items-start\">\n <Text\n as=\"div\"\n html={pageCommon?.infoIcon}\n className=\"size-[18px] cursor-pointer [&_svg]:size-full\"\n onClick={() => {\n if (hover) {\n setHover(false)\n } else {\n setHover(true)\n setTimeout(() => {\n setHover(false)\n }, 5000)\n }\n }}\n />\n <div\n className={cn(\n 'absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]',\n hover ? 'block' : 'hidden'\n )}\n >\n <div\n className={cn(\n 'relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow',\n !rounded && 'rounded-none'\n )}\n >\n <Text size=\"2\" html={copy.comingSoonTips} className=\"desktop:text-[18px]\" />\n <div\n className={cn(\n 'absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]',\n !rounded && 'rounded-none'\n )}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n <div className=\"flex items-baseline \">\n <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-l:text-[44px]', 'min-xl:text-[56px]')}>\n {creditInfo ? numberFormat(creditInfo.pending_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n </div>\n <div\n className={cn(\n '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'\n )}\n >\n {copy.buttons?.map((item, index) => (\n <Button\n key={index}\n variant={index === 0 ? 'secondary' : 'primary'}\n size=\"lg\"\n className=\"min-w-[156px] laptop:min-w-[189px]\"\n onClick={() => {\n handleButtonClick(item)\n }}\n >\n {item.text}\n </Button>\n ))}\n </div>\n\n {pageCommon?.activitiesModal && (\n <ActivitiesModal\n isOpen={openActivities}\n data={pageCommon?.activitiesModal}\n onClose={() => {\n setOpenActivities(false)\n }}\n />\n )}\n {pageCommon?.rewardsModal && (\n <MyRewardsModal\n isOpen={openRewards}\n data={pageCommon?.rewardsModal}\n onClose={() => {\n setOpenRewards(false)\n }}\n ></MyRewardsModal>\n )}\n </div>\n {hover && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"fixed inset-0 z-10\"\n onClick={() => setHover(false)}\n onKeyDown={e => e.key === 'Escape' && setHover(false)}\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "Button", "Container", "Text", "useCallback", "useState", "useCreditsContext", "numberFormat", "ActivitiesModal", "MyRewardsModal", "gaNormalClick", "cn", "useHeadlessContext", "ROUNDED_BRANDS", "CreditsInfoCard", "copy", "id", "openActivities", "setOpenActivities", "openRewards", "setOpenRewards", "hover", "setHover", "creditInfo", "pageCommon", "brand", "rounded", "handleButtonClick", "buttonConfig", "item", "index", "e"]
4
+ "sourcesContent": ["import { Button, Container, Text } from '@anker-in/headless-ui'\n\nimport { useCallback, useState } from 'react'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\nimport { gaNormalClick, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\ntype ButtonConfig = {\n text: string\n type: 'activities' | 'rewards'\n}\nexport type CreditsInfoCardCopy = {\n balanceLabel: string\n comingSoonLabel: string\n comingSoonTips: string\n buttons: ButtonConfig[]\n}\n\nexport function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?: string }) {\n const [hover, setHover] = useState<boolean>(false)\n const { creditInfo, pageCommon, setOpenMyRewardsModal, setOpenActivitiesModal } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const handleButtonClick = useCallback((buttonConfig: ButtonConfig) => {\n gaNormalClick({ position: 'info_card', label: buttonConfig.text })\n\n if (buttonConfig.type) {\n switch (buttonConfig.type) {\n case 'activities':\n setOpenActivitiesModal(true)\n break\n case 'rewards':\n setOpenMyRewardsModal(true)\n break\n }\n }\n }, [setOpenActivitiesModal, setOpenMyRewardsModal])\n\n return (\n <Container asChild id={id} className=\"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]\">\n <div\n className={cn(\n 'mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]',\n 'l:flex-col l:items-start',\n 'min-l:px-[48px]',\n 'min-xl:px-[100px]',\n !rounded && 'rounded-none'\n )}\n style={{\n background:\n 'linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)',\n backdropFilter: 'blur(8px)',\n }}\n >\n <div\n className={cn(\n 'grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center'\n )}\n >\n <div className=\"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]\">\n <div\n className={cn(\n 'mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]'\n )}\n >\n {copy.balanceLabel}\n </div>\n <div className=\"flex items-baseline\">\n <div\n className={cn(\n 'mr-[8px] text-[36px] font-extrabold text-brand-color-1',\n 'min-md:text-[44px]',\n 'min-xl:text-[56px]'\n )}\n >\n {creditInfo ? numberFormat(creditInfo.available_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n <div className=\"w-fit md:flex-1\">\n <div className={cn('mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]')}>\n <Text className=\"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]\" html={copy.comingSoonLabel} />\n {copy.comingSoonTips && (\n <div className=\"group relative ml-[4px] flex cursor-pointer items-start\">\n <Text\n as=\"div\"\n html={pageCommon?.infoIcon}\n className=\"size-[18px] cursor-pointer [&_svg]:size-full\"\n onClick={() => {\n if (hover) {\n setHover(false)\n } else {\n setHover(true)\n setTimeout(() => {\n setHover(false)\n }, 5000)\n }\n }}\n />\n <div\n className={cn(\n 'absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]',\n hover ? 'block' : 'hidden'\n )}\n >\n <div\n className={cn(\n 'relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow',\n !rounded && 'rounded-none'\n )}\n >\n <Text size=\"2\" html={copy.comingSoonTips} className=\"desktop:text-[18px]\" />\n <div\n className={cn(\n 'absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]',\n !rounded && 'rounded-none'\n )}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n <div className=\"flex items-baseline \">\n <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-l:text-[44px]', 'min-xl:text-[56px]')}>\n {creditInfo ? numberFormat(creditInfo.pending_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n </div>\n <div\n className={cn(\n 'grid w-fit md:w-full l:mt-[32px] l:gap-[12px] gap-[16px] l:pl-0 pl-[48px] md-l:grid-cols-2'\n )}\n >\n {copy.buttons?.map((item, index) => (\n <Button\n key={index}\n variant={index === 0 ? 'secondary' : 'primary'}\n size=\"lg\"\n className=\"min-w-[156px] laptop:min-w-[189px]\"\n onClick={() => {\n handleButtonClick(item)\n }}\n >\n {item.text}\n </Button>\n ))}\n </div>\n </div>\n {hover && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"fixed inset-0 z-10\"\n onClick={() => setHover(false)}\n onKeyDown={e => e.key === 'Escape' && setHover(false)}\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "Button", "Container", "Text", "useCallback", "useState", "useCreditsContext", "numberFormat", "gaNormalClick", "cn", "useHeadlessContext", "ROUNDED_BRANDS", "CreditsInfoCard", "copy", "id", "hover", "setHover", "creditInfo", "pageCommon", "setOpenMyRewardsModal", "setOpenActivitiesModal", "brand", "rounded", "handleButtonClick", "buttonConfig", "item", "index", "e"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as U,jsx as o,jsxs as P}from"react/jsx-runtime";import{Container as Z,Heading as $,Tabs as j,TabsList as ee,TabsTrigger as te}from"@anker-in/headless-ui";import{useMemo as u,useState as p,useEffect as B,useCallback as f,useRef as re}from"react";import D from"decimal.js";import ne from"./MemberPriceItem";import ae from"../creditsCash/RedeemableItem";import se from"../context/hooks/useRedeemableList";import ie from"../modal/rulesModal";import{Pagination as z}from"./Pagination";import{useProductsByHandles as G,useHeadlessContext as oe,gaTrack as le}from"@anker-in/lib";import{classNames as O}from"@anker-in/lib";import{useCreditsContext as me}from"../context/provider";import{FunctionDiscountType as w}from"../context/memberPriceConst";import{ROUNDED_BRANDS as ce}from"../../../constants";const Me=({copy:s,id:W})=>{const[b,q]=p(s.tabs[0]?.type||"memberPrice"),[v,k]=p(),[m,_]=p(1),[l,g]=p(9),{redeemableList:R}=se(),{pageCommon:J,memberPriceDiscount:h,profile:M,gtm:N}=me(),{brand:K}=oe(),Q=ce.includes(K),C=re(null),L=[{namespace:"global",key:"transparentImg"},{namespace:"__discountCodeApp",key:"data"}];B(()=>{const t=()=>{const r=window.innerWidth;r>=1440?g(12):r>=1024?g(9):r>=768?g(12):g(8)};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),B(()=>{_(1)},[b,l]);const c=u(()=>!h||!s.memberPriceTab.memberPriceRuleId?null:h.find(t=>String(t.rule_id)===String(s.memberPriceTab.memberPriceRuleId)),[h,s.memberPriceTab.memberPriceRuleId]),X=u(()=>c?(c.result_detail?.member_discounts?.filter(e=>e.user_identity===1)||[]).flatMap(e=>e.main_products?.variants?.map(a=>a.handle)||[]):[],[c]),{data:T}=G({handles:X,metafieldIdentifiers:{variant:L}}),{data:x}=G({handles:s?.redeemTab?.list?.map(t=>t.products?.[0]?.handle)||[],metafieldIdentifiers:{variant:L}}),F=f(t=>{try{const r=t?.metafields?.__discountCodeApp?.data;if(!r)return 0;const e=r;if(!Array.isArray(e)||e.length===0)return 0;const a=new Date,n=e.find(i=>{const d=i.starts_at?new Date(i.starts_at):null,V=i.ends_at?new Date(i.ends_at):null;return!(d&&d>a||V&&V<a)});return n?.fixed_value?parseFloat(n.fixed_value):0}catch(r){return console.error("Failed to get coupon discount:",r),0}},[]),A=f((t,r,e)=>{const a=r?.discount_conf;if(!a)return null;let n=new D(t);switch(a.discount_type){case w.Percentage:n=n.mul(100-a.discount_value).div(100);break;case w.FixedAmount:n=n.sub(a.discount_value);break;case w.FixedPrice:n=new D(a.discount_value);break}if(e){const i=F(e);i>0&&(n=n.sub(i))}return n.lessThan(0)&&(n=new D(0)),{memberPrice:n.toNumber(),originalPrice:t}},[F]),y=u(()=>!c||!T?[]:(c.result_detail?.member_discounts?.filter(e=>e.user_identity===1)||[]).flatMap(e=>(e.main_products?.variants||[]).map(a=>({...a,discount:e}))).map(e=>{const a=T.find(d=>d.handle===e.handle);if(!a)return null;const n=a.variants?.find(d=>d.sku===e.sku)||a.variants?.[0];if(!n||!n.availableForSale)return null;const i=A(n.price.amount,e.discount,n);return i?{product:a,productVariant:n,memberPrice:i.memberPrice,originalPrice:i.originalPrice}:null})?.filter(Boolean)||[],[c,T,A]),I=u(()=>x?.map(t=>{const r=s.redeemTab.list.find(n=>n.products?.[0]?.handle===t.handle),e=R.find(n=>n.id?.toString()===r?.redeemId?.toString()),a=t.variants?.find(n=>n.sku===r?.products?.[0]?.sku)||t.variants?.[0];return!e||!a||!a.availableForSale||e.is_limited&&e.remaining_inventory<=0?null:{product:t,productVariant:a,alpcData:{id:e?.id,consumeCredits:e?.consume_credits,remainingInventory:e?.remaining_inventory,isLimited:e?.is_limited,consumeType:e?.consume_type,title:e?.name,desc:e?.note},config:r}}).filter(Boolean),[x,s.redeemTab.list,R]),S=u(()=>{const t=y?.length||0,r=Math.ceil(t/l),e=(m-1)*l,a=e+l,n=y?.slice(e,a)||[];return{totalPages:r,currentItems:n,showPagination:r>1}},[y,m,l]),E=u(()=>{const t=I?.length||0,r=Math.ceil(t/l),e=(m-1)*l,a=e+l,n=I?.slice(e,a)||[];return{totalPages:r,currentItems:n,showPagination:r>1}},[I,m,l]),H=f(t=>{if(_(t),C.current){const r=C.current.offsetTop;window.scrollTo({top:r-80,behavior:"smooth"})}},[_]),Y=f(t=>{const r=t;q(r);const a=s.tabs.find(n=>n.type===r)?.label||"";le({event:"ga4Event",event_name:"lp_button",member_active_status:M?.activated?"active":"not active",event_parameters:{page_group:N.pageGroup,position:s.title,button_name:a}})},[s.tabs,s.title,M?.activated,N.pageGroup]);return P(Z,{id:W,className:O("bg-[#F5F5F5]"),ref:C,children:[o($,{as:"h2",size:"4",html:s.title,className:"mx:px-[16px]"}),o(j,{align:"left",className:"mt-[24px]",value:b,onValueChange:Y,children:o(ee,{children:s.tabs.map((t,r)=>o(te,{value:t.type,children:t.label},r))})}),P("div",{className:"relative mt-[24px]",children:[b==="memberPrice"&&P(U,{children:[o("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:S.currentItems?.map((t,r)=>o(ne,{itemData:t,copy:s.memberPriceTab},r))}),o(z,{currentPage:m,totalPages:S.totalPages,onPageChange:H})]}),b==="redeem"&&P(U,{children:[o("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:E.currentItems?.map((t,r)=>o(ae,{copy:{title:s.title,...s.redeemTab},itemData:t,setRules:k,currencyCode:x?.[0]?.price.currencyCode||"USD"},r))}),o(z,{currentPage:m,totalPages:E.totalPages,onPageChange:H})]})]}),v&&o(ie,{overlayClassName:"md:px-[16px] md:items-center",className:O("md:h-fit md:rounded-b-[16px]",!Q&&"md:rounded-none"),isOpen:v.length>0,onClose:()=>k([]),titleClassName:"border-b-transparent h-[56px]",rules:v,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:J?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{Me as CreditsMemberPrice};
1
+ import{Fragment as U,jsx as o,jsxs as P}from"react/jsx-runtime";import{Container as Z,Heading as $,Tabs as j,TabsList as ee,TabsTrigger as te}from"@anker-in/headless-ui";import{useMemo as u,useState as p,useEffect as B,useCallback as f,useRef as re}from"react";import D from"decimal.js";import ne from"./MemberPriceItem";import ae from"../creditsCash/RedeemableItem";import se from"../context/hooks/useRedeemableList";import ie from"../modal/RulesModal";import{Pagination as z}from"./Pagination";import{useProductsByHandles as G,useHeadlessContext as oe,gaTrack as le}from"@anker-in/lib";import{classNames as O}from"@anker-in/lib";import{useCreditsContext as me}from"../context/provider";import{FunctionDiscountType as w}from"../context/memberPriceConst";import{ROUNDED_BRANDS as ce}from"../../../constants";const Me=({copy:s,id:W})=>{const[b,q]=p(s.tabs[0]?.type||"memberPrice"),[v,k]=p(),[m,_]=p(1),[l,g]=p(9),{redeemableList:R}=se(),{pageCommon:J,memberPriceDiscount:h,profile:M,gtm:N}=me(),{brand:K}=oe(),Q=ce.includes(K),C=re(null),L=[{namespace:"global",key:"transparentImg"},{namespace:"__discountCodeApp",key:"data"}];B(()=>{const t=()=>{const r=window.innerWidth;r>=1440?g(12):r>=1024?g(9):r>=768?g(12):g(8)};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),B(()=>{_(1)},[b,l]);const c=u(()=>!h||!s.memberPriceTab.memberPriceRuleId?null:h.find(t=>String(t.rule_id)===String(s.memberPriceTab.memberPriceRuleId)),[h,s.memberPriceTab.memberPriceRuleId]),X=u(()=>c?(c.result_detail?.member_discounts?.filter(e=>e.user_identity===1)||[]).flatMap(e=>e.main_products?.variants?.map(a=>a.handle)||[]):[],[c]),{data:T}=G({handles:X,metafieldIdentifiers:{variant:L}}),{data:x}=G({handles:s?.redeemTab?.list?.map(t=>t.products?.[0]?.handle)||[],metafieldIdentifiers:{variant:L}}),F=f(t=>{try{const r=t?.metafields?.__discountCodeApp?.data;if(!r)return 0;const e=r;if(!Array.isArray(e)||e.length===0)return 0;const a=new Date,n=e.find(i=>{const d=i.starts_at?new Date(i.starts_at):null,V=i.ends_at?new Date(i.ends_at):null;return!(d&&d>a||V&&V<a)});return n?.fixed_value?parseFloat(n.fixed_value):0}catch(r){return console.error("Failed to get coupon discount:",r),0}},[]),A=f((t,r,e)=>{const a=r?.discount_conf;if(!a)return null;let n=new D(t);switch(a.discount_type){case w.Percentage:n=n.mul(100-a.discount_value).div(100);break;case w.FixedAmount:n=n.sub(a.discount_value);break;case w.FixedPrice:n=new D(a.discount_value);break}if(e){const i=F(e);i>0&&(n=n.sub(i))}return n.lessThan(0)&&(n=new D(0)),{memberPrice:n.toNumber(),originalPrice:t}},[F]),y=u(()=>!c||!T?[]:(c.result_detail?.member_discounts?.filter(e=>e.user_identity===1)||[]).flatMap(e=>(e.main_products?.variants||[]).map(a=>({...a,discount:e}))).map(e=>{const a=T.find(d=>d.handle===e.handle);if(!a)return null;const n=a.variants?.find(d=>d.sku===e.sku)||a.variants?.[0];if(!n||!n.availableForSale)return null;const i=A(n.price.amount,e.discount,n);return i?{product:a,productVariant:n,memberPrice:i.memberPrice,originalPrice:i.originalPrice}:null})?.filter(Boolean)||[],[c,T,A]),I=u(()=>x?.map(t=>{const r=s.redeemTab.list.find(n=>n.products?.[0]?.handle===t.handle),e=R.find(n=>n.id?.toString()===r?.redeemId?.toString()),a=t.variants?.find(n=>n.sku===r?.products?.[0]?.sku)||t.variants?.[0];return!e||!a||!a.availableForSale||e.is_limited&&e.remaining_inventory<=0?null:{product:t,productVariant:a,alpcData:{id:e?.id,consumeCredits:e?.consume_credits,remainingInventory:e?.remaining_inventory,isLimited:e?.is_limited,consumeType:e?.consume_type,title:e?.name,desc:e?.note},config:r}}).filter(Boolean),[x,s.redeemTab.list,R]),S=u(()=>{const t=y?.length||0,r=Math.ceil(t/l),e=(m-1)*l,a=e+l,n=y?.slice(e,a)||[];return{totalPages:r,currentItems:n,showPagination:r>1}},[y,m,l]),E=u(()=>{const t=I?.length||0,r=Math.ceil(t/l),e=(m-1)*l,a=e+l,n=I?.slice(e,a)||[];return{totalPages:r,currentItems:n,showPagination:r>1}},[I,m,l]),H=f(t=>{if(_(t),C.current){const r=C.current.offsetTop;window.scrollTo({top:r-80,behavior:"smooth"})}},[_]),Y=f(t=>{const r=t;q(r);const a=s.tabs.find(n=>n.type===r)?.label||"";le({event:"ga4Event",event_name:"lp_button",member_active_status:M?.activated?"active":"not active",event_parameters:{page_group:N.pageGroup,position:s.title,button_name:a}})},[s.tabs,s.title,M?.activated,N.pageGroup]);return P(Z,{id:W,className:O("bg-[#F5F5F5]"),ref:C,children:[o($,{as:"h2",size:"4",html:s.title,className:"mx:px-[16px]"}),o(j,{align:"left",className:"mt-[24px]",value:b,onValueChange:Y,children:o(ee,{children:s.tabs.map((t,r)=>o(te,{value:t.type,children:t.label},r))})}),P("div",{className:"relative mt-[24px]",children:[b==="memberPrice"&&P(U,{children:[o("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:S.currentItems?.map((t,r)=>o(ne,{itemData:t,copy:s.memberPriceTab},r))}),o(z,{currentPage:m,totalPages:S.totalPages,onPageChange:H})]}),b==="redeem"&&P(U,{children:[o("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:E.currentItems?.map((t,r)=>o(ae,{copy:{title:s.title,...s.redeemTab},itemData:t,setRules:k,currencyCode:x?.[0]?.price.currencyCode||"USD"},r))}),o(z,{currentPage:m,totalPages:E.totalPages,onPageChange:H})]})]}),v&&o(ie,{overlayClassName:"md:px-[16px] md:items-center",className:O("md:h-fit md:rounded-b-[16px]",!Q&&"md:rounded-none"),isOpen:v.length>0,onClose:()=>k([]),titleClassName:"border-b-transparent h-[56px]",rules:v,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:J?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{Me as CreditsMemberPrice};
2
2
  //# sourceMappingURL=CreditsMemberPrice.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx"],
4
- "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport { useMemo, useState, useEffect, useCallback, useRef } from 'react'\nimport Decimal from 'decimal.js'\n\nimport MemberPriceItem from './MemberPriceItem'\nimport RedeemableItem from '../creditsCash/RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/rulesModal'\nimport { Pagination } from './Pagination'\nimport { useProductsByHandles, useHeadlessContext, gaTrack } from '@anker-in/lib'\nimport { CreditsMemberPriceCopy, MemberPriceProduct } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { RedeemItem } from '../creditsCash/type'\nimport { FunctionDiscountType } from '../context/memberPriceConst'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport const CreditsMemberPrice = ({ copy, id }: { copy: CreditsMemberPriceCopy; id?: string }) => {\n const [activeTab, setActiveTab] = useState<'memberPrice' | 'redeem'>(copy.tabs[0]?.type || 'memberPrice')\n const [rules, setRules] = useState<string | string[]>()\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState(9) // \u9ED8\u8BA4 1024px \u4EE5\u4E0A\uFF1A3\u5217 \u00D7 3\u884C = 9\n const { redeemableList } = useRedeemableList()\n const { pageCommon, memberPriceDiscount, profile, gtm } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const containerRef = useRef<HTMLDivElement>(null)\n\n // \u5B9A\u4E49\u9700\u8981\u83B7\u53D6\u7684 metafield\uFF0C\u5305\u62EC\u900F\u660E\u56FE\u548C\u4F18\u60E0\u5238\u4FE1\u606F\n const variantMetafieldIdentifiers: any[] = [\n {\n namespace: 'global',\n key: 'transparentImg',\n },\n {\n namespace: '__discountCodeApp',\n key: 'data',\n },\n ]\n\n // \u6839\u636E\u5C4F\u5E55\u5C3A\u5BF8\u52A8\u6001\u8C03\u6574\u6BCF\u9875\u663E\u793A\u7684\u5546\u54C1\u6570\u91CF\n useEffect(() => {\n const updateItemsPerPage = () => {\n const width = window.innerWidth\n if (width >= 1440) {\n // 1920px \u4EE5\u4E0A\uFF1A4\u5217 \u00D7 3\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else if (width >= 1024) {\n // 1024px - 1919px\uFF1A3\u5217 \u00D7 3\u884C = 9\u4E2A\n setItemsPerPage(9)\n } else if (width >= 768) {\n // 1024px \u4EE5\u4E0B\uFF1A3\u5217 \u00D7 4\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else {\n // 768px \u4EE5\u4E0B\uFF1A2\u5217 \u00D7 4\u884C = 8\u4E2A\n setItemsPerPage(8)\n }\n }\n\n updateItemsPerPage()\n window.addEventListener('resize', updateItemsPerPage)\n return () => window.removeEventListener('resize', updateItemsPerPage)\n }, [])\n\n // \u5F53\u5207\u6362 tab \u6216\u6BCF\u9875\u6570\u91CF\u53D8\u5316\u65F6\u91CD\u7F6E\u9875\u7801\n useEffect(() => {\n setCurrentPage(1)\n }, [activeTab, itemsPerPage])\n\n // \u6839\u636E\u914D\u7F6E\u7684 ruleId \u67E5\u627E\u5BF9\u5E94\u7684\u4F1A\u5458\u4EF7\u89C4\u5219\n const targetRule = useMemo(() => {\n if (!memberPriceDiscount || !copy.memberPriceTab.memberPriceRuleId) return null\n return memberPriceDiscount.find(rule => String(rule.rule_id) === String(copy.memberPriceTab.memberPriceRuleId))\n }, [memberPriceDiscount, copy.memberPriceTab.memberPriceRuleId])\n\n const memberPriceHandles = useMemo(() => {\n if (!targetRule) return []\n\n // \u83B7\u53D6\u6240\u6709 user_identity === 1 \u7684 discounts\n const allDiscounts = targetRule.result_detail?.member_discounts?.filter(\n (discount: any) => discount.user_identity === 1\n ) || []\n\n // \u5408\u5E76\u6240\u6709 discounts \u7684 variants \u7684 handles\n const handles = allDiscounts.flatMap((discount: any) =>\n discount.main_products?.variants?.map((variant: any) => variant.handle) || []\n )\n\n return handles\n }, [targetRule])\n\n // \u83B7\u53D6\u4F1A\u5458\u4EF7\u4EA7\u54C1\u6570\u636E\uFF08\u901A\u8FC7\u4ECE memberPriceDiscount \u63D0\u53D6\u7684 handles \u83B7\u53D6\u4EA7\u54C1\uFF09\n const { data: memberPriceProducts } = useProductsByHandles({\n handles: memberPriceHandles,\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u83B7\u53D6\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u6570\u636E\n const { data: redeemProducts } = useProductsByHandles({\n handles: copy?.redeemTab?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u4ECE variant metafields \u4E2D\u83B7\u53D6\u6709\u6548\u7684 coupon \u6298\u6263\u91D1\u989D\n const getCouponDiscount = useCallback((variant: any) => {\n try {\n const discountData = variant?.metafields?.__discountCodeApp?.data\n if (!discountData) return 0\n\n // discountData \u5DF2\u7ECF\u662F\u5BF9\u8C61\uFF0C\u4E0D\u9700\u8981 JSON.parse\n const discounts = discountData\n if (!Array.isArray(discounts) || discounts.length === 0) return 0\n\n // \u83B7\u53D6\u7B2C\u4E00\u4E2A\u6709\u6548\u7684 coupon\uFF08\u68C0\u67E5\u65F6\u95F4\u8303\u56F4\uFF09\n const now = new Date()\n const validDiscount = discounts.find((discount: any) => {\n const startsAt = discount.starts_at ? new Date(discount.starts_at) : null\n const endsAt = discount.ends_at ? new Date(discount.ends_at) : null\n\n // \u68C0\u67E5 coupon \u662F\u5426\u5728\u6709\u6548\u671F\u5185\n if (startsAt && startsAt > now) return false\n if (endsAt && endsAt < now) return false\n\n return true\n })\n\n // \u8FD4\u56DE\u6298\u6263\u91D1\u989D\uFF08fixed_amount \u7C7B\u578B\uFF09\n if (validDiscount?.fixed_value) {\n return parseFloat(validDiscount.fixed_value)\n }\n\n return 0\n } catch (error) {\n console.error('Failed to get coupon discount:', error)\n return 0\n }\n }, [])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u7684\u8F85\u52A9\u51FD\u6570\uFF08\u4EC5\u4F7F\u7528\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF0C\u5E76\u53E0\u52A0 coupon \u6298\u6263\uFF09\n const calculateMemberPrice = useCallback(\n (price: number, discount: any, variant?: any) => {\n const discountConfig = discount?.discount_conf\n if (!discountConfig) return null\n\n // \u6839\u636E\u6298\u6263\u7C7B\u578B\u8BA1\u7B97\u4F1A\u5458\u4EF7\n let salePrice = new Decimal(price)\n switch (discountConfig.discount_type) {\n case FunctionDiscountType.Percentage:\n salePrice = salePrice.mul(100 - discountConfig.discount_value).div(100)\n break\n case FunctionDiscountType.FixedAmount:\n salePrice = salePrice.sub(discountConfig.discount_value)\n break\n case FunctionDiscountType.FixedPrice:\n salePrice = new Decimal(discountConfig.discount_value)\n break\n }\n\n // \u53E0\u52A0 coupon \u6298\u6263\n if (variant) {\n const couponDiscount = getCouponDiscount(variant)\n if (couponDiscount > 0) {\n salePrice = salePrice.sub(couponDiscount)\n }\n }\n\n // \u786E\u4FDD\u4EF7\u683C\u4E0D\u4E3A\u8D1F\u6570\n if (salePrice.lessThan(0)) {\n salePrice = new Decimal(0)\n }\n\n return {\n memberPrice: salePrice.toNumber(),\n originalPrice: price,\n }\n },\n [getCouponDiscount]\n )\n\n // \u5904\u7406\u4F1A\u5458\u4EF7\u4EA7\u54C1\u5217\u8868\uFF08\u4EC5\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF09\n const memberPriceList = useMemo(() => {\n if (!targetRule || !memberPriceProducts) return []\n\n // \u83B7\u53D6\u6240\u6709 user_identity === 1 \u7684 discounts\n const allDiscounts = targetRule.result_detail?.member_discounts?.filter(\n (discount: any) => discount.user_identity === 1\n ) || []\n\n // \u5408\u5E76\u6240\u6709 discounts \u7684 variants\uFF0C\u5E76\u4FDD\u5B58\u5BF9\u5E94\u7684 discount \u4FE1\u606F\n const allVariantsWithDiscount = allDiscounts.flatMap((discount: any) =>\n (discount.main_products?.variants || []).map((variant: any) => ({\n ...variant,\n discount, // \u5C06 discount \u4FE1\u606F\u4FDD\u5B58\u5230 variant \u4E2D\n }))\n )\n\n return (\n (allVariantsWithDiscount\n .map((variantWithDiscount: any) => {\n const product = memberPriceProducts.find(p => p.handle === variantWithDiscount.handle)\n if (!product) return null\n\n const productVariant = product.variants?.find(v => v.sku === variantWithDiscount.sku) || product.variants?.[0]\n if (!productVariant || !productVariant.availableForSale) return null\n\n const priceResult = calculateMemberPrice(\n productVariant.price.amount,\n variantWithDiscount.discount,\n productVariant\n )\n if (!priceResult) return null\n\n return {\n product,\n productVariant,\n memberPrice: priceResult.memberPrice,\n originalPrice: priceResult.originalPrice,\n }\n })\n ?.filter(Boolean) as unknown as MemberPriceProduct[]) || []\n )\n }, [targetRule, memberPriceProducts, calculateMemberPrice])\n\n // \u5904\u7406\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u5217\u8868\uFF08\u590D\u7528 creditsCash \u7684\u903B\u8F91\uFF0C\u8FC7\u6EE4\u7F3A\u8D27\u5546\u54C1\uFF09\n const redeemList = useMemo(() => {\n return redeemProducts\n ?.map((product: Product) => {\n const config = copy.redeemTab.list.find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n\n // \u8FC7\u6EE4\u6761\u4EF6\uFF1A\n // 1. \u5FC5\u987B\u6709 alpcData \u548C productVariant\n // 2. \u5546\u54C1\u4E0D\u80FD\u7F3A\u8D27\n // 3. \u5982\u679C\u6709\u5E93\u5B58\u9650\u5236\uFF0C\u5219\u5E93\u5B58\u5FC5\u987B\u5927\u4E8E 0\n if (!alpcData || !productVariant) return null\n if (!productVariant.availableForSale) return null\n if (alpcData.is_limited && alpcData.remaining_inventory <= 0) return null\n\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [redeemProducts, copy.redeemTab.list, redeemableList])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u5206\u9875\n const memberPricePagination = useMemo(() => {\n const totalItems = memberPriceList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = memberPriceList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [memberPriceList, currentPage, itemsPerPage])\n\n // \u8BA1\u7B97\u79EF\u5206\u5151\u6362\u5206\u9875\n const redeemPagination = useMemo(() => {\n const totalItems = redeemList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = redeemList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [redeemList, currentPage, itemsPerPage])\n\n // \u5904\u7406\u9875\u9762\u5207\u6362\uFF0C\u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n const handlePageChange = useCallback(\n (page: number) => {\n setCurrentPage(page)\n // \u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n if (containerRef.current) {\n const top = containerRef.current.offsetTop\n window.scrollTo({\n top: top - 80, // \u51CF\u53BB 80px \u7684\u504F\u79FB\u91CF\uFF0C\u907F\u514D\u88AB\u56FA\u5B9A\u5934\u90E8\u906E\u6321\n behavior: 'smooth',\n })\n }\n },\n [setCurrentPage]\n )\n\n // \u5904\u7406 tab \u5207\u6362\u5E76\u53D1\u9001\u57CB\u70B9\n const handleTabChange = useCallback(\n (value: string) => {\n const tabType = value as 'memberPrice' | 'redeem'\n setActiveTab(tabType)\n\n // \u67E5\u627E\u5F53\u524D tab \u7684 label\n const currentTab = copy.tabs.find(tab => tab.type === tabType)\n const tabLabel = currentTab?.label || ''\n\n // \u53D1\u9001 tab \u70B9\u51FB\u57CB\u70B9\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: gtm.pageGroup,\n position: copy.title,\n button_name: tabLabel,\n },\n })\n },\n [copy.tabs, copy.title, profile?.activated, gtm.pageGroup]\n )\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')} ref={containerRef}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} className=\"mx:px-[16px]\" />\n\n <Tabs\n align=\"left\"\n className=\"mt-[24px]\"\n value={activeTab}\n onValueChange={handleTabChange}\n >\n <TabsList>\n {copy.tabs.map((tab, index) => (\n <TabsTrigger key={index} value={tab.type}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n\n {/* Tab \u5185\u5BB9 */}\n <div className=\"relative mt-[24px]\">\n {/* \u4F1A\u5458\u4EF7 Tab */}\n {activeTab === 'memberPrice' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {memberPricePagination.currentItems?.map((item, index: number) => (\n <MemberPriceItem key={index} itemData={item} copy={copy.memberPriceTab} />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={memberPricePagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n\n {/* \u79EF\u5206\u5151\u6362 Tab */}\n {activeTab === 'redeem' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {redeemPagination.currentItems?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={{\n title: copy.title,\n ...copy.redeemTab,\n }}\n itemData={item}\n setRules={setRules}\n currencyCode={redeemProducts?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={redeemPagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </div>\n\n {/* Rules Modal */}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
4
+ "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport { useMemo, useState, useEffect, useCallback, useRef } from 'react'\nimport Decimal from 'decimal.js'\n\nimport MemberPriceItem from './MemberPriceItem'\nimport RedeemableItem from '../creditsCash/RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/RulesModal'\nimport { Pagination } from './Pagination'\nimport { useProductsByHandles, useHeadlessContext, gaTrack } from '@anker-in/lib'\nimport { CreditsMemberPriceCopy, MemberPriceProduct } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { RedeemItem } from '../creditsCash/type'\nimport { FunctionDiscountType } from '../context/memberPriceConst'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport const CreditsMemberPrice = ({ copy, id }: { copy: CreditsMemberPriceCopy; id?: string }) => {\n const [activeTab, setActiveTab] = useState<'memberPrice' | 'redeem'>(copy.tabs[0]?.type || 'memberPrice')\n const [rules, setRules] = useState<string | string[]>()\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState(9) // \u9ED8\u8BA4 1024px \u4EE5\u4E0A\uFF1A3\u5217 \u00D7 3\u884C = 9\n const { redeemableList } = useRedeemableList()\n const { pageCommon, memberPriceDiscount, profile, gtm } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const containerRef = useRef<HTMLDivElement>(null)\n\n // \u5B9A\u4E49\u9700\u8981\u83B7\u53D6\u7684 metafield\uFF0C\u5305\u62EC\u900F\u660E\u56FE\u548C\u4F18\u60E0\u5238\u4FE1\u606F\n const variantMetafieldIdentifiers: any[] = [\n {\n namespace: 'global',\n key: 'transparentImg',\n },\n {\n namespace: '__discountCodeApp',\n key: 'data',\n },\n ]\n\n // \u6839\u636E\u5C4F\u5E55\u5C3A\u5BF8\u52A8\u6001\u8C03\u6574\u6BCF\u9875\u663E\u793A\u7684\u5546\u54C1\u6570\u91CF\n useEffect(() => {\n const updateItemsPerPage = () => {\n const width = window.innerWidth\n if (width >= 1440) {\n // 1920px \u4EE5\u4E0A\uFF1A4\u5217 \u00D7 3\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else if (width >= 1024) {\n // 1024px - 1919px\uFF1A3\u5217 \u00D7 3\u884C = 9\u4E2A\n setItemsPerPage(9)\n } else if (width >= 768) {\n // 1024px \u4EE5\u4E0B\uFF1A3\u5217 \u00D7 4\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else {\n // 768px \u4EE5\u4E0B\uFF1A2\u5217 \u00D7 4\u884C = 8\u4E2A\n setItemsPerPage(8)\n }\n }\n\n updateItemsPerPage()\n window.addEventListener('resize', updateItemsPerPage)\n return () => window.removeEventListener('resize', updateItemsPerPage)\n }, [])\n\n // \u5F53\u5207\u6362 tab \u6216\u6BCF\u9875\u6570\u91CF\u53D8\u5316\u65F6\u91CD\u7F6E\u9875\u7801\n useEffect(() => {\n setCurrentPage(1)\n }, [activeTab, itemsPerPage])\n\n // \u6839\u636E\u914D\u7F6E\u7684 ruleId \u67E5\u627E\u5BF9\u5E94\u7684\u4F1A\u5458\u4EF7\u89C4\u5219\n const targetRule = useMemo(() => {\n if (!memberPriceDiscount || !copy.memberPriceTab.memberPriceRuleId) return null\n return memberPriceDiscount.find(rule => String(rule.rule_id) === String(copy.memberPriceTab.memberPriceRuleId))\n }, [memberPriceDiscount, copy.memberPriceTab.memberPriceRuleId])\n\n const memberPriceHandles = useMemo(() => {\n if (!targetRule) return []\n\n // \u83B7\u53D6\u6240\u6709 user_identity === 1 \u7684 discounts\n const allDiscounts = targetRule.result_detail?.member_discounts?.filter(\n (discount: any) => discount.user_identity === 1\n ) || []\n\n // \u5408\u5E76\u6240\u6709 discounts \u7684 variants \u7684 handles\n const handles = allDiscounts.flatMap((discount: any) =>\n discount.main_products?.variants?.map((variant: any) => variant.handle) || []\n )\n\n return handles\n }, [targetRule])\n\n // \u83B7\u53D6\u4F1A\u5458\u4EF7\u4EA7\u54C1\u6570\u636E\uFF08\u901A\u8FC7\u4ECE memberPriceDiscount \u63D0\u53D6\u7684 handles \u83B7\u53D6\u4EA7\u54C1\uFF09\n const { data: memberPriceProducts } = useProductsByHandles({\n handles: memberPriceHandles,\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u83B7\u53D6\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u6570\u636E\n const { data: redeemProducts } = useProductsByHandles({\n handles: copy?.redeemTab?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u4ECE variant metafields \u4E2D\u83B7\u53D6\u6709\u6548\u7684 coupon \u6298\u6263\u91D1\u989D\n const getCouponDiscount = useCallback((variant: any) => {\n try {\n const discountData = variant?.metafields?.__discountCodeApp?.data\n if (!discountData) return 0\n\n // discountData \u5DF2\u7ECF\u662F\u5BF9\u8C61\uFF0C\u4E0D\u9700\u8981 JSON.parse\n const discounts = discountData\n if (!Array.isArray(discounts) || discounts.length === 0) return 0\n\n // \u83B7\u53D6\u7B2C\u4E00\u4E2A\u6709\u6548\u7684 coupon\uFF08\u68C0\u67E5\u65F6\u95F4\u8303\u56F4\uFF09\n const now = new Date()\n const validDiscount = discounts.find((discount: any) => {\n const startsAt = discount.starts_at ? new Date(discount.starts_at) : null\n const endsAt = discount.ends_at ? new Date(discount.ends_at) : null\n\n // \u68C0\u67E5 coupon \u662F\u5426\u5728\u6709\u6548\u671F\u5185\n if (startsAt && startsAt > now) return false\n if (endsAt && endsAt < now) return false\n\n return true\n })\n\n // \u8FD4\u56DE\u6298\u6263\u91D1\u989D\uFF08fixed_amount \u7C7B\u578B\uFF09\n if (validDiscount?.fixed_value) {\n return parseFloat(validDiscount.fixed_value)\n }\n\n return 0\n } catch (error) {\n console.error('Failed to get coupon discount:', error)\n return 0\n }\n }, [])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u7684\u8F85\u52A9\u51FD\u6570\uFF08\u4EC5\u4F7F\u7528\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF0C\u5E76\u53E0\u52A0 coupon \u6298\u6263\uFF09\n const calculateMemberPrice = useCallback(\n (price: number, discount: any, variant?: any) => {\n const discountConfig = discount?.discount_conf\n if (!discountConfig) return null\n\n // \u6839\u636E\u6298\u6263\u7C7B\u578B\u8BA1\u7B97\u4F1A\u5458\u4EF7\n let salePrice = new Decimal(price)\n switch (discountConfig.discount_type) {\n case FunctionDiscountType.Percentage:\n salePrice = salePrice.mul(100 - discountConfig.discount_value).div(100)\n break\n case FunctionDiscountType.FixedAmount:\n salePrice = salePrice.sub(discountConfig.discount_value)\n break\n case FunctionDiscountType.FixedPrice:\n salePrice = new Decimal(discountConfig.discount_value)\n break\n }\n\n // \u53E0\u52A0 coupon \u6298\u6263\n if (variant) {\n const couponDiscount = getCouponDiscount(variant)\n if (couponDiscount > 0) {\n salePrice = salePrice.sub(couponDiscount)\n }\n }\n\n // \u786E\u4FDD\u4EF7\u683C\u4E0D\u4E3A\u8D1F\u6570\n if (salePrice.lessThan(0)) {\n salePrice = new Decimal(0)\n }\n\n return {\n memberPrice: salePrice.toNumber(),\n originalPrice: price,\n }\n },\n [getCouponDiscount]\n )\n\n // \u5904\u7406\u4F1A\u5458\u4EF7\u4EA7\u54C1\u5217\u8868\uFF08\u4EC5\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF09\n const memberPriceList = useMemo(() => {\n if (!targetRule || !memberPriceProducts) return []\n\n // \u83B7\u53D6\u6240\u6709 user_identity === 1 \u7684 discounts\n const allDiscounts = targetRule.result_detail?.member_discounts?.filter(\n (discount: any) => discount.user_identity === 1\n ) || []\n\n // \u5408\u5E76\u6240\u6709 discounts \u7684 variants\uFF0C\u5E76\u4FDD\u5B58\u5BF9\u5E94\u7684 discount \u4FE1\u606F\n const allVariantsWithDiscount = allDiscounts.flatMap((discount: any) =>\n (discount.main_products?.variants || []).map((variant: any) => ({\n ...variant,\n discount, // \u5C06 discount \u4FE1\u606F\u4FDD\u5B58\u5230 variant \u4E2D\n }))\n )\n\n return (\n (allVariantsWithDiscount\n .map((variantWithDiscount: any) => {\n const product = memberPriceProducts.find(p => p.handle === variantWithDiscount.handle)\n if (!product) return null\n\n const productVariant = product.variants?.find(v => v.sku === variantWithDiscount.sku) || product.variants?.[0]\n if (!productVariant || !productVariant.availableForSale) return null\n\n const priceResult = calculateMemberPrice(\n productVariant.price.amount,\n variantWithDiscount.discount,\n productVariant\n )\n if (!priceResult) return null\n\n return {\n product,\n productVariant,\n memberPrice: priceResult.memberPrice,\n originalPrice: priceResult.originalPrice,\n }\n })\n ?.filter(Boolean) as unknown as MemberPriceProduct[]) || []\n )\n }, [targetRule, memberPriceProducts, calculateMemberPrice])\n\n // \u5904\u7406\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u5217\u8868\uFF08\u590D\u7528 creditsCash \u7684\u903B\u8F91\uFF0C\u8FC7\u6EE4\u7F3A\u8D27\u5546\u54C1\uFF09\n const redeemList = useMemo(() => {\n return redeemProducts\n ?.map((product: Product) => {\n const config = copy.redeemTab.list.find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n\n // \u8FC7\u6EE4\u6761\u4EF6\uFF1A\n // 1. \u5FC5\u987B\u6709 alpcData \u548C productVariant\n // 2. \u5546\u54C1\u4E0D\u80FD\u7F3A\u8D27\n // 3. \u5982\u679C\u6709\u5E93\u5B58\u9650\u5236\uFF0C\u5219\u5E93\u5B58\u5FC5\u987B\u5927\u4E8E 0\n if (!alpcData || !productVariant) return null\n if (!productVariant.availableForSale) return null\n if (alpcData.is_limited && alpcData.remaining_inventory <= 0) return null\n\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [redeemProducts, copy.redeemTab.list, redeemableList])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u5206\u9875\n const memberPricePagination = useMemo(() => {\n const totalItems = memberPriceList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = memberPriceList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [memberPriceList, currentPage, itemsPerPage])\n\n // \u8BA1\u7B97\u79EF\u5206\u5151\u6362\u5206\u9875\n const redeemPagination = useMemo(() => {\n const totalItems = redeemList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = redeemList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [redeemList, currentPage, itemsPerPage])\n\n // \u5904\u7406\u9875\u9762\u5207\u6362\uFF0C\u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n const handlePageChange = useCallback(\n (page: number) => {\n setCurrentPage(page)\n // \u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n if (containerRef.current) {\n const top = containerRef.current.offsetTop\n window.scrollTo({\n top: top - 80, // \u51CF\u53BB 80px \u7684\u504F\u79FB\u91CF\uFF0C\u907F\u514D\u88AB\u56FA\u5B9A\u5934\u90E8\u906E\u6321\n behavior: 'smooth',\n })\n }\n },\n [setCurrentPage]\n )\n\n // \u5904\u7406 tab \u5207\u6362\u5E76\u53D1\u9001\u57CB\u70B9\n const handleTabChange = useCallback(\n (value: string) => {\n const tabType = value as 'memberPrice' | 'redeem'\n setActiveTab(tabType)\n\n // \u67E5\u627E\u5F53\u524D tab \u7684 label\n const currentTab = copy.tabs.find(tab => tab.type === tabType)\n const tabLabel = currentTab?.label || ''\n\n // \u53D1\u9001 tab \u70B9\u51FB\u57CB\u70B9\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: gtm.pageGroup,\n position: copy.title,\n button_name: tabLabel,\n },\n })\n },\n [copy.tabs, copy.title, profile?.activated, gtm.pageGroup]\n )\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')} ref={containerRef}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} className=\"mx:px-[16px]\" />\n\n <Tabs\n align=\"left\"\n className=\"mt-[24px]\"\n value={activeTab}\n onValueChange={handleTabChange}\n >\n <TabsList>\n {copy.tabs.map((tab, index) => (\n <TabsTrigger key={index} value={tab.type}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n\n {/* Tab \u5185\u5BB9 */}\n <div className=\"relative mt-[24px]\">\n {/* \u4F1A\u5458\u4EF7 Tab */}\n {activeTab === 'memberPrice' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {memberPricePagination.currentItems?.map((item, index: number) => (\n <MemberPriceItem key={index} itemData={item} copy={copy.memberPriceTab} />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={memberPricePagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n\n {/* \u79EF\u5206\u5151\u6362 Tab */}\n {activeTab === 'redeem' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {redeemPagination.currentItems?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={{\n title: copy.title,\n ...copy.redeemTab,\n }}\n itemData={item}\n setRules={setRules}\n currencyCode={redeemProducts?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={redeemPagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </div>\n\n {/* Rules Modal */}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["Fragment", "jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "useMemo", "useState", "useEffect", "useCallback", "useRef", "Decimal", "MemberPriceItem", "RedeemableItem", "useRedeemableList", "RulesModal", "Pagination", "useProductsByHandles", "useHeadlessContext", "gaTrack", "cn", "useCreditsContext", "FunctionDiscountType", "ROUNDED_BRANDS", "CreditsMemberPrice", "copy", "id", "activeTab", "setActiveTab", "rules", "setRules", "currentPage", "setCurrentPage", "itemsPerPage", "setItemsPerPage", "redeemableList", "pageCommon", "memberPriceDiscount", "profile", "gtm", "brand", "rounded", "containerRef", "variantMetafieldIdentifiers", "updateItemsPerPage", "width", "targetRule", "rule", "memberPriceHandles", "discount", "variant", "memberPriceProducts", "redeemProducts", "item", "getCouponDiscount", "discountData", "discounts", "now", "validDiscount", "startsAt", "endsAt", "error", "calculateMemberPrice", "price", "discountConfig", "salePrice", "couponDiscount", "memberPriceList", "variantWithDiscount", "product", "p", "productVariant", "v", "priceResult", "redeemList", "config", "alpcData", "memberPricePagination", "totalItems", "totalPages", "startIndex", "endIndex", "currentItems", "redeemPagination", "handlePageChange", "page", "top", "handleTabChange", "value", "tabType", "tabLabel", "tab", "index"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as se,jsx as s,jsxs as k}from"react/jsx-runtime";import{Container as $,Heading as B,Tabs as U,TabsList as j,TabsTrigger as q}from"@anker-in/headless-ui";import u from"classnames";import{useCallback as w,useMemo as S,useState as c}from"react";import z from"./RedeemCouponModal";import G from"./RedeemProductModal";import{useCreditsContext as V}from"../context/provider";import J from"../context/hooks/useRedeemableList";import{AlpcConsumeType as g,AlpcErrorCode as K}from"../context/const";import{useHeadlessContext as Q,useProductsByHandles as W,gaTrack as X,classNames as _}from"@anker-in/lib";import{RedeemableItem as Y}from"./RedeemableItem";import{ROUNDED_BRANDS as Z}from"../../../constants";import ee from"../modal/rulesModal";import{useRegistration as te}from"../../../components/registration";import{numberFormat as ne}from"../context/utils";const Re=({copy:t,id:I})=>{const{profile:b,openSignUpPopup:A,gtm:{pageGroup:E},pageCommon:M,creditInfo:O}=V(),{authCodeActivate:f}=te(),{brand:C}=Q(),v=Z.includes(C),x=Object.keys(b||{}).length>0,[l,P]=c(t.list?.[0]?.label||""),[r,d]=c(void 0),[m,R]=c(),{listLoading:D,redeemableList:T,getRedeemableList:h}=J(),o=S(()=>T.map(e=>({id:e.id.toString(),title:e.name,consumeCredits:e.consume_credits,remainingInventory:e.remaining_inventory,isLimited:!!e.is_limited,consumeType:e.consume_type,handle:e.sku_handle,sku:e.goods_sku,image:e.goods_url})),[t.list,l,T]),F=o.map(e=>e.handle),{data:L}=W({handles:F}),H=S(()=>(t.list?.find(n=>n.label===l)?.list||[]).filter(n=>o.some(a=>String(a.id)===String(n.id))).map(n=>{const a=o.find(i=>String(i.id)===String(n.id)),p=L?.find(i=>i.handle===a?.handle),N=p?.variants.find(i=>i.sku===a?.sku);return a?.isLimited&&(!a?.remainingInventory||a.remainingInventory<=0)||a?.consumeType===g.Product&&(!p||!N)?null:{alpc:o.find(i=>String(i.id)===String(n.id)),config:n,product:p,variant:N}}).filter(n=>n!==null),[o,L]),y=w(e=>{e===K.CodeLpcRuleInventoryNotEnough&&h()},[h]);return k($,{id:I,className:u("relative bg-[#F5F5F7]"),children:[s(B,{as:"h2",size:"4",html:t.title}),x&&t.availableCredits&&s("p",{className:"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]",children:t.availableCredits.includes("$credits")?k(se,{children:[t.availableCredits.split("$credits")[0],s("span",{className:_("text-brand-color-0",C==="ankersolix"&&"bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent"),children:ne(O?.available_credit||0).toString()}),t.availableCredits.split("$credits")[1]||""]}):t.availableCredits}),s(U,{shape:v?"rounded":"square",align:"left",className:u("py-[24px] md:justify-center"),value:l.toString(),onValueChange:e=>{P(e),X({event:"ga4Event",event_name:"lp_navigation",event_parameters:{navigation:e,page_group:E}})},children:s(j,{children:(t.list||[]).map(e=>s(q,{value:e.label,children:e.label},e.label))})}),!!o?.length&&!D&&s("div",{className:u("relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3"),children:H?.map(e=>s(Y,{copy:t,item:e,onRedeem:n=>{x?!b?.activated&&!f.isActivateSuccess?f.open():d(n):A()},onRulesOpen:R},e?.alpc?.id))}),r?.alpc?.consumeType===g.Coupon&&t?.redeemModal?.coupon&&r&&s(z,{isOpen:!!r,item:r,copy:t,onError:y,onClose:()=>{d(void 0)}}),r?.alpc?.consumeType===g.Product&&t?.redeemModal&&r&&s(G,{isOpen:!!r,item:r,copy:t,onError:y,onClose:()=>{d(void 0)}}),m&&s(ee,{overlayClassName:"md:px-[16px] md:items-center",className:_("md:h-fit md:rounded-b-[16px]",!v&&"md:rounded-none"),isOpen:m.length>0,onClose:()=>R([]),titleClassName:"border-b-transparent h-[56px]",rules:m,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:M?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{Re as CreditsRedeemList};
1
+ import{Fragment as ae,jsx as r,jsxs as M}from"react/jsx-runtime";import{Container as $,Heading as B,Tabs as U,TabsList as V,TabsTrigger as j}from"@anker-in/headless-ui";import b from"classnames";import{useCallback as q,useMemo as C,useState as v}from"react";import w from"./RedeemCouponModal";import z from"./RedeemProductModal";import J from"./RedeemVirtualProductModal";import{useCreditsContext as K}from"../context/provider";import Q from"../context/hooks/useRedeemableList";import{AlpcConsumeType as W,AlpcErrorCode as X,ConsumeType as l}from"../context/const";import{useHeadlessContext as Y,useProductsByHandles as Z,gaTrack as ee,classNames as I}from"@anker-in/lib";import{RedeemableItem as te}from"./RedeemableItem";import{ROUNDED_BRANDS as re}from"../../../constants";import ne from"../modal/RulesModal";import{useRegistration as oe}from"../../../components/registration";import{numberFormat as ie}from"../context/utils";const Le=({copy:t,id:E})=>{const{profile:x,openSignUpPopup:A,gtm:{pageGroup:P},pageCommon:p,creditInfo:D}=K(),{authCodeActivate:R}=oe(),{brand:y}=Y(),h=re.includes(y),T=Object.keys(x||{}).length>0,[c,F]=v(t.list?.[0]?.label||""),[n,m]=v(void 0),[u,L]=v(),{listLoading:G,redeemableList:N,getRedeemableList:S}=Q(),s=C(()=>({...p?.redeemModal||{},...t.redeemModal||{}}),[t.redeemModal,p?.redeemModal]),d=C(()=>N.map(e=>({id:e.id.toString(),title:e.name,consumeCredits:e.consume_credits,remainingInventory:e.remaining_inventory,isLimited:!!e.is_limited,consumeType:e.consume_type,handle:e.sku_handle,sku:e.goods_sku,image:e.goods_url})),[t.list,c,N]),O=d.map(e=>e.handle),{data:_}=Z({handles:O}),H=C(()=>(t.list?.find(o=>o.label===c)?.list||[]).filter(o=>d.some(i=>String(i.id)===String(o.id))).map(o=>{const i=d.find(a=>String(a.id)===String(o.id)),f=_?.find(a=>a.handle===i?.handle),k=f?.variants.find(a=>a.sku===i?.sku);return i?.isLimited&&(!i?.remainingInventory||i.remainingInventory<=0)||i?.consumeType===W.Product&&(!f||!k)?null:{alpc:d.find(a=>String(a.id)===String(o.id)),config:o,product:f,variant:k}}).filter(o=>o!==null),[d,_]),g=q(e=>{e===X.CodeLpcRuleInventoryNotEnough&&S()},[S]);return M($,{id:E,className:b("relative bg-[#F5F5F7]"),children:[r(B,{as:"h2",size:"4",html:t.title}),T&&t.availableCredits&&r("p",{className:"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]",children:t.availableCredits.includes("$credits")?M(ae,{children:[t.availableCredits.split("$credits")[0],r("span",{className:I("text-brand-color-0",y==="ankersolix"&&"bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent"),children:ie(D?.available_credit||0).toString()}),t.availableCredits.split("$credits")[1]||""]}):t.availableCredits}),r(U,{shape:h?"rounded":"square",align:"left",className:b("py-[24px] md:justify-center"),value:c.toString(),onValueChange:e=>{F(e),ee({event:"ga4Event",event_name:"lp_navigation",event_parameters:{navigation:e,page_group:P}})},children:r(V,{children:(t.list||[]).map(e=>r(j,{value:e.label,children:e.label},e.label))})}),!!d?.length&&!G&&r("div",{className:b("relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3"),children:H?.map(e=>r(te,{copy:t,item:e,onRedeem:o=>{T?!x?.activated&&!R.isActivateSuccess?R.open():m(o):A()},onRulesOpen:L},e?.alpc?.id))}),(n?.config?.type===l.Coupon||n?.config?.type===l.ShippingCoupon)&&s?.coupon&&n&&r(w,{item:n,copy:s,onError:g,onClose:()=>{m(void 0)}}),n?.config?.type===l.Product&&s?.product&&n&&r(z,{item:n,copy:s,onError:g,onClose:()=>{m(void 0)}}),(n?.config?.type===l.GiftCard||n?.config?.type===l.GoGift)&&s?.virtualProduct&&n&&r(J,{item:n,copy:s,onError:g,onClose:()=>{m(void 0)}}),u&&r(ne,{overlayClassName:"md:px-[16px] md:items-center",className:I("md:h-fit md:rounded-b-[16px]",!h&&"md:rounded-none"),isOpen:u.length>0,onClose:()=>L([]),titleClassName:"border-b-transparent h-[56px]",rules:u,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:p?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{Le as CreditsRedeemList};
2
2
  //# sourceMappingURL=CreditsRedeemList.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsRedeemList/CreditsRedeemList.tsx"],
4
- "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { useCallback, useMemo, useState } from 'react'\n\nimport RedeemCouponModal from './RedeemCouponModal'\nimport RedeemProductModal from './RedeemProductModal'\nimport { useCreditsContext } from '../context/provider'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport { AlpcConsumeType, AlpcErrorCode } from '../context/const'\nimport { useHeadlessContext, useProductsByHandles, gaTrack, classNames as cn } from '@anker-in/lib'\nimport type { RedeemableItem as RedeemableItemType } from '../type'\nimport { RedeemableItem } from './RedeemableItem'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport RulesModal from '../modal/rulesModal'\nimport { CreditsRedeemListCopy } from './type'\nimport { useRegistration } from '../../../components/registration'\nimport { numberFormat } from '../context/utils'\n\nexport const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; id?: string }) => {\n const {\n profile,\n openSignUpPopup,\n gtm: { pageGroup },\n pageCommon,\n creditInfo,\n } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = Object.keys(profile || {}).length > 0\n\n const [activeTab, setActiveTab] = useState<string>(copy.list?.[0]?.label || '')\n\n const [popRedeemData, setPopRedeemData] = useState<RedeemableItemType | undefined>(undefined)\n\n const [rules, setRules] = useState<string | string[]>()\n\n const { listLoading, redeemableList, getRedeemableList } = useRedeemableList()\n\n const alpcList = useMemo(() => {\n return redeemableList.map(item => {\n return {\n id: item.id.toString(),\n title: item.name,\n consumeCredits: item.consume_credits,\n remainingInventory: item.remaining_inventory,\n isLimited: !!item.is_limited,\n consumeType: item.consume_type,\n handle: item.sku_handle,\n sku: item.goods_sku,\n image: item.goods_url,\n }\n })\n }, [copy.list, activeTab, redeemableList])\n\n const handles = alpcList.map(item => item.handle)\n const { data: products } = useProductsByHandles({ handles })\n\n const list = useMemo(() => {\n const currentList = copy.list?.find(item => item.label === activeTab)\n return (currentList?.list || [])\n .filter(item => alpcList.some(alpcItem => String(alpcItem.id) === String(item.id)))\n .map(item => {\n const alpcItem = alpcList.find(alpcItem => String(alpcItem.id) === String(item.id))\n const product = products?.find(product => product.handle === alpcItem?.handle)\n const variant = product?.variants.find(variant => variant.sku === alpcItem?.sku)\n // \u8FC7\u6EE4\u6389\u5E93\u5B58\u4E0D\u8DB3\u7684\u5546\u54C1\n if (alpcItem?.isLimited && (!alpcItem?.remainingInventory || alpcItem.remainingInventory <= 0)) return null\n if (alpcItem?.consumeType === AlpcConsumeType.Product && (!product || !variant)) return null\n return {\n alpc: alpcList.find(alpcItem => String(alpcItem.id) === String(item.id)),\n config: item,\n product,\n variant,\n }\n })\n .filter(item => item !== null) as unknown as RedeemableItemType[]\n }, [alpcList, products])\n\n const handleRedeemError = useCallback(\n (errorCode: AlpcErrorCode) => {\n if (errorCode === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n getRedeemableList()\n }\n },\n [getRedeemableList]\n )\n\n return (\n <Container id={id} className={classNames('relative bg-[#F5F5F7]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n\n {/* \u53EF\u7528\u79EF\u5206\u5C55\u793A */}\n {isLogin && copy.availableCredits && (\n <p className=\"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]\">\n {copy.availableCredits.includes('$credits') ? (\n <>\n {copy.availableCredits.split('$credits')[0]}\n <span\n className={cn(\n 'text-brand-color-0',\n brand === 'ankersolix' &&\n 'bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'\n )}\n >\n {numberFormat(creditInfo?.available_credit || 0).toString()}\n </span>\n {copy.availableCredits.split('$credits')[1] || ''}\n </>\n ) : (\n copy.availableCredits\n )}\n </p>\n )}\n\n <Tabs\n shape={rounded ? 'rounded' : 'square'}\n align=\"left\"\n className={classNames('py-[24px] md:justify-center')}\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(value)\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_navigation',\n event_parameters: {\n navigation: value,\n page_group: pageGroup,\n },\n })\n }}\n >\n <TabsList>\n {(copy.list || []).map(item => (\n <TabsTrigger key={item.label} value={item.label}>\n {item.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n {/* PC\u7AEF */}\n {!!alpcList?.length && !listLoading && (\n <div\n className={classNames('relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3')}\n >\n {list?.map(item => (\n <RedeemableItem\n key={item?.alpc?.id}\n copy={copy}\n item={item}\n onRedeem={(item: RedeemableItemType) => {\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.open()\n } else {\n setPopRedeemData(item)\n }\n }}\n onRulesOpen={setRules}\n />\n ))}\n </div>\n )}\n\n {popRedeemData?.alpc?.consumeType === AlpcConsumeType.Coupon && copy?.redeemModal?.coupon && popRedeemData && (\n <RedeemCouponModal\n isOpen={!!popRedeemData}\n item={popRedeemData}\n copy={copy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {popRedeemData?.alpc?.consumeType === AlpcConsumeType.Product && copy?.redeemModal && popRedeemData && (\n <RedeemProductModal\n isOpen={!!popRedeemData}\n item={popRedeemData}\n copy={copy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["Fragment", "jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "classNames", "useCallback", "useMemo", "useState", "RedeemCouponModal", "RedeemProductModal", "useCreditsContext", "useRedeemableList", "AlpcConsumeType", "AlpcErrorCode", "useHeadlessContext", "useProductsByHandles", "gaTrack", "cn", "RedeemableItem", "ROUNDED_BRANDS", "RulesModal", "useRegistration", "numberFormat", "CreditsRedeemList", "copy", "id", "profile", "openSignUpPopup", "pageGroup", "pageCommon", "creditInfo", "authCodeActivate", "brand", "rounded", "isLogin", "activeTab", "setActiveTab", "popRedeemData", "setPopRedeemData", "rules", "setRules", "listLoading", "redeemableList", "getRedeemableList", "alpcList", "item", "handles", "products", "list", "alpcItem", "product", "variant", "handleRedeemError", "errorCode", "value"]
4
+ "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { useCallback, useMemo, useState } from 'react'\n\nimport RedeemCouponModal from './RedeemCouponModal'\nimport RedeemProductModal from './RedeemProductModal'\nimport RedeemVirtualProductModal from './RedeemVirtualProductModal'\nimport { useCreditsContext } from '../context/provider'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport { AlpcConsumeType, AlpcErrorCode, ConsumeType } from '../context/const'\nimport { useHeadlessContext, useProductsByHandles, gaTrack, classNames as cn } from '@anker-in/lib'\nimport type { RedeemableItem as RedeemableItemType } from '../type'\nimport { RedeemableItem } from './RedeemableItem'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport RulesModal from '../modal/RulesModal'\nimport { CreditsRedeemListCopy } from './type'\nimport { useRegistration } from '../../../components/registration'\nimport { numberFormat } from '../context/utils'\n\nexport const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; id?: string }) => {\n const {\n profile,\n openSignUpPopup,\n gtm: { pageGroup },\n pageCommon,\n creditInfo,\n } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = Object.keys(profile || {}).length > 0\n\n const [activeTab, setActiveTab] = useState<string>(copy.list?.[0]?.label || '')\n\n const [popRedeemData, setPopRedeemData] = useState<RedeemableItemType | undefined>(undefined)\n\n const [rules, setRules] = useState<string | string[]>()\n\n const { listLoading, redeemableList, getRedeemableList } = useRedeemableList()\n\n // \u5408\u5E76 redeemModal \u6587\u6848\uFF0C\u4F18\u5148\u4F7F\u7528 copy.redeemModal\uFF0Cfallback \u5230 pageCommon.redeemModal\n const redeemModalCopy = useMemo(() => {\n return {\n ...(pageCommon?.redeemModal || {}),\n ...(copy.redeemModal || {}),\n }\n }, [copy.redeemModal, pageCommon?.redeemModal])\n\n const alpcList = useMemo(() => {\n return redeemableList.map(item => {\n return {\n id: item.id.toString(),\n title: item.name,\n consumeCredits: item.consume_credits,\n remainingInventory: item.remaining_inventory,\n isLimited: !!item.is_limited,\n consumeType: item.consume_type,\n handle: item.sku_handle,\n sku: item.goods_sku,\n image: item.goods_url,\n }\n })\n }, [copy.list, activeTab, redeemableList])\n\n const handles = alpcList.map(item => item.handle)\n const { data: products } = useProductsByHandles({ handles })\n\n const list = useMemo(() => {\n const currentList = copy.list?.find(item => item.label === activeTab)\n return (currentList?.list || [])\n .filter(item => alpcList.some(alpcItem => String(alpcItem.id) === String(item.id)))\n .map(item => {\n const alpcItem = alpcList.find(alpcItem => String(alpcItem.id) === String(item.id))\n const product = products?.find(product => product.handle === alpcItem?.handle)\n const variant = product?.variants.find(variant => variant.sku === alpcItem?.sku)\n // \u8FC7\u6EE4\u6389\u5E93\u5B58\u4E0D\u8DB3\u7684\u5546\u54C1\n if (alpcItem?.isLimited && (!alpcItem?.remainingInventory || alpcItem.remainingInventory <= 0)) return null\n if (alpcItem?.consumeType === AlpcConsumeType.Product && (!product || !variant)) return null\n return {\n alpc: alpcList.find(alpcItem => String(alpcItem.id) === String(item.id)),\n config: item,\n product,\n variant,\n }\n })\n .filter(item => item !== null) as unknown as RedeemableItemType[]\n }, [alpcList, products])\n\n const handleRedeemError = useCallback(\n (errorCode: AlpcErrorCode) => {\n if (errorCode === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n getRedeemableList()\n }\n },\n [getRedeemableList]\n )\n\n return (\n <Container id={id} className={classNames('relative bg-[#F5F5F7]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n\n {/* \u53EF\u7528\u79EF\u5206\u5C55\u793A */}\n {isLogin && copy.availableCredits && (\n <p className=\"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]\">\n {copy.availableCredits.includes('$credits') ? (\n <>\n {copy.availableCredits.split('$credits')[0]}\n <span\n className={cn(\n 'text-brand-color-0',\n brand === 'ankersolix' &&\n 'bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'\n )}\n >\n {numberFormat(creditInfo?.available_credit || 0).toString()}\n </span>\n {copy.availableCredits.split('$credits')[1] || ''}\n </>\n ) : (\n copy.availableCredits\n )}\n </p>\n )}\n\n <Tabs\n shape={rounded ? 'rounded' : 'square'}\n align=\"left\"\n className={classNames('py-[24px] md:justify-center')}\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(value)\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_navigation',\n event_parameters: {\n navigation: value,\n page_group: pageGroup,\n },\n })\n }}\n >\n <TabsList>\n {(copy.list || []).map(item => (\n <TabsTrigger key={item.label} value={item.label}>\n {item.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n {/* PC\u7AEF */}\n {!!alpcList?.length && !listLoading && (\n <div\n className={classNames('relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3')}\n >\n {list?.map(item => (\n <RedeemableItem\n key={item?.alpc?.id}\n copy={copy}\n item={item}\n onRedeem={(item: RedeemableItemType) => {\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.open()\n } else {\n setPopRedeemData(item)\n }\n }}\n onRulesOpen={setRules}\n />\n ))}\n </div>\n )}\n\n {(popRedeemData?.config?.type === ConsumeType.Coupon ||\n popRedeemData?.config?.type === ConsumeType.ShippingCoupon) &&\n redeemModalCopy?.coupon &&\n popRedeemData && (\n <RedeemCouponModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {popRedeemData?.config?.type === ConsumeType.Product && redeemModalCopy?.product && popRedeemData && (\n <RedeemProductModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {(popRedeemData?.config?.type === ConsumeType.GiftCard || popRedeemData?.config?.type === ConsumeType.GoGift) &&\n redeemModalCopy?.virtualProduct &&\n popRedeemData && (\n <RedeemVirtualProductModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "classNames", "useCallback", "useMemo", "useState", "RedeemCouponModal", "RedeemProductModal", "RedeemVirtualProductModal", "useCreditsContext", "useRedeemableList", "AlpcConsumeType", "AlpcErrorCode", "ConsumeType", "useHeadlessContext", "useProductsByHandles", "gaTrack", "cn", "RedeemableItem", "ROUNDED_BRANDS", "RulesModal", "useRegistration", "numberFormat", "CreditsRedeemList", "copy", "id", "profile", "openSignUpPopup", "pageGroup", "pageCommon", "creditInfo", "authCodeActivate", "brand", "rounded", "isLogin", "activeTab", "setActiveTab", "popRedeemData", "setPopRedeemData", "rules", "setRules", "listLoading", "redeemableList", "getRedeemableList", "redeemModalCopy", "alpcList", "item", "handles", "products", "list", "alpcItem", "product", "variant", "handleRedeemError", "errorCode", "value"]
7
7
  }
@@ -0,0 +1,10 @@
1
+ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type';
2
+ type CouponInitProps = {
3
+ item: RedeemableItemType;
4
+ copy: RedeemModalCommon;
5
+ loading: boolean;
6
+ disabled: boolean;
7
+ onConfirm: () => void;
8
+ };
9
+ export declare const CouponInit: ({ item, copy, loading, disabled, onConfirm }: CouponInitProps) => import("react/jsx-runtime").JSX.Element;
10
+ export {};