@anker-in/campaign-ui 0.2.1 → 0.2.2-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/dist/cjs/components/credits/context/hooks/useActivities.js +1 -1
  2. package/dist/cjs/components/credits/context/hooks/useActivities.js.map +3 -3
  3. package/dist/cjs/components/credits/context/hooks/useAlpcFetch.js +1 -1
  4. package/dist/cjs/components/credits/context/hooks/useAlpcFetch.js.map +3 -3
  5. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.d.ts +7 -0
  6. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +2 -0
  7. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +7 -0
  8. package/dist/cjs/components/credits/context/hooks/useMyRewards.js +1 -1
  9. package/dist/cjs/components/credits/context/hooks/useMyRewards.js.map +3 -3
  10. package/dist/cjs/components/credits/context/hooks/useRedeemCoupon.js +1 -1
  11. package/dist/cjs/components/credits/context/hooks/useRedeemCoupon.js.map +3 -3
  12. package/dist/cjs/components/credits/context/hooks/useRedeemProduct.js +1 -1
  13. package/dist/cjs/components/credits/context/hooks/useRedeemProduct.js.map +3 -3
  14. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
  15. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +3 -3
  16. package/dist/cjs/components/credits/context/memberPriceConst.d.ts +10 -0
  17. package/dist/cjs/components/credits/context/memberPriceConst.js +2 -0
  18. package/dist/cjs/components/credits/context/memberPriceConst.js.map +7 -0
  19. package/dist/cjs/components/credits/context/memberPriceTypes.d.ts +46 -0
  20. package/dist/cjs/components/credits/context/memberPriceTypes.js +2 -0
  21. package/dist/cjs/components/credits/context/memberPriceTypes.js.map +7 -0
  22. package/dist/cjs/components/credits/context/provider.d.ts +4 -1
  23. package/dist/cjs/components/credits/context/provider.js +1 -1
  24. package/dist/cjs/components/credits/context/provider.js.map +3 -3
  25. package/dist/cjs/components/credits/context/utils/atobID.d.ts +1 -0
  26. package/dist/cjs/components/credits/context/utils/atobID.js +2 -0
  27. package/dist/cjs/components/credits/context/utils/atobID.js.map +7 -0
  28. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.d.ts +5 -0
  29. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js +2 -0
  30. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js.map +7 -0
  31. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.d.ts +8 -0
  32. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +2 -0
  33. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +7 -0
  34. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +9 -0
  35. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +2 -0
  36. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +7 -0
  37. package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +6 -0
  38. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +2 -0
  39. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +7 -0
  40. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.d.ts +4 -0
  41. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +2 -0
  42. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +7 -0
  43. package/dist/cjs/components/credits/creditsAnkersolixTask/index.d.ts +2 -0
  44. package/dist/cjs/components/credits/creditsAnkersolixTask/index.js +2 -0
  45. package/dist/cjs/components/credits/creditsAnkersolixTask/index.js.map +7 -0
  46. package/dist/cjs/components/credits/creditsAnkersolixTask/type.d.ts +1 -0
  47. package/dist/cjs/components/credits/creditsAnkersolixTask/type.js +2 -0
  48. package/dist/cjs/components/credits/creditsAnkersolixTask/type.js.map +7 -0
  49. package/dist/cjs/components/credits/creditsBanner/index.d.ts +2 -1
  50. package/dist/cjs/components/credits/creditsBanner/index.js +1 -1
  51. package/dist/cjs/components/credits/creditsBanner/index.js.map +3 -3
  52. package/dist/{esm/components/credits/creditsBenefits/benefitItem.d.ts → cjs/components/credits/creditsBenefits/BenefitItem.d.ts} +4 -1
  53. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js +2 -0
  54. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js.map +7 -0
  55. package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +1 -1
  56. package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +2 -2
  57. package/dist/cjs/components/credits/creditsBenefits/index.d.ts +6 -2
  58. package/dist/cjs/components/credits/creditsBenefits/index.js +3 -3
  59. package/dist/cjs/components/credits/creditsBenefits/index.js.map +3 -3
  60. package/dist/cjs/components/credits/creditsCash/CreditsCash.d.ts +2 -1
  61. package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
  62. package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +3 -3
  63. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
  64. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +2 -2
  65. package/dist/cjs/components/credits/creditsFaq/index.d.ts +2 -1
  66. package/dist/cjs/components/credits/creditsFaq/index.js +1 -1
  67. package/dist/cjs/components/credits/creditsFaq/index.js.map +3 -3
  68. package/dist/cjs/components/credits/creditsInfoCard/index.d.ts +2 -1
  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.d.ts +5 -0
  72. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +2 -0
  73. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +7 -0
  74. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.d.ts +7 -0
  75. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js +2 -0
  76. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js.map +7 -0
  77. package/dist/cjs/components/credits/creditsMemberPrice/index.d.ts +2 -0
  78. package/dist/cjs/components/credits/creditsMemberPrice/index.js +2 -0
  79. package/dist/cjs/components/credits/creditsMemberPrice/index.js.map +7 -0
  80. package/dist/cjs/components/credits/creditsMemberPrice/type.d.ts +64 -0
  81. package/dist/cjs/components/credits/creditsMemberPrice/type.js +2 -0
  82. package/dist/cjs/components/credits/creditsMemberPrice/type.js.map +7 -0
  83. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.d.ts +4 -0
  84. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js +2 -0
  85. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js.map +7 -0
  86. package/dist/cjs/components/credits/creditsNavigation/index.d.ts +2 -0
  87. package/dist/cjs/components/credits/creditsNavigation/index.js +2 -0
  88. package/dist/cjs/components/credits/creditsNavigation/index.js.map +7 -0
  89. package/dist/cjs/components/credits/creditsNavigation/type.d.ts +7 -0
  90. package/dist/cjs/components/credits/creditsNavigation/type.js +2 -0
  91. package/dist/cjs/components/credits/creditsNavigation/type.js.map +7 -0
  92. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.d.ts +2 -1
  93. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  94. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  95. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Error.js +1 -1
  96. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Error.js.map +2 -2
  97. package/dist/cjs/components/credits/creditsRedeemList/type.d.ts +1 -0
  98. package/dist/cjs/components/credits/creditsRedeemList/type.js +1 -1
  99. package/dist/cjs/components/credits/creditsRedeemList/type.js.map +1 -1
  100. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.d.ts +3 -1
  101. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  102. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  103. package/dist/cjs/templates/{credits.d.ts → Credits.d.ts} +15 -1
  104. package/dist/cjs/templates/Credits.js +2 -0
  105. package/dist/cjs/templates/Credits.js.map +7 -0
  106. package/dist/cjs/templates/index.d.ts +1 -1
  107. package/dist/cjs/templates/index.js +1 -1
  108. package/dist/cjs/templates/index.js.map +1 -1
  109. package/dist/esm/components/credits/context/hooks/useActivities.js +1 -1
  110. package/dist/esm/components/credits/context/hooks/useActivities.js.map +3 -3
  111. package/dist/esm/components/credits/context/hooks/useAlpcFetch.js +1 -1
  112. package/dist/esm/components/credits/context/hooks/useAlpcFetch.js.map +3 -3
  113. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +7 -0
  114. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +2 -0
  115. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +7 -0
  116. package/dist/esm/components/credits/context/hooks/useMyRewards.js +1 -1
  117. package/dist/esm/components/credits/context/hooks/useMyRewards.js.map +3 -3
  118. package/dist/esm/components/credits/context/hooks/useRedeemCoupon.js +1 -1
  119. package/dist/esm/components/credits/context/hooks/useRedeemCoupon.js.map +3 -3
  120. package/dist/esm/components/credits/context/hooks/useRedeemProduct.js +1 -1
  121. package/dist/esm/components/credits/context/hooks/useRedeemProduct.js.map +3 -3
  122. package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
  123. package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +3 -3
  124. package/dist/esm/components/credits/context/memberPriceConst.d.ts +10 -0
  125. package/dist/esm/components/credits/context/memberPriceConst.js +2 -0
  126. package/dist/esm/components/credits/context/memberPriceConst.js.map +7 -0
  127. package/dist/esm/components/credits/context/memberPriceTypes.d.ts +46 -0
  128. package/dist/esm/components/credits/context/memberPriceTypes.js +1 -0
  129. package/dist/esm/components/credits/context/memberPriceTypes.js.map +7 -0
  130. package/dist/esm/components/credits/context/provider.d.ts +4 -1
  131. package/dist/esm/components/credits/context/provider.js +1 -1
  132. package/dist/esm/components/credits/context/provider.js.map +3 -3
  133. package/dist/esm/components/credits/context/utils/atobID.d.ts +1 -0
  134. package/dist/esm/components/credits/context/utils/atobID.js +2 -0
  135. package/dist/esm/components/credits/context/utils/atobID.js.map +7 -0
  136. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.d.ts +5 -0
  137. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js +2 -0
  138. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js.map +7 -0
  139. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +8 -0
  140. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +2 -0
  141. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +7 -0
  142. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +9 -0
  143. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +2 -0
  144. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +7 -0
  145. package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +6 -0
  146. package/dist/esm/components/credits/context/utils/variantGetCoupon.js +2 -0
  147. package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +7 -0
  148. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.d.ts +4 -0
  149. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +2 -0
  150. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +7 -0
  151. package/dist/esm/components/credits/creditsAnkersolixTask/index.d.ts +2 -0
  152. package/dist/esm/components/credits/creditsAnkersolixTask/index.js +2 -0
  153. package/dist/esm/components/credits/creditsAnkersolixTask/index.js.map +7 -0
  154. package/dist/esm/components/credits/creditsAnkersolixTask/type.d.ts +1 -0
  155. package/dist/esm/components/credits/creditsAnkersolixTask/type.js +2 -0
  156. package/dist/esm/components/credits/creditsAnkersolixTask/type.js.map +7 -0
  157. package/dist/esm/components/credits/creditsBanner/index.d.ts +2 -1
  158. package/dist/esm/components/credits/creditsBanner/index.js +1 -1
  159. package/dist/esm/components/credits/creditsBanner/index.js.map +3 -3
  160. package/dist/{cjs/components/credits/creditsBenefits/benefitItem.d.ts → esm/components/credits/creditsBenefits/BenefitItem.d.ts} +4 -1
  161. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js +2 -0
  162. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js.map +7 -0
  163. package/dist/esm/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +1 -1
  164. package/dist/esm/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +2 -2
  165. package/dist/esm/components/credits/creditsBenefits/index.d.ts +6 -2
  166. package/dist/esm/components/credits/creditsBenefits/index.js +3 -3
  167. package/dist/esm/components/credits/creditsBenefits/index.js.map +3 -3
  168. package/dist/esm/components/credits/creditsCash/CreditsCash.d.ts +2 -1
  169. package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
  170. package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +3 -3
  171. package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
  172. package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +2 -2
  173. package/dist/esm/components/credits/creditsFaq/index.d.ts +2 -1
  174. package/dist/esm/components/credits/creditsFaq/index.js +1 -1
  175. package/dist/esm/components/credits/creditsFaq/index.js.map +3 -3
  176. package/dist/esm/components/credits/creditsInfoCard/index.d.ts +2 -1
  177. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  178. package/dist/esm/components/credits/creditsInfoCard/index.js.map +3 -3
  179. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.d.ts +5 -0
  180. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +2 -0
  181. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +7 -0
  182. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.d.ts +7 -0
  183. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js +2 -0
  184. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js.map +7 -0
  185. package/dist/esm/components/credits/creditsMemberPrice/index.d.ts +2 -0
  186. package/dist/esm/components/credits/creditsMemberPrice/index.js +2 -0
  187. package/dist/esm/components/credits/creditsMemberPrice/index.js.map +7 -0
  188. package/dist/esm/components/credits/creditsMemberPrice/type.d.ts +64 -0
  189. package/dist/esm/components/credits/creditsMemberPrice/type.js +1 -0
  190. package/dist/esm/components/credits/creditsMemberPrice/type.js.map +7 -0
  191. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.d.ts +4 -0
  192. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js +2 -0
  193. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js.map +7 -0
  194. package/dist/esm/components/credits/creditsNavigation/index.d.ts +2 -0
  195. package/dist/esm/components/credits/creditsNavigation/index.js +2 -0
  196. package/dist/esm/components/credits/creditsNavigation/index.js.map +7 -0
  197. package/dist/esm/components/credits/creditsNavigation/type.d.ts +7 -0
  198. package/dist/esm/components/credits/creditsNavigation/type.js +1 -0
  199. package/dist/esm/components/credits/creditsNavigation/type.js.map +7 -0
  200. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.d.ts +2 -1
  201. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  202. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  203. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Error.js +1 -1
  204. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Error.js.map +2 -2
  205. package/dist/esm/components/credits/creditsRedeemList/type.d.ts +1 -0
  206. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.d.ts +3 -1
  207. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  208. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  209. package/dist/esm/templates/{credits.d.ts → Credits.d.ts} +15 -1
  210. package/dist/esm/templates/Credits.js +2 -0
  211. package/dist/esm/templates/Credits.js.map +7 -0
  212. package/dist/esm/templates/index.d.ts +1 -1
  213. package/dist/esm/templates/index.js +1 -1
  214. package/dist/esm/templates/index.js.map +1 -1
  215. package/package.json +4 -3
  216. package/src/components/credits/context/hooks/useActivities.ts +3 -2
  217. package/src/components/credits/context/hooks/useAlpcFetch.ts +8 -4
  218. package/src/components/credits/context/hooks/useFunctionMemberPrice.ts +33 -0
  219. package/src/components/credits/context/hooks/useMyRewards.ts +3 -2
  220. package/src/components/credits/context/hooks/useRedeemCoupon.ts +4 -1
  221. package/src/components/credits/context/hooks/useRedeemProduct.ts +4 -1
  222. package/src/components/credits/context/hooks/useRedeemableList.ts +3 -3
  223. package/src/components/credits/context/memberPriceConst.ts +13 -0
  224. package/src/components/credits/context/memberPriceTypes.ts +54 -0
  225. package/src/components/credits/context/provider.tsx +9 -0
  226. package/src/components/credits/context/utils/atobID.ts +8 -0
  227. package/src/components/credits/context/utils/functionDiscountCalculate.ts +57 -0
  228. package/src/components/credits/context/utils/getFunctionMemberPrice.ts +135 -0
  229. package/src/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.ts +51 -0
  230. package/src/components/credits/context/utils/variantGetCoupon.ts +34 -0
  231. package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +270 -0
  232. package/src/components/credits/creditsAnkersolixTask/index.ts +2 -0
  233. package/src/components/credits/creditsAnkersolixTask/type.ts +7 -0
  234. package/src/components/credits/creditsBanner/index.tsx +2 -2
  235. package/src/components/credits/creditsBenefits/{benefitItem.tsx → BenefitItem.tsx} +28 -9
  236. package/src/components/credits/creditsBenefits/index.tsx +12 -3
  237. package/src/components/credits/creditsCash/CreditsCash.tsx +5 -3
  238. package/src/components/credits/creditsCash/RedeemableItem.tsx +19 -15
  239. package/src/components/credits/creditsFaq/index.tsx +2 -2
  240. package/src/components/credits/creditsInfoCard/index.tsx +2 -2
  241. package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +389 -0
  242. package/src/components/credits/creditsMemberPrice/MemberPriceItem.tsx +158 -0
  243. package/src/components/credits/creditsMemberPrice/index.ts +2 -0
  244. package/src/components/credits/creditsMemberPrice/type.ts +75 -0
  245. package/src/components/credits/creditsNavigation/CreditsNavigation.tsx +123 -0
  246. package/src/components/credits/creditsNavigation/index.ts +2 -0
  247. package/src/components/credits/creditsNavigation/type.ts +10 -0
  248. package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +17 -3
  249. package/src/components/credits/creditsRedeemList/RedeemProductModal/Error.tsx +1 -1
  250. package/src/components/credits/creditsRedeemList/type.ts +1 -0
  251. package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +2 -2
  252. package/src/templates/{credits.tsx → Credits.tsx} +38 -7
  253. package/src/templates/index.ts +1 -1
  254. package/dist/cjs/components/credits/const.d.ts +0 -1
  255. package/dist/cjs/components/credits/const.js +0 -2
  256. package/dist/cjs/components/credits/const.js.map +0 -7
  257. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js +0 -2
  258. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js.map +0 -7
  259. package/dist/cjs/templates/credits.js +0 -2
  260. package/dist/cjs/templates/credits.js.map +0 -7
  261. package/dist/esm/components/credits/const.d.ts +0 -1
  262. package/dist/esm/components/credits/const.js +0 -2
  263. package/dist/esm/components/credits/const.js.map +0 -7
  264. package/dist/esm/components/credits/creditsBenefits/benefitItem.js +0 -2
  265. package/dist/esm/components/credits/creditsBenefits/benefitItem.js.map +0 -7
  266. package/dist/esm/templates/credits.js +0 -2
  267. package/dist/esm/templates/credits.js.map +0 -7
  268. /package/dist/cjs/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
  269. /package/dist/esm/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
  270. /package/src/components/credits/creditsBenefits/{iconInfo.tsx → IconInfo.tsx} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 } 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 { useProductsByHandles } 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'\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 } = useCreditsContext()\n\n console.log('copy in CreditsMemberPrice', copy)\n\n // \u5B9A\u4E49\u9700\u8981\u83B7\u53D6\u7684 metafield\uFF0C\u5305\u62EC\u900F\u660E\u56FE\n const variantMetafieldIdentifiers: any[] = [\n {\n namespace: 'global',\n key: 'transparentImg',\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 >= 1024) {\n // 1024px \u4EE5\u4E0A\uFF1A3\u5217 \u00D7 3\u884C = 9\u4E2A\n setItemsPerPage(9)\n } else {\n // 1024px \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\n .find(rule => String(rule.rule_id) === String(copy.memberPriceTab.memberPriceRuleId))\n ?.result_detail?.member_discounts?.find(discount => discount.user_identity === 1)\n }, [memberPriceDiscount, copy.memberPriceTab.memberPriceRuleId])\n\n console.log('targetRule in CreditsMemberPrice', targetRule)\n\n const memberPriceHandles = useMemo(() => {\n if (!targetRule) return []\n\n return targetRule.main_products?.variants?.map(variant => variant.handle) || []\n }, [targetRule?.main_products.variants])\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 // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u7684\u8F85\u52A9\u51FD\u6570\uFF08\u4EC5\u4F7F\u7528\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF09\n const calculateMemberPrice = useCallback(\n (price: number) => {\n if (!targetRule) return null\n\n const discountConfig = targetRule?.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 return {\n memberPrice: salePrice.toNumber(),\n originalPrice: price,\n }\n },\n [targetRule]\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 return (\n (targetRule.main_products.variants\n .map(variant => {\n const product = memberPriceProducts.find(p => p.handle === variant.handle)\n if (!product) return null\n\n const productVariant = product.variants?.find(v => v.sku === variant.sku) || product.variants?.[0]\n if (!productVariant || !productVariant.availableForSale) return null\n\n const priceResult = calculateMemberPrice(productVariant.price.amount)\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 // \u5206\u9875\u5BFC\u822A\u7EC4\u4EF6 - \u6309\u7167 Figma \u8BBE\u8BA1\n const renderPagination = (totalPages: number) => {\n if (totalPages <= 1) return null\n\n // \u8BA1\u7B97\u8981\u663E\u793A\u7684\u9875\u7801\n const getPageNumbers = () => {\n const delta = 2 // \u5F53\u524D\u9875\u524D\u540E\u663E\u793A\u7684\u9875\u7801\u6570\u91CF\n const range = []\n const rangeWithDots = []\n\n for (let i = 1; i <= totalPages; i++) {\n if (i === 1 || i === totalPages || (i >= currentPage - delta && i <= currentPage + delta)) {\n range.push(i)\n }\n }\n\n let prev = 0\n for (const i of range) {\n if (prev && i - prev > 1) {\n rangeWithDots.push('...')\n }\n rangeWithDots.push(i)\n prev = i\n }\n\n return rangeWithDots\n }\n\n const pages = getPageNumbers()\n\n return (\n <div className=\"mt-[32px] flex items-center justify-center gap-[8px]\">\n {/* \u4E0A\u4E00\u9875\u6309\u94AE */}\n <button\n onClick={() => setCurrentPage(prev => Math.max(1, prev - 1))}\n disabled={currentPage === 1}\n className={cn(\n 'flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white',\n currentPage === 1 && 'cursor-not-allowed opacity-50'\n )}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M10 12L6 8L10 4\"\n stroke={currentPage === 1 ? '#767880' : '#080A0F'}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {/* \u9875\u7801\u6309\u94AE */}\n {pages.map((page, index) => {\n if (page === '...') {\n return (\n <div\n key={`ellipsis-${index}`}\n className=\"flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"4.5\" cy=\"10\" r=\"1.25\" fill=\"#2A2C32\" />\n <circle cx=\"10\" cy=\"10\" r=\"1.25\" fill=\"#2A2C32\" />\n <circle cx=\"15.5\" cy=\"10\" r=\"1.25\" fill=\"#2A2C32\" />\n </svg>\n </div>\n )\n }\n\n const isActive = currentPage === page\n return (\n <button\n key={page}\n onClick={() => setCurrentPage(page as number)}\n className={cn(\n 'flex size-[32px] xl:size-[24px] pt-[4px] items-center justify-center overflow-hidden text-[16px] xl:text-[14px] font-bold leading-[1.4] tracking-[-0.28px]',\n isActive ? 'bg-[#080a0f] text-white' : 'bg-white text-[#080a0f]'\n )}\n >\n {page}\n </button>\n )\n })}\n\n {/* \u4E0B\u4E00\u9875\u6309\u94AE */}\n <button\n onClick={() => setCurrentPage(prev => Math.min(totalPages, prev + 1))}\n disabled={currentPage === totalPages}\n className={cn(\n 'flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white',\n currentPage === totalPages && 'cursor-not-allowed opacity-50'\n )}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M6 4L10 8L6 12\"\n stroke={currentPage === totalPages ? '#767880' : '#080A0F'}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n )\n }\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')}>\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={value => setActiveTab(value as 'memberPrice' | 'redeem')}\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 {renderPagination(memberPricePagination.totalPages)}\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 {renderPagination(redeemPagination.totalPages)}\n </>\n )}\n </div>\n\n {/* Rules Modal */}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className=\"md:h-fit md:rounded-b-[16px]\"\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", "useMemo", "useState", "useEffect", "useCallback", "Decimal", "MemberPriceItem", "RedeemableItem", "useRedeemableList", "RulesModal", "useProductsByHandles", "cn", "useCreditsContext", "FunctionDiscountType", "CreditsMemberPrice", "copy", "id", "activeTab", "setActiveTab", "rules", "setRules", "currentPage", "setCurrentPage", "itemsPerPage", "setItemsPerPage", "redeemableList", "pageCommon", "memberPriceDiscount", "variantMetafieldIdentifiers", "updateItemsPerPage", "targetRule", "rule", "discount", "memberPriceHandles", "variant", "memberPriceProducts", "redeemProducts", "item", "calculateMemberPrice", "price", "discountConfig", "salePrice", "memberPriceList", "product", "p", "productVariant", "v", "priceResult", "redeemList", "config", "alpcData", "memberPricePagination", "totalItems", "totalPages", "startIndex", "endIndex", "currentItems", "redeemPagination", "renderPagination", "pages", "range", "rangeWithDots", "i", "prev", "page", "index", "value", "tab"]
7
+ }
@@ -0,0 +1,7 @@
1
+ import { CreditsMemberPriceCopy, MemberPriceProduct } from './type';
2
+ declare function MemberPriceItem({ itemData, copy, className, }: {
3
+ itemData: MemberPriceProduct;
4
+ copy: CreditsMemberPriceCopy['memberPriceTab'];
5
+ className?: string;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export default MemberPriceItem;
@@ -0,0 +1,2 @@
1
+ import{jsx as t,jsxs as l}from"react/jsx-runtime";import{Button as d,Text as a,Picture as m}from"@anker-in/headless-ui";import{useMemo as v}from"react";import{formatPrice as x}from"../context/utils";import{classNames as o,ROUNDED_BRANDS as P,useHeadlessContext as h,useBuyNow as C}from"@anker-in/lib";import{useCreditsContext as w}from"../context/provider";function y({itemData:e,copy:r,className:p}){const{brand:i,locale:n}=h(),{profile:u}=w(),b=P.includes(i),{trigger:g,isMutating:c}=C({},{throwOnError:!0}),s=v(()=>e.productVariant?.availableForSale,[e.productVariant?.availableForSale]),f=()=>{window.location.href=`/products/${e.product.handle}`},N=()=>{g({customAttributes:[{key:"_member_type",value:String(u?.memberType||0)}],lineItems:[{variant:e.productVariant,quantity:1}]})};return l("div",{className:o("relative flex flex-col items-center bg-[#EAEAEC] p-[16px] md:rounded-[12px]",!b&&"rounded-none md:rounded-none",p),children:[r.memberPriceImg&&t(m,{className:"absolute left-[24px] top-[16px] h-[24px] w-auto",imgClassName:"!h-full object-contain",source:r.memberPriceImg.url,alt:r.memberPriceImg.alt||"Member Price"}),t("a",{href:`/products/${e.product.handle}`,className:o("relative mx-auto size-[138px]"),children:t(m,{className:"mx-auto size-full",imgClassName:"object-contain",source:e?.productVariant?.metafields?.global?.transparentImg||e?.config?.image?.url||e?.productVariant?.image?.url})}),l("div",{className:o("mt-[4px] w-full"),children:[t(a,{html:e?.product?.title,title:e?.product?.title,className:"line-clamp-2 text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]"}),l("div",{className:"mt-[16px] flex flex-col gap-[8px]",children:[t(a,{html:r.memberPriceLabel,className:o("text-brand-color-0 text-[16px] l-xl:text-[14px] l:text-[12px] w-fit font-bold leading-[1.4] tracking-[-0.28px]",i==="ankersolix"&&"leading-none bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent"),as:"p"}),l("div",{className:"flex items-center gap-[4px]",children:[t(a,{html:x({amount:e.memberPrice,currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:n}),className:"text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]",as:"span"}),t(a,{html:x({amount:e.originalPrice,currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:n}),className:"text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through",as:"span"})]}),l("div",{className:"flex w-full gap-[8px] md:flex-col",children:[t(d,{variant:"secondary",className:"flex-1 md:w-full",size:"lg",onClick:f,disabled:!s,children:r.learnMoreText}),t(d,{variant:"primary",className:"flex-1 md:w-full",size:"lg",onClick:N,disabled:!s||c,loading:c,children:r.shopNowText})]})]})]})]})}var T=y;export{T as default};
2
+ //# sourceMappingURL=MemberPriceItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsMemberPrice/MemberPriceItem.tsx"],
4
+ "sourcesContent": ["import { Button, Text, Picture } from '@anker-in/headless-ui'\nimport { useMemo } from 'react'\n\nimport { CreditsMemberPriceCopy, MemberPriceProduct } from './type'\nimport { formatPrice } from '../context/utils'\nimport { classNames as cn, ROUNDED_BRANDS, useHeadlessContext, useBuyNow } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\n\nfunction MemberPriceItem({\n itemData,\n copy,\n className,\n}: {\n itemData: MemberPriceProduct\n copy: CreditsMemberPriceCopy['memberPriceTab']\n className?: string\n}) {\n const { brand, locale } = useHeadlessContext()\n const { profile } = useCreditsContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n // \u4F7F\u7528 buyNow hook \u6765\u5904\u7406\u7ED3\u7B97\n const { trigger: buyNow, isMutating: isBuying } = useBuyNow({}, { throwOnError: true })\n\n const isAvailable = useMemo(() => {\n return itemData.productVariant?.availableForSale\n }, [itemData.productVariant?.availableForSale])\n\n // Learn More \u6309\u94AE\u70B9\u51FB - \u8DF3\u8F6C\u5230\u4EA7\u54C1\u8BE6\u60C5\u9875\n const handleLearnMore = () => {\n window.location.href = `/products/${itemData.product.handle}`\n }\n\n // Shop Now \u6309\u94AE\u70B9\u51FB - \u4F7F\u7528 buyNow \u8FDB\u884C\u7ED3\u7B97\n const handleShopNow = () => {\n buyNow({\n customAttributes: [\n {\n key: '_member_type',\n value: String(profile?.memberType || 0),\n },\n ],\n lineItems: [\n {\n variant: itemData.productVariant,\n quantity: 1,\n },\n ],\n })\n }\n\n return (\n <div\n className={cn(\n 'relative flex flex-col items-center bg-[#EAEAEC] p-[16px] md:rounded-[12px]',\n !rounded && 'rounded-none md:rounded-none',\n className\n )}\n >\n {/* Member \u6807\u7B7E\u56FE\u7247 */}\n {copy.memberPriceImg && (\n <Picture\n className=\"absolute left-[24px] top-[16px] h-[24px] w-auto\"\n imgClassName=\"!h-full object-contain\"\n source={copy.memberPriceImg.url}\n alt={copy.memberPriceImg.alt || 'Member Price'}\n />\n )}\n\n {/* \u4EA7\u54C1\u56FE\u7247 - \u4F18\u5148\u4F7F\u7528\u4EA7\u54C1\u7684 metafields \u900F\u660E\u56FE */}\n <a href={`/products/${itemData.product.handle}`} className={cn('relative mx-auto size-[138px]')}>\n <Picture\n className=\"mx-auto size-full\"\n imgClassName=\"object-contain\"\n source={\n itemData?.productVariant?.metafields?.global?.transparentImg ||\n itemData?.config?.image?.url ||\n itemData?.productVariant?.image?.url\n }\n ></Picture>\n </a>\n\n {/* \u4EA7\u54C1\u4FE1\u606F */}\n <div className={cn('mt-[4px] w-full')}>\n {/* \u4EA7\u54C1\u6807\u9898 - \u4F7F\u7528\u4EA7\u54C1\u7684\u771F\u5B9E\u6807\u9898 */}\n <Text\n html={itemData?.product?.title}\n title={itemData?.product?.title}\n className=\"line-clamp-2 text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]\"\n />\n\n {/* \u4EF7\u683C\u4FE1\u606F */}\n <div className=\"mt-[16px] flex flex-col gap-[8px]\">\n {/* Member Price \u6807\u7B7E - \u4F7F\u7528 text-brand-color-1 */}\n <Text\n html={copy.memberPriceLabel}\n className={cn(\n 'text-brand-color-0 text-[16px] l-xl:text-[14px] l:text-[12px] w-fit font-bold leading-[1.4] tracking-[-0.28px]',\n brand === 'ankersolix' &&\n 'leading-none bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'\n )}\n as=\"p\"\n />\n\n {/* \u4F1A\u5458\u4EF7\u548C\u539F\u4EF7\u5728\u540C\u4E00\u884C */}\n <div className=\"flex items-center gap-[4px]\">\n <Text\n html={formatPrice({\n amount: itemData.memberPrice,\n currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',\n locale: locale,\n })}\n className=\"text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]\"\n as=\"span\"\n />\n <Text\n html={formatPrice({\n amount: itemData.originalPrice,\n currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',\n locale: locale,\n })}\n className=\"text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through\"\n as=\"span\"\n />\n </div>\n\n {/* \u6309\u94AE\u7EC4 */}\n <div className=\"flex w-full gap-[8px] md:flex-col\">\n {/* Learn More \u6309\u94AE */}\n <Button\n variant=\"secondary\"\n className=\"flex-1 md:w-full\"\n size=\"lg\"\n onClick={handleLearnMore}\n disabled={!isAvailable}\n >\n {copy.learnMoreText}\n </Button>\n\n {/* Shop Now \u6309\u94AE */}\n <Button\n variant=\"primary\"\n className=\"flex-1 md:w-full\"\n size=\"lg\"\n onClick={handleShopNow}\n disabled={!isAvailable || isBuying}\n loading={isBuying}\n >\n {copy.shopNowText}\n </Button>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default MemberPriceItem\n"],
5
+ "mappings": "AA6DQ,cAAAA,EA4CE,QAAAC,MA5CF,oBA7DR,OAAS,UAAAC,EAAQ,QAAAC,EAAM,WAAAC,MAAe,wBACtC,OAAS,WAAAC,MAAe,QAGxB,OAAS,eAAAC,MAAmB,mBAC5B,OAAS,cAAcC,EAAI,kBAAAC,EAAgB,sBAAAC,EAAoB,aAAAC,MAAiB,gBAChF,OAAS,qBAAAC,MAAyB,sBAElC,SAASC,EAAgB,CACvB,SAAAC,EACA,KAAAC,EACA,UAAAC,CACF,EAIG,CACD,KAAM,CAAE,MAAAC,EAAO,OAAAC,CAAO,EAAIR,EAAmB,EACvC,CAAE,QAAAS,CAAQ,EAAIP,EAAkB,EAChCQ,EAAUX,EAAe,SAASQ,CAAK,EAGvC,CAAE,QAASI,EAAQ,WAAYC,CAAS,EAAIX,EAAU,CAAC,EAAG,CAAE,aAAc,EAAK,CAAC,EAEhFY,EAAcjB,EAAQ,IACnBQ,EAAS,gBAAgB,iBAC/B,CAACA,EAAS,gBAAgB,gBAAgB,CAAC,EAGxCU,EAAkB,IAAM,CAC5B,OAAO,SAAS,KAAO,aAAaV,EAAS,QAAQ,MAAM,EAC7D,EAGMW,EAAgB,IAAM,CAC1BJ,EAAO,CACL,iBAAkB,CAChB,CACE,IAAK,eACL,MAAO,OAAOF,GAAS,YAAc,CAAC,CACxC,CACF,EACA,UAAW,CACT,CACE,QAASL,EAAS,eAClB,SAAU,CACZ,CACF,CACF,CAAC,CACH,EAEA,OACEZ,EAAC,OACC,UAAWM,EACT,8EACA,CAACY,GAAW,+BACZJ,CACF,EAGC,UAAAD,EAAK,gBACJd,EAACI,EAAA,CACC,UAAU,kDACV,aAAa,yBACb,OAAQU,EAAK,eAAe,IAC5B,IAAKA,EAAK,eAAe,KAAO,eAClC,EAIFd,EAAC,KAAE,KAAM,aAAaa,EAAS,QAAQ,MAAM,GAAI,UAAWN,EAAG,+BAA+B,EAC5F,SAAAP,EAACI,EAAA,CACC,UAAU,oBACV,aAAa,iBACb,OACES,GAAU,gBAAgB,YAAY,QAAQ,gBAC9CA,GAAU,QAAQ,OAAO,KACzBA,GAAU,gBAAgB,OAAO,IAEpC,EACH,EAGAZ,EAAC,OAAI,UAAWM,EAAG,iBAAiB,EAElC,UAAAP,EAACG,EAAA,CACC,KAAMU,GAAU,SAAS,MACzB,MAAOA,GAAU,SAAS,MAC1B,UAAU,oHACZ,EAGAZ,EAAC,OAAI,UAAU,oCAEb,UAAAD,EAACG,EAAA,CACC,KAAMW,EAAK,iBACX,UAAWP,EACT,iHACAS,IAAU,cACR,iHACJ,EACA,GAAG,IACL,EAGAf,EAAC,OAAI,UAAU,8BACb,UAAAD,EAACG,EAAA,CACC,KAAMG,EAAY,CAChB,OAAQO,EAAS,YACjB,aAAcA,GAAU,gBAAgB,MAAM,cAAgB,MAC9D,OAAQI,CACV,CAAC,EACD,UAAU,uGACV,GAAG,OACL,EACAjB,EAACG,EAAA,CACC,KAAMG,EAAY,CAChB,OAAQO,EAAS,cACjB,aAAcA,GAAU,gBAAgB,MAAM,cAAgB,MAC9D,OAAQI,CACV,CAAC,EACD,UAAU,oHACV,GAAG,OACL,GACF,EAGAhB,EAAC,OAAI,UAAU,oCAEb,UAAAD,EAACE,EAAA,CACC,QAAQ,YACR,UAAU,mBACV,KAAK,KACL,QAASqB,EACT,SAAU,CAACD,EAEV,SAAAR,EAAK,cACR,EAGAd,EAACE,EAAA,CACC,QAAQ,UACR,UAAU,mBACV,KAAK,KACL,QAASsB,EACT,SAAU,CAACF,GAAeD,EAC1B,QAASA,EAER,SAAAP,EAAK,YACR,GACF,GACF,GACF,GACF,CAEJ,CAEA,IAAOW,EAAQb",
6
+ "names": ["jsx", "jsxs", "Button", "Text", "Picture", "useMemo", "formatPrice", "cn", "ROUNDED_BRANDS", "useHeadlessContext", "useBuyNow", "useCreditsContext", "MemberPriceItem", "itemData", "copy", "className", "brand", "locale", "profile", "rounded", "buyNow", "isBuying", "isAvailable", "handleLearnMore", "handleShopNow", "MemberPriceItem_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { CreditsMemberPrice } from './CreditsMemberPrice';
2
+ export * from './type';
@@ -0,0 +1,2 @@
1
+ import{CreditsMemberPrice as o}from"./CreditsMemberPrice";export*from"./type";export{o as CreditsMemberPrice};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsMemberPrice/index.ts"],
4
+ "sourcesContent": ["export { CreditsMemberPrice } from './CreditsMemberPrice'\nexport * from './type'\n"],
5
+ "mappings": "AAAA,OAAS,sBAAAA,MAA0B,uBACnC,WAAc",
6
+ "names": ["CreditsMemberPrice"]
7
+ }
@@ -0,0 +1,64 @@
1
+ import { Product, ProductVariant } from '@anker-in/lib';
2
+ type MemberPriceItemConfig = {
3
+ title: string;
4
+ image: {
5
+ url: string;
6
+ };
7
+ mobileImage: {
8
+ url: string;
9
+ };
10
+ memberPriceRuleId: string;
11
+ memberPrice?: number;
12
+ };
13
+ type RedeemableItemConfig = {
14
+ title: string;
15
+ desc: string;
16
+ price: number;
17
+ credit: string;
18
+ rules: string;
19
+ image: {
20
+ url: string;
21
+ };
22
+ mobileImage: {
23
+ url: string;
24
+ };
25
+ redeemId: number;
26
+ };
27
+ export type TabConfig = {
28
+ label: string;
29
+ type: 'memberPrice' | 'redeem';
30
+ };
31
+ export type CreditsMemberPriceCopy = {
32
+ title: string;
33
+ tabs: TabConfig[];
34
+ memberPriceTab: {
35
+ memberPriceRuleId: string;
36
+ learnMoreText: string;
37
+ shopNowText: string;
38
+ memberPriceLabel: string;
39
+ memberPriceImg?: {
40
+ url: string;
41
+ alt?: string;
42
+ };
43
+ };
44
+ redeemTab: {
45
+ list: (RedeemableItemConfig & {
46
+ products: {
47
+ handle: string;
48
+ sku: string;
49
+ }[];
50
+ })[];
51
+ soldOut: string;
52
+ unlockRewards: string;
53
+ btnRedeem: string;
54
+ off: string;
55
+ };
56
+ };
57
+ export type MemberPriceProduct = {
58
+ product: Product;
59
+ productVariant: ProductVariant;
60
+ config?: MemberPriceItemConfig;
61
+ memberPrice: number;
62
+ originalPrice: number;
63
+ };
64
+ export {};
@@ -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,4 @@
1
+ import { CreditsNavigationCopy } from './type';
2
+ export declare const CreditsNavigation: ({ copy }: {
3
+ copy: CreditsNavigationCopy;
4
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import{jsx as a}from"react/jsx-runtime";import{useEffect as x,useState as h,useRef as w,useCallback as C}from"react";import{classNames as c}from"@anker-in/lib";import{Container as I}from"@anker-in/headless-ui";const R=({copy:d})=>{const[m,b]=h(""),t=w(null),f=e=>{const o=document.getElementById(e);if(o){const s=o.getBoundingClientRect().top+window.pageYOffset-56;window.scrollTo({top:s,behavior:"smooth"})}},p=C(()=>{t.current&&t.current.disconnect();const e=new Map,o=r=>{r.forEach(n=>{const l=n.target.id;if(!l)return;const v=n.intersectionRect.height,u=n.intersectionRect.width,g=v*u;e.set(l,n.isIntersecting?g:0)});let i=0,s="";e.forEach((n,l)=>{n>i&&(i=n,s=l)}),s&&s!==m&&b(s)};t.current=new IntersectionObserver(o,{threshold:[0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1],rootMargin:"-56px 0px 0px 0px"}),d.items.forEach(r=>{const i=document.getElementById(r.targetId);i&&t.current&&t.current.observe(i)})},[d.items,m]);return x(()=>(p(),()=>{t.current&&t.current.disconnect()}),[p]),a("nav",{className:c("sticky top-0 z-50 bg-white"),children:a(I,{asChild:!0,children:a("div",{className:c("md:overflow-x-auto md:overflow-y-hidden md:-mx-[16px] md:px-[16px]","md:scrollbar-hide md:[&::-webkit-scrollbar]:hidden md:[-ms-overflow-style:none] md:[scrollbar-width:none]"),children:a("ul",{className:c("flex items-end gap-[24px] pt-[16px] md:gap-[16px] md:pr-[16px]"),children:d.items.map((e,o)=>{const r=m===e.targetId;return a("li",{className:c("md:flex-shrink-0"),children:a("button",{onClick:()=>f(e.targetId),className:c("pb-[16px] text-[14px] font-bold tracking-[-0.28px] leading-[1.4]","transition-all duration-200 relative border-b-4 whitespace-nowrap",r?"text-[#080a0f] border-brand-1":"text-[#4a4c56] hover:text-[#080a0f] border-transparent"),children:e.label})},o)})})})})})};export{R as CreditsNavigation};
2
+ //# sourceMappingURL=CreditsNavigation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsNavigation/CreditsNavigation.tsx"],
4
+ "sourcesContent": ["import { useEffect, useState, useRef, useCallback } from 'react'\nimport { classNames as cn } from '@anker-in/lib'\nimport { Container } from '@anker-in/headless-ui'\nimport { CreditsNavigationCopy } from './type'\n\nexport const CreditsNavigation = ({ copy }: { copy: CreditsNavigationCopy }) => {\n const [activeId, setActiveId] = useState<string>('')\n const observerRef = useRef<IntersectionObserver | null>(null)\n\n // \u5E73\u6ED1\u6EDA\u52A8\u5230\u76EE\u6807\u6A21\u5757\n const scrollToSection = (targetId: string) => {\n const element = document.getElementById(targetId)\n if (element) {\n const navHeight = 56 // \u5BFC\u822A\u680F\u9AD8\u5EA6\n const elementPosition = element.getBoundingClientRect().top + window.pageYOffset\n const offsetPosition = elementPosition - navHeight\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth',\n })\n }\n }\n\n // \u4F7F\u7528 Intersection Observer \u76D1\u542C\u6A21\u5757\u53EF\u89C1\u6027\n const setupObserver = useCallback(() => {\n // \u6E05\u7406\u4E4B\u524D\u7684 observer\n if (observerRef.current) {\n observerRef.current.disconnect()\n }\n\n // \u8BA1\u7B97\u6BCF\u4E2A\u5143\u7D20\u5728\u89C6\u53E3\u4E2D\u7684\u53EF\u89C1\u9762\u79EF\n const visibilityMap = new Map<string, number>()\n\n const observerCallback = (entries: IntersectionObserverEntry[]) => {\n entries.forEach(entry => {\n const id = entry.target.id\n if (!id) return\n\n // \u8BA1\u7B97\u53EF\u89C1\u9762\u79EF\n const visibleHeight = entry.intersectionRect.height\n const visibleWidth = entry.intersectionRect.width\n const visibleArea = visibleHeight * visibleWidth\n\n visibilityMap.set(id, entry.isIntersecting ? visibleArea : 0)\n })\n\n // \u627E\u51FA\u53EF\u89C1\u9762\u79EF\u6700\u5927\u7684\u5143\u7D20\n let maxArea = 0\n let maxId = ''\n\n visibilityMap.forEach((area, id) => {\n if (area > maxArea) {\n maxArea = area\n maxId = id\n }\n })\n\n if (maxId && maxId !== activeId) {\n setActiveId(maxId)\n }\n }\n\n // \u521B\u5EFA\u65B0\u7684 observer\n observerRef.current = new IntersectionObserver(observerCallback, {\n threshold: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],\n rootMargin: '-56px 0px 0px 0px', // \u8003\u8651\u5BFC\u822A\u680F\u9AD8\u5EA6\n })\n\n // \u89C2\u5BDF\u6240\u6709\u76EE\u6807\u5143\u7D20\n copy.items.forEach(item => {\n const element = document.getElementById(item.targetId)\n if (element && observerRef.current) {\n observerRef.current.observe(element)\n }\n })\n }, [copy.items, activeId])\n\n useEffect(() => {\n setupObserver()\n\n return () => {\n if (observerRef.current) {\n observerRef.current.disconnect()\n }\n }\n }, [setupObserver])\n\n return (\n <nav className={cn('sticky top-0 z-50 bg-white')}>\n <Container asChild>\n <div\n className={cn(\n 'md:overflow-x-auto md:overflow-y-hidden md:-mx-[16px] md:px-[16px]',\n 'md:scrollbar-hide md:[&::-webkit-scrollbar]:hidden md:[-ms-overflow-style:none] md:[scrollbar-width:none]'\n )}\n >\n <ul className={cn('flex items-end gap-[24px] pt-[16px] md:gap-[16px] md:pr-[16px]')}>\n {copy.items.map((item, index) => {\n const isActive = activeId === item.targetId\n return (\n <li key={index} className={cn('md:flex-shrink-0')}>\n <button\n onClick={() => scrollToSection(item.targetId)}\n className={cn(\n 'pb-[16px] text-[14px] font-bold tracking-[-0.28px] leading-[1.4]',\n 'transition-all duration-200 relative border-b-4 whitespace-nowrap',\n isActive\n ? 'text-[#080a0f] border-brand-1'\n : 'text-[#4a4c56] hover:text-[#080a0f] border-transparent'\n )}\n >\n {item.label}\n </button>\n </li>\n )\n })}\n </ul>\n </div>\n </Container>\n </nav>\n )\n}\n"],
5
+ "mappings": "AAsGkB,cAAAA,MAAA,oBAtGlB,OAAS,aAAAC,EAAW,YAAAC,EAAU,UAAAC,EAAQ,eAAAC,MAAmB,QACzD,OAAS,cAAcC,MAAU,gBACjC,OAAS,aAAAC,MAAiB,wBAGnB,MAAMC,EAAoB,CAAC,CAAE,KAAAC,CAAK,IAAuC,CAC9E,KAAM,CAACC,EAAUC,CAAW,EAAIR,EAAiB,EAAE,EAC7CS,EAAcR,EAAoC,IAAI,EAGtDS,EAAmBC,GAAqB,CAC5C,MAAMC,EAAU,SAAS,eAAeD,CAAQ,EAChD,GAAIC,EAAS,CAGX,MAAMC,EADkBD,EAAQ,sBAAsB,EAAE,IAAM,OAAO,YAC5B,GAEzC,OAAO,SAAS,CACd,IAAKC,EACL,SAAU,QACZ,CAAC,CACH,CACF,EAGMC,EAAgBZ,EAAY,IAAM,CAElCO,EAAY,SACdA,EAAY,QAAQ,WAAW,EAIjC,MAAMM,EAAgB,IAAI,IAEpBC,EAAoBC,GAAyC,CACjEA,EAAQ,QAAQC,GAAS,CACvB,MAAMC,EAAKD,EAAM,OAAO,GACxB,GAAI,CAACC,EAAI,OAGT,MAAMC,EAAgBF,EAAM,iBAAiB,OACvCG,EAAeH,EAAM,iBAAiB,MACtCI,EAAcF,EAAgBC,EAEpCN,EAAc,IAAII,EAAID,EAAM,eAAiBI,EAAc,CAAC,CAC9D,CAAC,EAGD,IAAIC,EAAU,EACVC,EAAQ,GAEZT,EAAc,QAAQ,CAACU,EAAMN,IAAO,CAC9BM,EAAOF,IACTA,EAAUE,EACVD,EAAQL,EAEZ,CAAC,EAEGK,GAASA,IAAUjB,GACrBC,EAAYgB,CAAK,CAErB,EAGAf,EAAY,QAAU,IAAI,qBAAqBO,EAAkB,CAC/D,UAAW,CAAC,EAAG,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,CAAC,EAC7D,WAAY,mBACd,CAAC,EAGDV,EAAK,MAAM,QAAQoB,GAAQ,CACzB,MAAMd,EAAU,SAAS,eAAec,EAAK,QAAQ,EACjDd,GAAWH,EAAY,SACzBA,EAAY,QAAQ,QAAQG,CAAO,CAEvC,CAAC,CACH,EAAG,CAACN,EAAK,MAAOC,CAAQ,CAAC,EAEzB,OAAAR,EAAU,KACRe,EAAc,EAEP,IAAM,CACPL,EAAY,SACdA,EAAY,QAAQ,WAAW,CAEnC,GACC,CAACK,CAAa,CAAC,EAGhBhB,EAAC,OAAI,UAAWK,EAAG,4BAA4B,EAC7C,SAAAL,EAACM,EAAA,CAAU,QAAO,GAChB,SAAAN,EAAC,OACC,UAAWK,EACT,qEACA,2GACF,EAEA,SAAAL,EAAC,MAAG,UAAWK,EAAG,gEAAgE,EAC/E,SAAAG,EAAK,MAAM,IAAI,CAACoB,EAAMC,IAAU,CAC/B,MAAMC,EAAWrB,IAAamB,EAAK,SACnC,OACE5B,EAAC,MAAe,UAAWK,EAAG,kBAAkB,EAC9C,SAAAL,EAAC,UACC,QAAS,IAAMY,EAAgBgB,EAAK,QAAQ,EAC5C,UAAWvB,EACT,mEACA,oEACAyB,EACI,gCACA,wDACN,EAEC,SAAAF,EAAK,MACR,GAZOC,CAaT,CAEJ,CAAC,EACH,EACF,EACF,EACF,CAEJ",
6
+ "names": ["jsx", "useEffect", "useState", "useRef", "useCallback", "cn", "Container", "CreditsNavigation", "copy", "activeId", "setActiveId", "observerRef", "scrollToSection", "targetId", "element", "offsetPosition", "setupObserver", "visibilityMap", "observerCallback", "entries", "entry", "id", "visibleHeight", "visibleWidth", "visibleArea", "maxArea", "maxId", "area", "item", "index", "isActive"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { CreditsNavigation } from './CreditsNavigation';
2
+ export type { CreditsNavigationCopy, NavigationItem } from './type';
@@ -0,0 +1,2 @@
1
+ import{CreditsNavigation as o}from"./CreditsNavigation";export{o as CreditsNavigation};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsNavigation/index.ts"],
4
+ "sourcesContent": ["export { CreditsNavigation } from './CreditsNavigation'\nexport type { CreditsNavigationCopy, NavigationItem } from './type'\n"],
5
+ "mappings": "AAAA,OAAS,qBAAAA,MAAyB",
6
+ "names": ["CreditsNavigation"]
7
+ }
@@ -0,0 +1,7 @@
1
+ export type NavigationItem = {
2
+ label: string;
3
+ targetId: string;
4
+ };
5
+ export type CreditsNavigationCopy = {
6
+ items: NavigationItem[];
7
+ };
@@ -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,4 +1,5 @@
1
1
  import { CreditsRedeemListCopy } from './type';
2
- export declare const CreditsRedeemList: ({ copy }: {
2
+ export declare const CreditsRedeemList: ({ copy, id }: {
3
3
  copy: CreditsRedeemListCopy;
4
+ id?: string;
4
5
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
- import{jsx as o,jsxs as Z}from"react/jsx-runtime";import{Container as S,Heading as D,Tabs as F,TabsList as H,TabsTrigger as z}from"@anker-in/headless-ui";import u from"classnames";import{useCallback as B,useMemo as L,useState as c}from"react";import U from"./RedeemCouponModal";import j from"./RedeemProductModal";import{useCreditsContext as q}from"../context/provider";import w from"../context/hooks/useRedeemableList";import{AlpcConsumeType as g,AlpcErrorCode as G}from"../context/const";import{useHeadlessContext as V,useProductsByHandles as J,gaTrack as K,ROUNDED_BRANDS as Q}from"@anker-in/lib";import{RedeemableItem as W}from"./RedeemableItem";import X from"../modal/rulesModal";import{useRegistration as Y}from"../../../components/registration";const ce=({copy:s})=>{const{profile:f,openSignUpPopup:x,gtm:{pageGroup:k},pageCommon:N}=q(),{authCodeActivate:b}=Y(),{brand:_}=V(),I=Q.includes(_),E=Object.keys(f||{}).length>0,[d,A]=c(s.list[0].label),[n,l]=c(void 0),[m,C]=c(),{listLoading:M,redeemableList:R,getRedeemableList:v}=w(),r=L(()=>R.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})),[s.list,d,R]),O=r.map(e=>e.handle),{data:y}=J({handles:O}),P=L(()=>s.list.find(t=>t.label===d)?.list.filter(t=>r.some(i=>i.id===t.id)).map(t=>{const i=r.find(a=>a.id===t.id),p=y?.find(a=>a.handle===i?.handle),h=p?.variants.find(a=>a.sku===i?.sku);return i?.consumeType===g.Product&&(!p||!h)?null:{alpc:r.find(a=>a.id===t.id),config:t,product:p,variant:h}}).filter(t=>t!==null),[r,y]),T=B(e=>{e===G.CodeLpcRuleInventoryNotEnough&&v()},[v]);return Z(S,{className:u("relative bg-[#F5F5F7]"),children:[o(D,{as:"h2",size:"4",html:s.title}),o(F,{shape:I?"rounded":"square",align:"left",className:u("sticky top-0 z-20 py-[24px] md:justify-center"),value:d.toString(),onValueChange:e=>{A(e),K({event:"ga4Event",event_name:"lp_navigation",event_parameters:{navigation:e,page_group:k}})},children:o(H,{children:s.list.map(e=>o(z,{value:e.label,children:e.label},e.label))})}),!!r?.length&&!M&&o("div",{className:u("relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3"),children:P?.map(e=>o(W,{copy:s,item:e,onRedeem:t=>{E?!f?.activated&&!b.isActivateSuccess?b.open():l(t):x()},onRulesOpen:C},e?.alpc?.id))}),n?.alpc?.consumeType===g.Coupon&&s?.redeemModal?.coupon&&n&&o(U,{isOpen:!!n,item:n,copy:s,onError:T,onClose:()=>{l(void 0)}}),n?.alpc?.consumeType===g.Product&&s?.redeemModal&&n&&o(j,{isOpen:!!n,item:n,copy:s,onError:T,onClose:()=>{l(void 0)}}),m&&o(X,{overlayClassName:"md:px-[16px] md:items-center",className:"md:h-fit md:rounded-b-[16px]",isOpen:m.length>0,onClose:()=>C([]),titleClassName:"border-b-transparent h-[56px]",rules:m,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:N?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{ce as CreditsRedeemList};
1
+ import{jsx as n,jsxs as ne}from"react/jsx-runtime";import{Container as H,Heading as z,Tabs as B,TabsList as U,TabsTrigger as j,Text as q}from"@anker-in/headless-ui";import u from"classnames";import{useCallback as w,useMemo as L,useState as g}from"react";import G from"./RedeemCouponModal";import V from"./RedeemProductModal";import{useCreditsContext as $}from"../context/provider";import J from"../context/hooks/useRedeemableList";import{AlpcConsumeType as f,AlpcErrorCode as K}from"../context/const";import{useHeadlessContext as Q,useProductsByHandles as W,gaTrack as X,ROUNDED_BRANDS as Y}from"@anker-in/lib";import{RedeemableItem as Z}from"./RedeemableItem";import ee from"../modal/rulesModal";import{useRegistration as te}from"../../../components/registration";import{numberFormat as se}from"../context/utils";const xe=({copy:t,id:N})=>{const{profile:l,openSignUpPopup:_,gtm:{pageGroup:k},pageCommon:I,creditInfo:A}=$(),{authCodeActivate:b}=te(),{brand:E}=Q(),S=Y.includes(E),C=Object.keys(l||{}).length>0,M=l?.activated,[d,O]=g(t.list[0].label),[o,m]=g(void 0),[p,v]=g(),{listLoading:P,redeemableList:x,getRedeemableList:R}=J(),i=L(()=>x.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,d,x]),D=i.map(e=>e.handle),{data:y}=W({handles:D}),F=L(()=>t.list.find(s=>s.label===d)?.list.filter(s=>i.some(r=>r.id===s.id)).map(s=>{const r=i.find(a=>a.id===s.id),c=y?.find(a=>a.handle===r?.handle),h=c?.variants.find(a=>a.sku===r?.sku);return r?.isLimited&&(!r?.remainingInventory||r.remainingInventory<=0)||r?.consumeType===f.Product&&(!c||!h)?null:{alpc:i.find(a=>a.id===s.id),config:s,product:c,variant:h}}).filter(s=>s!==null),[i,y]),T=w(e=>{e===K.CodeLpcRuleInventoryNotEnough&&R()},[R]);return ne(H,{id:N,className:u("relative bg-[#F5F5F7]"),children:[n(z,{as:"h2",size:"4",html:t.title}),C&&M&&n(q,{html:t.availableCredits?.replace("$credits",se(A?.available_credit||0).toString()),className:"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]",as:"p"}),n(B,{shape:S?"rounded":"square",align:"left",className:u("sticky top-0 z-20 py-[24px] md:justify-center"),value:d.toString(),onValueChange:e=>{O(e),X({event:"ga4Event",event_name:"lp_navigation",event_parameters:{navigation:e,page_group:k}})},children:n(U,{children:t.list.map(e=>n(j,{value:e.label,children:e.label},e.label))})}),!!i?.length&&!P&&n("div",{className:u("relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3"),children:F?.map(e=>n(Z,{copy:t,item:e,onRedeem:s=>{C?!l?.activated&&!b.isActivateSuccess?b.open():m(s):_()},onRulesOpen:v},e?.alpc?.id))}),o?.alpc?.consumeType===f.Coupon&&t?.redeemModal?.coupon&&o&&n(G,{isOpen:!!o,item:o,copy:t,onError:T,onClose:()=>{m(void 0)}}),o?.alpc?.consumeType===f.Product&&t?.redeemModal&&o&&n(V,{isOpen:!!o,item:o,copy:t,onError:T,onClose:()=>{m(void 0)}}),p&&n(ee,{overlayClassName:"md:px-[16px] md:items-center",className:"md:h-fit md:rounded-b-[16px]",isOpen:p.length>0,onClose:()=>v([]),titleClassName:"border-b-transparent h-[56px]",rules:p,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:I?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{xe 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, ROUNDED_BRANDS } from '@anker-in/lib'\nimport type { RedeemableItem as RedeemableItemType } from '../type'\nimport { RedeemableItem } from './RedeemableItem'\nimport RulesModal from '../modal/rulesModal'\nimport { CreditsRedeemListCopy } from './type'\nimport { useRegistration } from '../../../components/registration'\n\nexport const CreditsRedeemList = ({ copy }: { copy: CreditsRedeemListCopy }) => {\n const {\n profile,\n openSignUpPopup,\n gtm: { pageGroup },\n pageCommon,\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 => alpcItem.id === item.id))\n .map(item => {\n const alpcItem = alpcList.find(alpcItem => alpcItem.id === item.id)\n const product = products?.find(product => product.handle === alpcItem?.handle)\n const variant = product?.variants.find(variant => variant.sku === alpcItem?.sku)\n if (alpcItem?.consumeType === AlpcConsumeType.Product && (!product || !variant)) return null\n return {\n alpc: alpcList.find(alpcItem => alpcItem.id === 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 className={classNames('relative bg-[#F5F5F7]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n\n <Tabs\n shape={rounded ? 'rounded' : 'square'}\n align=\"left\"\n className={classNames('sticky top-0 z-20 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=\"md:h-fit md:rounded-b-[16px]\"\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": ["jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "classNames", "useCallback", "useMemo", "useState", "RedeemCouponModal", "RedeemProductModal", "useCreditsContext", "useRedeemableList", "AlpcConsumeType", "AlpcErrorCode", "useHeadlessContext", "useProductsByHandles", "gaTrack", "ROUNDED_BRANDS", "RedeemableItem", "RulesModal", "useRegistration", "CreditsRedeemList", "copy", "profile", "openSignUpPopup", "pageGroup", "pageCommon", "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, Text } 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, ROUNDED_BRANDS } from '@anker-in/lib'\nimport type { RedeemableItem as RedeemableItemType } from '../type'\nimport { RedeemableItem } from './RedeemableItem'\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 const isActivated = profile?.activated\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 => alpcItem.id === item.id))\n .map(item => {\n const alpcItem = alpcList.find(alpcItem => alpcItem.id === 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 => alpcItem.id === 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 && isActivated && (\n <Text\n html={copy.availableCredits?.replace('$credits', numberFormat(creditInfo?.available_credit || 0).toString())}\n className=\"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]\"\n as=\"p\"\n />\n )}\n\n <Tabs\n shape={rounded ? 'rounded' : 'square'}\n align=\"left\"\n className={classNames('sticky top-0 z-20 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=\"md:h-fit md:rounded-b-[16px]\"\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": ["jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "Text", "classNames", "useCallback", "useMemo", "useState", "RedeemCouponModal", "RedeemProductModal", "useCreditsContext", "useRedeemableList", "AlpcConsumeType", "AlpcErrorCode", "useHeadlessContext", "useProductsByHandles", "gaTrack", "ROUNDED_BRANDS", "RedeemableItem", "RulesModal", "useRegistration", "numberFormat", "CreditsRedeemList", "copy", "id", "profile", "openSignUpPopup", "pageGroup", "pageCommon", "creditInfo", "authCodeActivate", "brand", "rounded", "isLogin", "isActivated", "activeTab", "setActiveTab", "popRedeemData", "setPopRedeemData", "rules", "setRules", "listLoading", "redeemableList", "getRedeemableList", "alpcList", "item", "handles", "products", "list", "alpcItem", "product", "variant", "handleRedeemError", "errorCode", "value"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Picture as t,Text as s}from"@anker-in/headless-ui";const x=({errorInfo:r})=>a("div",{className:"mx-auto max-w-[404px] text-[16px] text-black/40",children:[e(t,{className:"mx-auto mb-[12px] h-[140px] w-[220px]",source:r.imageUrl}),e(s,{as:"div",className:"mt-[16px] text-center",html:r.message})]});export{x as Error};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Picture as t,Text as s}from"@anker-in/headless-ui";const x=({errorInfo:r})=>a("div",{className:"mx-auto max-w-[404px] text-[16px] text-black/40 py-[56px]",children:[e(t,{className:"mx-auto mb-[12px] h-[140px] w-[220px]",source:r.imageUrl}),e(s,{as:"div",className:"mt-[16px] text-center",html:r.message})]});export{x as Error};
2
2
  //# sourceMappingURL=Error.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/creditsRedeemList/RedeemProductModal/Error.tsx"],
4
- "sourcesContent": ["import { Picture, Text } from '@anker-in/headless-ui'\n\ntype ErrorProps = {\n errorInfo: { imageUrl: string; message: string }\n}\n\nexport const Error = ({ errorInfo }: ErrorProps) => {\n return (\n <div className=\"mx-auto max-w-[404px] text-[16px] text-black/40\">\n <Picture className=\"mx-auto mb-[12px] h-[140px] w-[220px]\" source={errorInfo.imageUrl} />\n <Text as=\"div\" className=\"mt-[16px] text-center\" html={errorInfo.message} />\n </div>\n )\n}\n"],
5
- "mappings": "AAQI,OACE,OAAAA,EADF,QAAAC,MAAA,oBARJ,OAAS,WAAAC,EAAS,QAAAC,MAAY,wBAMvB,MAAMC,EAAQ,CAAC,CAAE,UAAAC,CAAU,IAE9BJ,EAAC,OAAI,UAAU,kDACb,UAAAD,EAACE,EAAA,CAAQ,UAAU,wCAAwC,OAAQG,EAAU,SAAU,EACvFL,EAACG,EAAA,CAAK,GAAG,MAAM,UAAU,wBAAwB,KAAME,EAAU,QAAS,GAC5E",
4
+ "sourcesContent": ["import { Picture, Text } from '@anker-in/headless-ui'\n\ntype ErrorProps = {\n errorInfo: { imageUrl: string; message: string }\n}\n\nexport const Error = ({ errorInfo }: ErrorProps) => {\n return (\n <div className=\"mx-auto max-w-[404px] text-[16px] text-black/40 py-[56px]\">\n <Picture className=\"mx-auto mb-[12px] h-[140px] w-[220px]\" source={errorInfo.imageUrl} />\n <Text as=\"div\" className=\"mt-[16px] text-center\" html={errorInfo.message} />\n </div>\n )\n}\n"],
5
+ "mappings": "AAQI,OACE,OAAAA,EADF,QAAAC,MAAA,oBARJ,OAAS,WAAAC,EAAS,QAAAC,MAAY,wBAMvB,MAAMC,EAAQ,CAAC,CAAE,UAAAC,CAAU,IAE9BJ,EAAC,OAAI,UAAU,4DACb,UAAAD,EAACE,EAAA,CAAQ,UAAU,wCAAwC,OAAQG,EAAU,SAAU,EACvFL,EAACG,EAAA,CAAK,GAAG,MAAM,UAAU,wBAAwB,KAAME,EAAU,QAAS,GAC5E",
6
6
  "names": ["jsx", "jsxs", "Picture", "Text", "Error", "errorInfo"]
7
7
  }
@@ -1,5 +1,6 @@
1
1
  export type CreditsRedeemListCopy = {
2
2
  title: string;
3
+ availableCredits: string;
3
4
  unlockRewards: string;
4
5
  btnRedeem: string;
5
6
  list: {
@@ -1,2 +1,4 @@
1
1
  import { type CreditsWaysToGetCreditsProps } from './type';
2
- export declare const CreditsWaysToGetCredits: ({ copy, classNames }: CreditsWaysToGetCreditsProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const CreditsWaysToGetCredits: ({ copy, classNames, id }: CreditsWaysToGetCreditsProps & {
3
+ id?: string;
4
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
- import{Fragment as Q,jsx as t,jsxs as i}from"react/jsx-runtime";import{Button as z,Container as A,Heading as p,Picture as b,Text as B}from"@anker-in/headless-ui";import{ChevronDownIcon as P,ChevronUpIcon as G}from"@heroicons/react/24/outline";import{motion as W}from"framer-motion";import{useMemo as _,useState as a}from"react";import{TaskType as h}from"./type";import{useActions as j}from"./useActions";import{useCreditsContext as q}from"../context/provider";import{classNames as c,useHeadlessContext as E,ROUNDED_BRANDS as H}from"@anker-in/lib";import{useRegistration as V}from"../../registration";import{CreditsUploadReceiptModal as J}from"../modal/creditsUploadReceiptModal";import{CreditsSubscribeModal as K}from"../modal/subscribeModal";const ae=({copy:s,classNames:v})=>{const[l,g]=a(!1),{profile:I}=q(),{authCodeActivate:y}=V(),{brand:D}=E(),k=H.includes(D),m=!!I,[R,C]=a(!1),[T,u]=a(!1),[N,U]=a(!1),[w,L]=a(!1),{actions:x}=j({copy:s,subscribe:{openSubscribePopup:()=>u(!0),isSuccess:N},uploadReceipt:{openUploadReceiptPopup:()=>C(!0),isSuccess:w}}),M=_(()=>{const e=s.list.map(n=>{if(!x[n.id])return;const{finished:o,notLogin:F,notFinished:f,completed:O}=x[n.id];let d="",r,S;return m?o?(d=O.buttonLabel,r=void 0):(d=f.buttonLabel,r=f.handleClick,S=f.link):(d=F.buttonLabel,r=F.handleClick),{...n,buttonLabel:d,handleClick:r,finished:o,link:S}}).filter(Boolean);return m?e.sort((n,o)=>n?.finished&&!o?.finished?1:!n?.finished&&o?.finished?-1:0):e},[x,s.list,m]);return i(A,{id:"ways-to-get-credits",className:" bg-[#F5F5F7] [&>div]:l:!px-0",children:[i("div",{className:c("rounded-[16px] bg-[#1D1D1F] py-[64px] px-[140px] text-white md:px-[16px] l:rounded-none md-l:px-[32px] l-xl:px-[77px]",!k&&"rounded-none"),children:[t(p,{as:"h2",size:4,html:s?.title,className:"text-center l:pl-[16px] l:text-left"}),i("div",{className:"mt-[64px] flex items-center justify-between md:mt-[64px] l:mt-[24px] l:flex-col-reverse l:items-start md-l:mt-[32px]",children:[i("div",{className:"pl-[16px] l:mt-[40px] desktop:pl-[24px] lg-desktop:pl-[32px]",children:[t(p,{size:3,as:"h3",html:s.subtitle,className:v?.subtitle}),i("div",{className:"mt-[8px] flex items-center",children:[s.creditsIcon?.url&&t(b,{className:"size-[48px] mr-[8px] stroke-brand xl:size-[30px] [&_path]:stroke-brand",source:s.creditsIcon.url,alt:s.creditsIcon.alt||"credits"}),t(p,{html:s.equalCredits,size:4,as:"h3",className:c("mt-2 text-white md:text-[24px]",v?.equalCreditsText)})]})]}),t(b,{className:"w-full laptop:w-[50%]",source:s.mainImage?.url})]}),i("div",{className:"relative",children:[i(W.div,{className:c("relative mt-[64px] grid grid-cols-3 gap-[16px] overflow-hidden md:mt-[16px] md:grid-cols-1 l:gap-[12px] min-md:!h-auto md-l:mt-[32px] md-l:grid-cols-2"),initial:{height:512},animate:{height:l?"auto":512},transition:{duration:.3},onAnimationComplete:()=>{if(!l&&window.screen.width<768){const e=document.getElementById("ways-to-get-credits");e&&e.scrollIntoView({behavior:"smooth",block:"end"})}},children:[M.map(e=>i("div",{className:c("flex min-h-[160px] flex-col justify-between rounded-[16px] bg-white p-[16px] text-[#1D1D1F] desktop:min-h-[192px] desktop:p-[24px] lg-desktop:min-h-[240px] lg-desktop:p-[32px]",!k&&"rounded-none"),children:[i("div",{children:[t(p,{as:"h4",html:e.title,size:2,className:"text-pretty"}),i("div",{className:"mt-[4px] flex items-center",children:[t(b,{className:"size-[24px] xl:size-[18px] [&_path]:size-full",source:"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/20250902-153351.png?v=1756798450"}),t(B,{as:"p",html:e.credits,size:2,className:"ml-[4px] mt-[6px] lg-desktop:text-[18px]"})]})]}),e.handleClick&&!(e.id===h.UploadReceipt&&w)&&!(e.id===h.Activate&&y.isActivateSuccess)&&!(e.id===h.Subscribe&&N)?t(z,{as:e.link?"a":"button",...e.link&&{href:e.link},...e.handleClick&&{onClick:e.handleClick},variant:"primary",size:"lg",className:"mt-[24px] w-fit",children:e.buttonLabel}):t(z,{variant:"primary",size:"lg",className:"mt-[24px] w-fit",disabled:!0,children:e.buttonLabel})]},e.id)),!l&&t("div",{className:"absolute inset-0 pointer-events-none min-md:hidden",style:{background:"linear-gradient(180deg, rgba(29, 29, 31, 0) 66.37%, #1D1D1F 100%)"}})]}),l?t("button",{className:"mx-auto mt-[12px] block w-fit min-md:hidden",onClick:()=>{g(!1)},children:t(G,{className:"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]"})}):t(Q,{children:t("div",{className:"absolute bottom-0 flex w-full translate-y-1/2 justify-center min-md:hidden",children:t("button",{className:"w-fit",onClick:()=>g(!l),children:t(P,{className:"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]"})})})})]})]}),s.receipt&&t(J,{isOpen:R,onClose:()=>{C(!1)},copy:s.receipt,onSuccess:()=>{L(!0)}}),s.subscribe&&t(K,{copy:s.subscribe,onSuccess:()=>{U(!0),setTimeout(()=>{u(!1)},3e3)},isOpen:T,onClose:()=>{u(!1)}})]})};export{ae as CreditsWaysToGetCredits};
1
+ import{Fragment as X,jsx as t,jsxs as i}from"react/jsx-runtime";import{Button as z,Container as B,Heading as p,Picture as b,Text as P}from"@anker-in/headless-ui";import{ChevronDownIcon as G,ChevronUpIcon as W}from"@heroicons/react/24/outline";import{motion as _}from"framer-motion";import{useMemo as j,useState as a}from"react";import{TaskType as h}from"./type";import{useActions as q}from"./useActions";import{useCreditsContext as E}from"../context/provider";import{classNames as c,useHeadlessContext as H,ROUNDED_BRANDS as V}from"@anker-in/lib";import{useRegistration as J}from"../../registration";import{CreditsUploadReceiptModal as K}from"../modal/creditsUploadReceiptModal";import{CreditsSubscribeModal as Q}from"../modal/subscribeModal";const de=({copy:s,classNames:v,id:I})=>{const[l,g]=a(!1),{profile:y}=E(),{authCodeActivate:D}=J(),{brand:R}=H(),k=V.includes(R),m=!!y,[T,C]=a(!1),[U,u]=a(!1),[N,L]=a(!1),[w,M]=a(!1),{actions:x}=q({copy:s,subscribe:{openSubscribePopup:()=>u(!0),isSuccess:N},uploadReceipt:{openUploadReceiptPopup:()=>C(!0),isSuccess:w}}),O=j(()=>{const e=s.list.map(n=>{if(!x[n.id])return;const{finished:o,notLogin:F,notFinished:f,completed:A}=x[n.id];let d="",r,S;return m?o?(d=A.buttonLabel,r=void 0):(d=f.buttonLabel,r=f.handleClick,S=f.link):(d=F.buttonLabel,r=F.handleClick),{...n,buttonLabel:d,handleClick:r,finished:o,link:S}}).filter(Boolean);return m?e.sort((n,o)=>n?.finished&&!o?.finished?1:!n?.finished&&o?.finished?-1:0):e},[x,s.list,m]);return i(B,{id:I,className:" bg-[#F5F5F7] [&>div]:l:!px-0",children:[i("div",{className:c("rounded-[16px] bg-[#1D1D1F] py-[64px] px-[140px] text-white md:px-[16px] l:rounded-none md-l:px-[32px] l-xl:px-[77px]",!k&&"rounded-none"),children:[t(p,{as:"h2",size:4,html:s?.title,className:"text-center l:pl-[16px] l:text-left"}),i("div",{className:"mt-[64px] flex items-center justify-between md:mt-[64px] l:mt-[24px] l:flex-col-reverse l:items-start md-l:mt-[32px]",children:[i("div",{className:"pl-[16px] l:mt-[40px] desktop:pl-[24px] lg-desktop:pl-[32px]",children:[t(p,{size:3,as:"h3",html:s.subtitle,className:v?.subtitle}),i("div",{className:"mt-[8px] flex items-center",children:[s.creditsIcon?.url&&t(b,{className:"size-[48px] mr-[8px] stroke-brand xl:size-[30px] [&_path]:stroke-brand",source:s.creditsIcon.url,alt:s.creditsIcon.alt||"credits"}),t(p,{html:s.equalCredits,size:4,as:"h3",className:c("mt-2 text-white md:text-[24px]",v?.equalCreditsText)})]})]}),t(b,{className:"w-full laptop:w-[50%]",source:s.mainImage?.url})]}),i("div",{className:"relative",children:[i(_.div,{className:c("relative mt-[64px] grid grid-cols-3 gap-[16px] overflow-hidden md:mt-[16px] md:grid-cols-1 l:gap-[12px] min-md:!h-auto md-l:mt-[32px] md-l:grid-cols-2"),initial:{height:512},animate:{height:l?"auto":512},transition:{duration:.3},onAnimationComplete:()=>{if(!l&&window.screen.width<768){const e=document.getElementById("ways-to-get-credits");e&&e.scrollIntoView({behavior:"smooth",block:"end"})}},children:[O.map(e=>i("div",{className:c("flex min-h-[160px] flex-col justify-between rounded-[16px] bg-white p-[16px] text-[#1D1D1F] desktop:min-h-[192px] desktop:p-[24px] lg-desktop:min-h-[240px] lg-desktop:p-[32px]",!k&&"rounded-none"),children:[i("div",{children:[t(p,{as:"h4",html:e.title,size:2,className:"text-pretty"}),i("div",{className:"mt-[4px] flex items-center",children:[t(b,{className:"size-[24px] xl:size-[18px] [&_path]:size-full",source:"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/20250902-153351.png?v=1756798450"}),t(P,{as:"p",html:e.credits,size:2,className:"ml-[4px] mt-[6px] lg-desktop:text-[18px]"})]})]}),e.handleClick&&!(e.id===h.UploadReceipt&&w)&&!(e.id===h.Activate&&D.isActivateSuccess)&&!(e.id===h.Subscribe&&N)?t(z,{as:e.link?"a":"button",...e.link&&{href:e.link},...e.handleClick&&{onClick:e.handleClick},variant:"primary",size:"lg",className:"mt-[24px] w-fit",children:e.buttonLabel}):t(z,{variant:"primary",size:"lg",className:"mt-[24px] w-fit",disabled:!0,children:e.buttonLabel})]},e.id)),!l&&t("div",{className:"absolute inset-0 pointer-events-none min-md:hidden",style:{background:"linear-gradient(180deg, rgba(29, 29, 31, 0) 66.37%, #1D1D1F 100%)"}})]}),l?t("button",{className:"mx-auto mt-[12px] block w-fit min-md:hidden",onClick:()=>{g(!1)},children:t(W,{className:"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]"})}):t(X,{children:t("div",{className:"absolute bottom-0 flex w-full translate-y-1/2 justify-center min-md:hidden",children:t("button",{className:"w-fit",onClick:()=>g(!l),children:t(G,{className:"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]"})})})})]})]}),s.receipt&&t(K,{isOpen:T,onClose:()=>{C(!1)},copy:s.receipt,onSuccess:()=>{M(!0)}}),s.subscribe&&t(Q,{copy:s.subscribe,onSuccess:()=>{L(!0),setTimeout(()=>{u(!1)},3e3)},isOpen:U,onClose:()=>{u(!1)}})]})};export{de as CreditsWaysToGetCredits};
2
2
  //# sourceMappingURL=CreditsWaysToGetCredits.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx"],
4
- "sourcesContent": ["import { Button, Container, Heading, Picture, Text } from '@anker-in/headless-ui'\nimport { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'\nimport { motion } from 'framer-motion'\nimport { useMemo, useState } from 'react'\n\nimport { TaskType, type CreditsWaysToGetCreditsProps } from './type'\nimport { useActions } from './useActions'\nimport { useCreditsContext } from '../context/provider'\nimport { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'\nimport { useRegistration } from '../../registration'\nimport { CreditsUploadReceiptModal } from '../modal/creditsUploadReceiptModal'\nimport { CreditsSubscribeModal } from '../modal/subscribeModal'\n\nexport const CreditsWaysToGetCredits = ({ copy, classNames }: CreditsWaysToGetCreditsProps) => {\n const [showMore, setShowMore] = useState(false)\n const { profile } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const isLogin = !!profile\n\n const [isUploadReceiptModalOpen, setIsUploadReceiptModalOpen] = useState(false)\n const [isSubscribeModalOpen, setIsSubscribeModalOpen] = useState(false)\n const [isSubscribeSuccess, setIsSubscribeSuccess] = useState(false)\n const [isUploadReceiptSuccess, setIsUploadReceiptSuccess] = useState(false)\n\n const { actions } = useActions({\n copy,\n subscribe: {\n openSubscribePopup: () => setIsSubscribeModalOpen(true),\n isSuccess: isSubscribeSuccess,\n },\n uploadReceipt: {\n openUploadReceiptPopup: () => setIsUploadReceiptModalOpen(true),\n isSuccess: isUploadReceiptSuccess,\n },\n })\n const list = useMemo(() => {\n const list = copy.list\n .map(item => {\n if (!actions[item.id as keyof typeof actions]) {\n return undefined\n }\n const { finished, notLogin, notFinished, completed } = actions[item.id as keyof typeof actions]\n let buttonLabel = ''\n let handleClick = undefined\n let link = undefined\n if (!isLogin) {\n buttonLabel = notLogin.buttonLabel\n handleClick = notLogin.handleClick\n } else if (finished) {\n buttonLabel = completed.buttonLabel\n handleClick = undefined\n } else {\n buttonLabel = notFinished.buttonLabel\n handleClick = notFinished.handleClick\n link = (notFinished as { link: string }).link\n }\n return {\n ...item,\n buttonLabel,\n handleClick,\n finished,\n link,\n }\n })\n .filter(Boolean) as {\n title: string\n credits: string\n id: TaskType\n buttonLabel: string\n finished: boolean\n link: string\n handleClick: (() => void) | undefined\n }[]\n\n // \u767B\u5F55\u540E\uFF0C\u4FDD\u7559\u539F\u987A\u5E8F\uFF0C\u5C06\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u653E\u5728\u6700\u540E\n if (isLogin) {\n return list.sort((a, b) => {\n if (a?.finished && !b?.finished) {\n return 1 // a\u5DF2\u5B8C\u6210\uFF0Cb\u672A\u5B8C\u6210\uFF0Ca\u6392\u5728\u540E\u9762\n }\n if (!a?.finished && b?.finished) {\n return -1 // a\u672A\u5B8C\u6210\uFF0Cb\u5DF2\u5B8C\u6210\uFF0Ca\u6392\u5728\u524D\u9762\n }\n return 0 // \u90FD\u5DF2\u5B8C\u6210\u6216\u90FD\u672A\u5B8C\u6210\uFF0C\u4FDD\u6301\u539F\u987A\u5E8F\n })\n } else {\n return list\n }\n }, [actions, copy.list, isLogin])\n\n return (\n <Container id=\"ways-to-get-credits\" className=\" bg-[#F5F5F7] [&>div]:l:!px-0\">\n <div\n className={cn(\n 'rounded-[16px] bg-[#1D1D1F] py-[64px] px-[140px] text-white md:px-[16px] l:rounded-none md-l:px-[32px] l-xl:px-[77px]',\n !rounded && 'rounded-none'\n )}\n >\n <Heading as=\"h2\" size={4} html={copy?.title} className=\"text-center l:pl-[16px] l:text-left\" />\n <div className=\"mt-[64px] flex items-center justify-between md:mt-[64px] l:mt-[24px] l:flex-col-reverse l:items-start md-l:mt-[32px]\">\n <div className=\"pl-[16px] l:mt-[40px] desktop:pl-[24px] lg-desktop:pl-[32px]\">\n <Heading size={3} as=\"h3\" html={copy.subtitle} className={classNames?.subtitle} />\n <div className=\"mt-[8px] flex items-center\">\n {copy.creditsIcon?.url && (\n <Picture\n className=\"size-[48px] mr-[8px] stroke-brand xl:size-[30px] [&_path]:stroke-brand\"\n source={copy.creditsIcon.url}\n alt={copy.creditsIcon.alt || 'credits'}\n />\n )}\n <Heading\n html={copy.equalCredits}\n size={4}\n as=\"h3\"\n className={cn('mt-2 text-white md:text-[24px]', classNames?.equalCreditsText)}\n />\n </div>\n </div>\n <Picture className=\"w-full laptop:w-[50%]\" source={copy.mainImage?.url} />\n </div>\n\n <div className=\"relative\">\n <motion.div\n className={cn(\n 'relative mt-[64px] grid grid-cols-3 gap-[16px] overflow-hidden md:mt-[16px] md:grid-cols-1 l:gap-[12px] min-md:!h-auto md-l:mt-[32px] md-l:grid-cols-2'\n )}\n initial={{ height: 512 }}\n animate={{ height: showMore ? 'auto' : 512 }}\n transition={{ duration: 0.3 }}\n onAnimationComplete={() => {\n if (!showMore && window.screen.width < 768) {\n const section = document.getElementById('ways-to-get-credits')\n if (section) {\n section.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }\n }\n }}\n >\n {list.map(item => (\n <div\n key={item.id}\n className={cn(\n 'flex min-h-[160px] flex-col justify-between rounded-[16px] bg-white p-[16px] text-[#1D1D1F] desktop:min-h-[192px] desktop:p-[24px] lg-desktop:min-h-[240px] lg-desktop:p-[32px]',\n !rounded && 'rounded-none'\n )}\n >\n <div>\n <Heading as=\"h4\" html={item.title} size={2} className=\"text-pretty\" />\n <div className=\"mt-[4px] flex items-center\">\n <Picture\n className=\"size-[24px] xl:size-[18px] [&_path]:size-full\"\n source=\"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/20250902-153351.png?v=1756798450\"\n />\n <Text as=\"p\" html={item.credits} size={2} className=\"ml-[4px] mt-[6px] lg-desktop:text-[18px]\" />\n </div>\n </div>\n\n {item.handleClick &&\n !(item.id === TaskType.UploadReceipt && isUploadReceiptSuccess) &&\n !(item.id === TaskType.Activate && authCodeActivate.isActivateSuccess) &&\n !(item.id === TaskType.Subscribe && isSubscribeSuccess) ? (\n <Button\n as={item.link ? 'a' : 'button'}\n {...(item.link && { href: item.link })}\n {...(item.handleClick && { onClick: item.handleClick })}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[24px] w-fit\"\n >\n {item.buttonLabel}\n </Button>\n ) : (\n <Button variant=\"primary\" size=\"lg\" className=\"mt-[24px] w-fit\" disabled>\n {item.buttonLabel}\n </Button>\n )}\n </div>\n ))}\n {!showMore && (\n <div\n className=\"absolute inset-0 pointer-events-none min-md:hidden\"\n style={{ background: 'linear-gradient(180deg, rgba(29, 29, 31, 0) 66.37%, #1D1D1F 100%)' }}\n ></div>\n )}\n </motion.div>\n {showMore ? (\n <button\n className=\"mx-auto mt-[12px] block w-fit min-md:hidden\"\n onClick={() => {\n setShowMore(false)\n }}\n >\n <ChevronUpIcon className=\"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]\"></ChevronUpIcon>\n </button>\n ) : (\n <>\n <div className=\"absolute bottom-0 flex w-full translate-y-1/2 justify-center min-md:hidden\">\n <button className=\"w-fit\" onClick={() => setShowMore(!showMore)}>\n <ChevronDownIcon className=\"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]\"></ChevronDownIcon>\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n {copy.receipt && (\n <CreditsUploadReceiptModal\n isOpen={isUploadReceiptModalOpen}\n onClose={() => {\n setIsUploadReceiptModalOpen(false)\n }}\n copy={copy.receipt}\n onSuccess={() => {\n setIsUploadReceiptSuccess(true)\n }}\n />\n )}\n {copy.subscribe && (\n <CreditsSubscribeModal\n copy={copy.subscribe}\n onSuccess={() => {\n setIsSubscribeSuccess(true)\n setTimeout(() => {\n setIsSubscribeModalOpen(false)\n }, 3000)\n }}\n isOpen={isSubscribeModalOpen}\n onClose={() => {\n setIsSubscribeModalOpen(false)\n }}\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["Fragment", "jsx", "jsxs", "Button", "Container", "Heading", "Picture", "Text", "ChevronDownIcon", "ChevronUpIcon", "motion", "useMemo", "useState", "TaskType", "useActions", "useCreditsContext", "cn", "useHeadlessContext", "ROUNDED_BRANDS", "useRegistration", "CreditsUploadReceiptModal", "CreditsSubscribeModal", "CreditsWaysToGetCredits", "copy", "classNames", "showMore", "setShowMore", "profile", "authCodeActivate", "brand", "rounded", "isLogin", "isUploadReceiptModalOpen", "setIsUploadReceiptModalOpen", "isSubscribeModalOpen", "setIsSubscribeModalOpen", "isSubscribeSuccess", "setIsSubscribeSuccess", "isUploadReceiptSuccess", "setIsUploadReceiptSuccess", "actions", "list", "item", "finished", "notLogin", "notFinished", "completed", "buttonLabel", "handleClick", "link", "a", "b", "section"]
4
+ "sourcesContent": ["import { Button, Container, Heading, Picture, Text } from '@anker-in/headless-ui'\nimport { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'\nimport { motion } from 'framer-motion'\nimport { useMemo, useState } from 'react'\n\nimport { TaskType, type CreditsWaysToGetCreditsProps } from './type'\nimport { useActions } from './useActions'\nimport { useCreditsContext } from '../context/provider'\nimport { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'\nimport { useRegistration } from '../../registration'\nimport { CreditsUploadReceiptModal } from '../modal/creditsUploadReceiptModal'\nimport { CreditsSubscribeModal } from '../modal/subscribeModal'\n\nexport const CreditsWaysToGetCredits = ({ copy, classNames, id }: CreditsWaysToGetCreditsProps & { id?: string }) => {\n const [showMore, setShowMore] = useState(false)\n const { profile } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const isLogin = !!profile\n\n const [isUploadReceiptModalOpen, setIsUploadReceiptModalOpen] = useState(false)\n const [isSubscribeModalOpen, setIsSubscribeModalOpen] = useState(false)\n const [isSubscribeSuccess, setIsSubscribeSuccess] = useState(false)\n const [isUploadReceiptSuccess, setIsUploadReceiptSuccess] = useState(false)\n\n const { actions } = useActions({\n copy,\n subscribe: {\n openSubscribePopup: () => setIsSubscribeModalOpen(true),\n isSuccess: isSubscribeSuccess,\n },\n uploadReceipt: {\n openUploadReceiptPopup: () => setIsUploadReceiptModalOpen(true),\n isSuccess: isUploadReceiptSuccess,\n },\n })\n const list = useMemo(() => {\n const list = copy.list\n .map(item => {\n if (!actions[item.id as keyof typeof actions]) {\n return undefined\n }\n const { finished, notLogin, notFinished, completed } = actions[item.id as keyof typeof actions]\n let buttonLabel = ''\n let handleClick = undefined\n let link = undefined\n if (!isLogin) {\n buttonLabel = notLogin.buttonLabel\n handleClick = notLogin.handleClick\n } else if (finished) {\n buttonLabel = completed.buttonLabel\n handleClick = undefined\n } else {\n buttonLabel = notFinished.buttonLabel\n handleClick = notFinished.handleClick\n link = (notFinished as { link: string }).link\n }\n return {\n ...item,\n buttonLabel,\n handleClick,\n finished,\n link,\n }\n })\n .filter(Boolean) as {\n title: string\n credits: string\n id: TaskType\n buttonLabel: string\n finished: boolean\n link: string\n handleClick: (() => void) | undefined\n }[]\n\n // \u767B\u5F55\u540E\uFF0C\u4FDD\u7559\u539F\u987A\u5E8F\uFF0C\u5C06\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u653E\u5728\u6700\u540E\n if (isLogin) {\n return list.sort((a, b) => {\n if (a?.finished && !b?.finished) {\n return 1 // a\u5DF2\u5B8C\u6210\uFF0Cb\u672A\u5B8C\u6210\uFF0Ca\u6392\u5728\u540E\u9762\n }\n if (!a?.finished && b?.finished) {\n return -1 // a\u672A\u5B8C\u6210\uFF0Cb\u5DF2\u5B8C\u6210\uFF0Ca\u6392\u5728\u524D\u9762\n }\n return 0 // \u90FD\u5DF2\u5B8C\u6210\u6216\u90FD\u672A\u5B8C\u6210\uFF0C\u4FDD\u6301\u539F\u987A\u5E8F\n })\n } else {\n return list\n }\n }, [actions, copy.list, isLogin])\n\n return (\n <Container id={id} className=\" bg-[#F5F5F7] [&>div]:l:!px-0\">\n <div\n className={cn(\n 'rounded-[16px] bg-[#1D1D1F] py-[64px] px-[140px] text-white md:px-[16px] l:rounded-none md-l:px-[32px] l-xl:px-[77px]',\n !rounded && 'rounded-none'\n )}\n >\n <Heading as=\"h2\" size={4} html={copy?.title} className=\"text-center l:pl-[16px] l:text-left\" />\n <div className=\"mt-[64px] flex items-center justify-between md:mt-[64px] l:mt-[24px] l:flex-col-reverse l:items-start md-l:mt-[32px]\">\n <div className=\"pl-[16px] l:mt-[40px] desktop:pl-[24px] lg-desktop:pl-[32px]\">\n <Heading size={3} as=\"h3\" html={copy.subtitle} className={classNames?.subtitle} />\n <div className=\"mt-[8px] flex items-center\">\n {copy.creditsIcon?.url && (\n <Picture\n className=\"size-[48px] mr-[8px] stroke-brand xl:size-[30px] [&_path]:stroke-brand\"\n source={copy.creditsIcon.url}\n alt={copy.creditsIcon.alt || 'credits'}\n />\n )}\n <Heading\n html={copy.equalCredits}\n size={4}\n as=\"h3\"\n className={cn('mt-2 text-white md:text-[24px]', classNames?.equalCreditsText)}\n />\n </div>\n </div>\n <Picture className=\"w-full laptop:w-[50%]\" source={copy.mainImage?.url} />\n </div>\n\n <div className=\"relative\">\n <motion.div\n className={cn(\n 'relative mt-[64px] grid grid-cols-3 gap-[16px] overflow-hidden md:mt-[16px] md:grid-cols-1 l:gap-[12px] min-md:!h-auto md-l:mt-[32px] md-l:grid-cols-2'\n )}\n initial={{ height: 512 }}\n animate={{ height: showMore ? 'auto' : 512 }}\n transition={{ duration: 0.3 }}\n onAnimationComplete={() => {\n if (!showMore && window.screen.width < 768) {\n const section = document.getElementById('ways-to-get-credits')\n if (section) {\n section.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }\n }\n }}\n >\n {list.map(item => (\n <div\n key={item.id}\n className={cn(\n 'flex min-h-[160px] flex-col justify-between rounded-[16px] bg-white p-[16px] text-[#1D1D1F] desktop:min-h-[192px] desktop:p-[24px] lg-desktop:min-h-[240px] lg-desktop:p-[32px]',\n !rounded && 'rounded-none'\n )}\n >\n <div>\n <Heading as=\"h4\" html={item.title} size={2} className=\"text-pretty\" />\n <div className=\"mt-[4px] flex items-center\">\n <Picture\n className=\"size-[24px] xl:size-[18px] [&_path]:size-full\"\n source=\"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/20250902-153351.png?v=1756798450\"\n />\n <Text as=\"p\" html={item.credits} size={2} className=\"ml-[4px] mt-[6px] lg-desktop:text-[18px]\" />\n </div>\n </div>\n\n {item.handleClick &&\n !(item.id === TaskType.UploadReceipt && isUploadReceiptSuccess) &&\n !(item.id === TaskType.Activate && authCodeActivate.isActivateSuccess) &&\n !(item.id === TaskType.Subscribe && isSubscribeSuccess) ? (\n <Button\n as={item.link ? 'a' : 'button'}\n {...(item.link && { href: item.link })}\n {...(item.handleClick && { onClick: item.handleClick })}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[24px] w-fit\"\n >\n {item.buttonLabel}\n </Button>\n ) : (\n <Button variant=\"primary\" size=\"lg\" className=\"mt-[24px] w-fit\" disabled>\n {item.buttonLabel}\n </Button>\n )}\n </div>\n ))}\n {!showMore && (\n <div\n className=\"absolute inset-0 pointer-events-none min-md:hidden\"\n style={{ background: 'linear-gradient(180deg, rgba(29, 29, 31, 0) 66.37%, #1D1D1F 100%)' }}\n ></div>\n )}\n </motion.div>\n {showMore ? (\n <button\n className=\"mx-auto mt-[12px] block w-fit min-md:hidden\"\n onClick={() => {\n setShowMore(false)\n }}\n >\n <ChevronUpIcon className=\"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]\"></ChevronUpIcon>\n </button>\n ) : (\n <>\n <div className=\"absolute bottom-0 flex w-full translate-y-1/2 justify-center min-md:hidden\">\n <button className=\"w-fit\" onClick={() => setShowMore(!showMore)}>\n <ChevronDownIcon className=\"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]\"></ChevronDownIcon>\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n {copy.receipt && (\n <CreditsUploadReceiptModal\n isOpen={isUploadReceiptModalOpen}\n onClose={() => {\n setIsUploadReceiptModalOpen(false)\n }}\n copy={copy.receipt}\n onSuccess={() => {\n setIsUploadReceiptSuccess(true)\n }}\n />\n )}\n {copy.subscribe && (\n <CreditsSubscribeModal\n copy={copy.subscribe}\n onSuccess={() => {\n setIsSubscribeSuccess(true)\n setTimeout(() => {\n setIsSubscribeModalOpen(false)\n }, 3000)\n }}\n isOpen={isSubscribeModalOpen}\n onClose={() => {\n setIsSubscribeModalOpen(false)\n }}\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "AAoGQ,OAiGI,YAAAA,EAjGJ,OAAAC,EAII,QAAAC,MAJJ,oBApGR,OAAS,UAAAC,EAAQ,aAAAC,EAAW,WAAAC,EAAS,WAAAC,EAAS,QAAAC,MAAY,wBAC1D,OAAS,mBAAAC,EAAiB,iBAAAC,MAAqB,8BAC/C,OAAS,UAAAC,MAAc,gBACvB,OAAS,WAAAC,EAAS,YAAAC,MAAgB,QAElC,OAAS,YAAAC,MAAmD,SAC5D,OAAS,cAAAC,MAAkB,eAC3B,OAAS,qBAAAC,MAAyB,sBAClC,OAAS,cAAcC,EAAI,sBAAAC,EAAoB,kBAAAC,MAAsB,gBACrE,OAAS,mBAAAC,MAAuB,qBAChC,OAAS,6BAAAC,MAAiC,qCAC1C,OAAS,yBAAAC,MAA6B,0BAE/B,MAAMC,GAA0B,CAAC,CAAE,KAAAC,EAAM,WAAAC,EAAY,GAAAC,CAAG,IAAsD,CACnH,KAAM,CAACC,EAAUC,CAAW,EAAIf,EAAS,EAAK,EACxC,CAAE,QAAAgB,CAAQ,EAAIb,EAAkB,EAChC,CAAE,iBAAAc,CAAiB,EAAIV,EAAgB,EACvC,CAAE,MAAAW,CAAM,EAAIb,EAAmB,EAC/Bc,EAAUb,EAAe,SAASY,CAAK,EACvCE,EAAU,CAAC,CAACJ,EAEZ,CAACK,EAA0BC,CAA2B,EAAItB,EAAS,EAAK,EACxE,CAACuB,EAAsBC,CAAuB,EAAIxB,EAAS,EAAK,EAChE,CAACyB,EAAoBC,CAAqB,EAAI1B,EAAS,EAAK,EAC5D,CAAC2B,EAAwBC,CAAyB,EAAI5B,EAAS,EAAK,EAEpE,CAAE,QAAA6B,CAAQ,EAAI3B,EAAW,CAC7B,KAAAS,EACA,UAAW,CACT,mBAAoB,IAAMa,EAAwB,EAAI,EACtD,UAAWC,CACb,EACA,cAAe,CACb,uBAAwB,IAAMH,EAA4B,EAAI,EAC9D,UAAWK,CACb,CACF,CAAC,EACKG,EAAO/B,EAAQ,IAAM,CACzB,MAAM+B,EAAOnB,EAAK,KACf,IAAIoB,GAAQ,CACX,GAAI,CAACF,EAAQE,EAAK,EAA0B,EAC1C,OAEF,KAAM,CAAE,SAAAC,EAAU,SAAAC,EAAU,YAAAC,EAAa,UAAAC,CAAU,EAAIN,EAAQE,EAAK,EAA0B,EAC9F,IAAIK,EAAc,GACdC,EACAC,EACJ,OAAKlB,EAGMY,GACTI,EAAcD,EAAU,YACxBE,EAAc,SAEdD,EAAcF,EAAY,YAC1BG,EAAcH,EAAY,YAC1BI,EAAQJ,EAAiC,OARzCE,EAAcH,EAAS,YACvBI,EAAcJ,EAAS,aASlB,CACL,GAAGF,EACH,YAAAK,EACA,YAAAC,EACA,SAAAL,EACA,KAAAM,CACF,CACF,CAAC,EACA,OAAO,OAAO,EAWjB,OAAIlB,EACKU,EAAK,KAAK,CAACS,EAAGC,IACfD,GAAG,UAAY,CAACC,GAAG,SACd,EAEL,CAACD,GAAG,UAAYC,GAAG,SACd,GAEF,CACR,EAEMV,CAEX,EAAG,CAACD,EAASlB,EAAK,KAAMS,CAAO,CAAC,EAEhC,OACE9B,EAACE,EAAA,CAAU,GAAIqB,EAAI,UAAU,gCAC3B,UAAAvB,EAAC,OACC,UAAWc,EACT,wHACA,CAACe,GAAW,cACd,EAEA,UAAA9B,EAACI,EAAA,CAAQ,GAAG,KAAK,KAAM,EAAG,KAAMkB,GAAM,MAAO,UAAU,sCAAsC,EAC7FrB,EAAC,OAAI,UAAU,uHACb,UAAAA,EAAC,OAAI,UAAU,+DACb,UAAAD,EAACI,EAAA,CAAQ,KAAM,EAAG,GAAG,KAAK,KAAMkB,EAAK,SAAU,UAAWC,GAAY,SAAU,EAChFtB,EAAC,OAAI,UAAU,6BACZ,UAAAqB,EAAK,aAAa,KACjBtB,EAACK,EAAA,CACC,UAAU,yEACV,OAAQiB,EAAK,YAAY,IACzB,IAAKA,EAAK,YAAY,KAAO,UAC/B,EAEFtB,EAACI,EAAA,CACC,KAAMkB,EAAK,aACX,KAAM,EACN,GAAG,KACH,UAAWP,EAAG,iCAAkCQ,GAAY,gBAAgB,EAC9E,GACF,GACF,EACAvB,EAACK,EAAA,CAAQ,UAAU,wBAAwB,OAAQiB,EAAK,WAAW,IAAK,GAC1E,EAEArB,EAAC,OAAI,UAAU,WACb,UAAAA,EAACQ,EAAO,IAAP,CACC,UAAWM,EACT,yJACF,EACA,QAAS,CAAE,OAAQ,GAAI,EACvB,QAAS,CAAE,OAAQU,EAAW,OAAS,GAAI,EAC3C,WAAY,CAAE,SAAU,EAAI,EAC5B,oBAAqB,IAAM,CACzB,GAAI,CAACA,GAAY,OAAO,OAAO,MAAQ,IAAK,CAC1C,MAAM2B,EAAU,SAAS,eAAe,qBAAqB,EACzDA,GACFA,EAAQ,eAAe,CAAE,SAAU,SAAU,MAAO,KAAM,CAAC,CAE/D,CACF,EAEC,UAAAX,EAAK,IAAIC,GACRzC,EAAC,OAEC,UAAWc,EACT,kLACA,CAACe,GAAW,cACd,EAEA,UAAA7B,EAAC,OACC,UAAAD,EAACI,EAAA,CAAQ,GAAG,KAAK,KAAMsC,EAAK,MAAO,KAAM,EAAG,UAAU,cAAc,EACpEzC,EAAC,OAAI,UAAU,6BACb,UAAAD,EAACK,EAAA,CACC,UAAU,gDACV,OAAO,0FACT,EACAL,EAACM,EAAA,CAAK,GAAG,IAAI,KAAMoC,EAAK,QAAS,KAAM,EAAG,UAAU,2CAA2C,GACjG,GACF,EAECA,EAAK,aACN,EAAEA,EAAK,KAAO9B,EAAS,eAAiB0B,IACxC,EAAEI,EAAK,KAAO9B,EAAS,UAAYgB,EAAiB,oBACpD,EAAEc,EAAK,KAAO9B,EAAS,WAAawB,GAClCpC,EAACE,EAAA,CACC,GAAIwC,EAAK,KAAO,IAAM,SACrB,GAAIA,EAAK,MAAQ,CAAE,KAAMA,EAAK,IAAK,EACnC,GAAIA,EAAK,aAAe,CAAE,QAASA,EAAK,WAAY,EACrD,QAAQ,UACR,KAAK,KACL,UAAU,kBAET,SAAAA,EAAK,YACR,EAEA1C,EAACE,EAAA,CAAO,QAAQ,UAAU,KAAK,KAAK,UAAU,kBAAkB,SAAQ,GACrE,SAAAwC,EAAK,YACR,IAlCGA,EAAK,EAoCZ,CACD,EACA,CAACjB,GACAzB,EAAC,OACC,UAAU,qDACV,MAAO,CAAE,WAAY,mEAAoE,EAC1F,GAEL,EACCyB,EACCzB,EAAC,UACC,UAAU,8CACV,QAAS,IAAM,CACb0B,EAAY,EAAK,CACnB,EAEA,SAAA1B,EAACQ,EAAA,CAAc,UAAU,kDAAkD,EAC7E,EAEAR,EAAAD,EAAA,CACE,SAAAC,EAAC,OAAI,UAAU,6EACb,SAAAA,EAAC,UAAO,UAAU,QAAQ,QAAS,IAAM0B,EAAY,CAACD,CAAQ,EAC5D,SAAAzB,EAACO,EAAA,CAAgB,UAAU,kDAAkD,EAC/E,EACF,EACF,GAEJ,GACF,EACCe,EAAK,SACJtB,EAACmB,EAAA,CACC,OAAQa,EACR,QAAS,IAAM,CACbC,EAA4B,EAAK,CACnC,EACA,KAAMX,EAAK,QACX,UAAW,IAAM,CACfiB,EAA0B,EAAI,CAChC,EACF,EAEDjB,EAAK,WACJtB,EAACoB,EAAA,CACC,KAAME,EAAK,UACX,UAAW,IAAM,CACfe,EAAsB,EAAI,EAC1B,WAAW,IAAM,CACfF,EAAwB,EAAK,CAC/B,EAAG,GAAI,CACT,EACA,OAAQD,EACR,QAAS,IAAM,CACbC,EAAwB,EAAK,CAC/B,EACF,GAEJ,CAEJ",
6
+ "names": ["Fragment", "jsx", "jsxs", "Button", "Container", "Heading", "Picture", "Text", "ChevronDownIcon", "ChevronUpIcon", "motion", "useMemo", "useState", "TaskType", "useActions", "useCreditsContext", "cn", "useHeadlessContext", "ROUNDED_BRANDS", "useRegistration", "CreditsUploadReceiptModal", "CreditsSubscribeModal", "CreditsWaysToGetCredits", "copy", "classNames", "id", "showMore", "setShowMore", "profile", "authCodeActivate", "brand", "rounded", "isLogin", "isUploadReceiptModalOpen", "setIsUploadReceiptModalOpen", "isSubscribeModalOpen", "setIsSubscribeModalOpen", "isSubscribeSuccess", "setIsSubscribeSuccess", "isUploadReceiptSuccess", "setIsUploadReceiptSuccess", "actions", "list", "item", "finished", "notLogin", "notFinished", "completed", "buttonLabel", "handleClick", "link", "a", "b", "section"]
7
7
  }