@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
@@ -1,21 +1,28 @@
1
1
  import { HeadlessConfig } from '@anker-in/lib';
2
2
  import { DTC_TASK_TYPE } from '../components/credits/context/const';
3
3
  import { CreditsPageCommon } from '../components/credits/type';
4
+ import { FunctionMemberPriceConfig } from '../components/credits/context/memberPriceTypes';
4
5
  import { CreditsBannerCopy } from '../components/credits/creditsBanner';
5
6
  import { CreditsInfoCardCopy } from '../components/credits/creditsInfoCard';
6
7
  import { CreditsBenefitsCopy } from '../components/credits/creditsBenefits';
7
8
  import { CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysToGetCredits';
9
+ import { CreditsAnkersolixTaskCopy } from '../components/credits/creditsAnkersolixTask';
8
10
  import { CreditsRedeemListCopy } from '../components/credits/creditsRedeemList';
9
11
  import { CreditsCashCopy } from '../components/credits/creditsCash';
12
+ import { CreditsMemberPriceCopy } from '../components/credits/creditsMemberPrice';
10
13
  import { CreditsFaqCopy } from '../components/credits/creditsFaq';
14
+ import { CreditsNavigationCopy } from '../components/credits/creditsNavigation';
11
15
  import { AuthCodeActivateCopy } from 'src/components/registration/authCodeActivate/type';
12
16
  export declare enum ComponentKey {
17
+ Navigation = "creditsNavigation",
13
18
  Banner = "creditsBanner",
14
19
  InfoCard = "creditsInfoCard",
15
20
  Benefits = "creditsBenefits",
16
21
  WaysToGetCredits = "creditsWaysToGetCredits",
22
+ AnkersolixTask = "creditsAnkersolixTask",
17
23
  RedeemList = "creditsRedeemList",
18
24
  SpendCreditsLikeCash = "creditsCash",
25
+ MemberPrice = "creditsMemberPrice",
19
26
  Faqs = "creditsFaq"
20
27
  }
21
28
  export type CreditsTemplateProps = {
@@ -25,17 +32,24 @@ export type CreditsTemplateProps = {
25
32
  authCodeActivate: AuthCodeActivateCopy;
26
33
  };
27
34
  taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>;
35
+ memberPriceDiscount?: FunctionMemberPriceConfig[];
36
+ };
37
+ creditsConfig?: {
38
+ alpcBrand?: string;
28
39
  };
29
40
  pageConfig: {
30
41
  order: ComponentKey[];
31
42
  common: CreditsPageCommon;
32
43
  components: {
44
+ [ComponentKey.Navigation]?: CreditsNavigationCopy;
33
45
  [ComponentKey.Banner]?: CreditsBannerCopy;
34
46
  [ComponentKey.InfoCard]?: CreditsInfoCardCopy;
35
47
  [ComponentKey.Benefits]?: CreditsBenefitsCopy;
36
48
  [ComponentKey.WaysToGetCredits]?: CreditsWaysToGetCreditsCopy;
49
+ [ComponentKey.AnkersolixTask]?: CreditsAnkersolixTaskCopy;
37
50
  [ComponentKey.RedeemList]?: CreditsRedeemListCopy;
38
51
  [ComponentKey.SpendCreditsLikeCash]?: CreditsCashCopy;
52
+ [ComponentKey.MemberPrice]?: CreditsMemberPriceCopy;
39
53
  [ComponentKey.Faqs]?: CreditsFaqCopy;
40
54
  };
41
55
  };
@@ -56,4 +70,4 @@ export type CreditsTemplateProps = {
56
70
  pageGroup: string;
57
71
  };
58
72
  };
59
- export declare const CreditsTemplate: ({ headlessConfig, siteConfig, userContext, pageConfig, registrationContext, gtm, }: CreditsTemplateProps) => import("react/jsx-runtime").JSX.Element;
73
+ export declare const CreditsTemplate: ({ headlessConfig, siteConfig, creditsConfig, userContext, pageConfig, registrationContext, gtm, }: CreditsTemplateProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import{Fragment as K,jsx as o,jsxs as a}from"react/jsx-runtime";import{classNames as c,HeadlessProvider as f}from"@anker-in/lib";import{RegistrationProvider as l}from"../components/registration/context/provider";import{CreditsProvider as y}from"../components/credits/context/provider";import{CreditsBanner as g}from"../components/credits/creditsBanner";import{CreditsInfoCard as P}from"../components/credits/creditsInfoCard";import{CreditsBenefits as T}from"../components/credits/creditsBenefits";import{CreditsWaysToGetCredits as v}from"../components/credits/creditsWaysToGetCredits";import{CreditsAnkersolixTask as u}from"../components/credits/creditsAnkersolixTask";import{CreditsRedeemList as b}from"../components/credits/creditsRedeemList";import{CreditsCash as h}from"../components/credits/creditsCash";import{CreditsMemberPrice as B}from"../components/credits/creditsMemberPrice";import{CreditsFaq as I}from"../components/credits/creditsFaq";import{CreditsNavigation as A}from"../components/credits/creditsNavigation";var L=(r=>(r.Navigation="creditsNavigation",r.Banner="creditsBanner",r.InfoCard="creditsInfoCard",r.Benefits="creditsBenefits",r.WaysToGetCredits="creditsWaysToGetCredits",r.AnkersolixTask="creditsAnkersolixTask",r.RedeemList="creditsRedeemList",r.SpendCreditsLikeCash="creditsCash",r.MemberPrice="creditsMemberPrice",r.Faqs="creditsFaq",r))(L||{});const ne=({headlessConfig:d,siteConfig:n,creditsConfig:C,userContext:t,pageConfig:s,registrationContext:p,gtm:m})=>(console.log("siteConfig",n),o(f,{headlessConfig:d,children:o(l,{copy:n.registrationsSettings,email:t?.profile?.email,children:a(y,{profile:t?.profile,removeProfile:t?.removeProfile,isLoadingProfile:t?.isLoadingProfile,openSignInPopup:p.openSignInPopup,openSignUpPopup:p.openSignUpPopup,creditInfo:t?.creditInfo,taskIdToTypeMapping:n.taskIdToTypeMapping,customer:t?.customer,fetchCreditInfo:t?.fetchCreditInfo,customerLoading:t?.customerLoading,gtm:m,pageCommon:s.common,memberPriceDiscount:n.memberPriceDiscount,alpcBrand:C?.alpcBrand,children:[s.components.creditsNavigation&&o(A,{copy:s.components.creditsNavigation}),o("div",{className:c("bg-[#f5f5f7] leading-[1.2]"),children:s.order.map(e=>{if(e==="creditsNavigation")return null;const i=s.components?.[e];return i?a(K,{children:[e==="creditsBanner"&&o(g,{copy:i,id:e}),e==="creditsInfoCard"&&t?.profile&&o(P,{copy:i,id:e}),e==="creditsBenefits"&&o(T,{copy:i,id:e}),e==="creditsWaysToGetCredits"&&o(v,{copy:i,id:e,classNames:d.brand==="anker"?{subtitle:"text-white",equalCreditsText:"bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent"}:{subtitle:"text-[#D1D1D1]",equalCreditsText:"text-[#F6EAD0]"}}),e==="creditsAnkersolixTask"&&o(u,{copy:i,id:e}),e==="creditsRedeemList"&&o(b,{copy:i,id:e}),e==="creditsCash"&&o(h,{copy:i,id:e}),e==="creditsMemberPrice"&&o(B,{copy:i,id:e}),e==="creditsFaq"&&o(I,{copy:i,id:e}),e!=="creditsBanner"&&o("div",{className:"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16"})]}):null})})]})})}));export{L as ComponentKey,ne as CreditsTemplate};
2
+ //# sourceMappingURL=Credits.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/templates/Credits.tsx"],
4
+ "sourcesContent": ["import { classNames, HeadlessConfig, HeadlessProvider } from '@anker-in/lib'\nimport { RegistrationProvider } from '../components/registration/context/provider'\n\nimport { DTC_TASK_TYPE } from '../components/credits/context/const'\nimport { CreditsProvider } from '../components/credits/context/provider'\nimport { CreditsPageCommon } from '../components/credits/type'\nimport { FunctionMemberPriceConfig } from '../components/credits/context/memberPriceTypes'\n\nimport { CreditsBanner, CreditsBannerCopy } from '../components/credits/creditsBanner'\nimport { CreditsInfoCard, CreditsInfoCardCopy } from '../components/credits/creditsInfoCard'\nimport { CreditsBenefits, CreditsBenefitsCopy } from '../components/credits/creditsBenefits'\nimport { CreditsWaysToGetCredits, CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysToGetCredits'\nimport { CreditsAnkersolixTask, CreditsAnkersolixTaskCopy } from '../components/credits/creditsAnkersolixTask'\nimport { CreditsRedeemList, CreditsRedeemListCopy } from '../components/credits/creditsRedeemList'\nimport { CreditsCash, CreditsCashCopy } from '../components/credits/creditsCash'\nimport { CreditsMemberPrice, CreditsMemberPriceCopy } from '../components/credits/creditsMemberPrice'\nimport { CreditsFaq, CreditsFaqCopy } from '../components/credits/creditsFaq'\nimport { CreditsNavigation, CreditsNavigationCopy } from '../components/credits/creditsNavigation'\nimport { AuthCodeActivateCopy } from 'src/components/registration/authCodeActivate/type'\n\nexport enum ComponentKey {\n Navigation = 'creditsNavigation',\n Banner = 'creditsBanner',\n InfoCard = 'creditsInfoCard',\n Benefits = 'creditsBenefits',\n WaysToGetCredits = 'creditsWaysToGetCredits',\n AnkersolixTask = 'creditsAnkersolixTask',\n RedeemList = 'creditsRedeemList',\n SpendCreditsLikeCash = 'creditsCash',\n MemberPrice = 'creditsMemberPrice',\n Faqs = 'creditsFaq',\n}\nexport type CreditsTemplateProps = {\n headlessConfig: HeadlessConfig\n siteConfig: {\n registrationsSettings: {\n authCodeActivate: AuthCodeActivateCopy\n }\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n }\n creditsConfig?: {\n alpcBrand?: string\n }\n pageConfig: {\n order: ComponentKey[]\n common: CreditsPageCommon\n components: {\n [ComponentKey.Navigation]?: CreditsNavigationCopy\n [ComponentKey.Banner]?: CreditsBannerCopy\n [ComponentKey.InfoCard]?: CreditsInfoCardCopy\n [ComponentKey.Benefits]?: CreditsBenefitsCopy\n [ComponentKey.WaysToGetCredits]?: CreditsWaysToGetCreditsCopy\n [ComponentKey.AnkersolixTask]?: CreditsAnkersolixTaskCopy\n [ComponentKey.RedeemList]?: CreditsRedeemListCopy\n [ComponentKey.SpendCreditsLikeCash]?: CreditsCashCopy\n [ComponentKey.MemberPrice]?: CreditsMemberPriceCopy\n [ComponentKey.Faqs]?: CreditsFaqCopy\n }\n }\n userContext: {\n profile: any\n removeProfile: () => void\n isLoadingProfile: boolean\n creditInfo: any\n customer: any\n customerLoading: boolean\n fetchCreditInfo: () => void\n }\n registrationContext: {\n openSignUpPopup: () => void\n openSignInPopup: () => void\n }\n gtm: {\n pageGroup: string\n }\n}\n\nexport const CreditsTemplate = ({\n headlessConfig,\n siteConfig,\n creditsConfig,\n userContext,\n pageConfig,\n registrationContext,\n gtm,\n}: CreditsTemplateProps) => {\n\n console.log('siteConfig', siteConfig)\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider copy={siteConfig.registrationsSettings} email={userContext?.profile?.email}>\n <CreditsProvider\n profile={userContext?.profile}\n removeProfile={userContext?.removeProfile}\n isLoadingProfile={userContext?.isLoadingProfile}\n openSignInPopup={registrationContext.openSignInPopup}\n openSignUpPopup={registrationContext.openSignUpPopup}\n creditInfo={userContext?.creditInfo}\n taskIdToTypeMapping={siteConfig.taskIdToTypeMapping}\n customer={userContext?.customer}\n fetchCreditInfo={userContext?.fetchCreditInfo}\n customerLoading={userContext?.customerLoading}\n gtm={gtm}\n pageCommon={pageConfig.common}\n memberPriceDiscount={siteConfig.memberPriceDiscount}\n alpcBrand={creditsConfig?.alpcBrand}\n >\n {/* \u5BFC\u822A\u7EC4\u4EF6 - \u56FA\u5B9A\u4F4D\u7F6E\uFF0C\u4E0D\u53C2\u4E0E order \u6392\u5E8F */}\n {pageConfig.components[ComponentKey.Navigation] && (\n <CreditsNavigation copy={pageConfig.components[ComponentKey.Navigation]} />\n )}\n <div className={classNames('bg-[#f5f5f7] leading-[1.2]')}>\n {pageConfig.order.map(key => {\n // \u8DF3\u8FC7\u5BFC\u822A\u7EC4\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5DF2\u7ECF\u56FA\u5B9A\u6E32\u67D3\u5728\u4E0A\u65B9\n if (key === ComponentKey.Navigation) return null\n const componentCopy = pageConfig.components?.[key]\n if (!componentCopy) return null\n return (\n <>\n {key === ComponentKey.Banner && <CreditsBanner copy={componentCopy as CreditsBannerCopy} id={key} />}\n {key === ComponentKey.InfoCard && userContext?.profile && (\n <CreditsInfoCard copy={componentCopy as CreditsInfoCardCopy} id={key} />\n )}\n {key === ComponentKey.Benefits && <CreditsBenefits copy={componentCopy as CreditsBenefitsCopy} id={key} />}\n {key === ComponentKey.WaysToGetCredits && (\n <CreditsWaysToGetCredits\n copy={componentCopy as CreditsWaysToGetCreditsCopy}\n id={key}\n classNames={\n headlessConfig.brand === 'anker'\n ? {\n subtitle: 'text-white',\n equalCreditsText:\n 'bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent',\n }\n : {\n subtitle: 'text-[#D1D1D1]',\n equalCreditsText: 'text-[#F6EAD0]',\n }\n }\n />\n )}\n {key === ComponentKey.AnkersolixTask && (\n <CreditsAnkersolixTask\n copy={componentCopy as CreditsAnkersolixTaskCopy}\n id={key}\n />\n )}\n {key === ComponentKey.RedeemList && <CreditsRedeemList copy={componentCopy as CreditsRedeemListCopy} id={key} />}\n {key === ComponentKey.SpendCreditsLikeCash && <CreditsCash copy={componentCopy as CreditsCashCopy} id={key} />}\n {key === ComponentKey.MemberPrice && <CreditsMemberPrice copy={componentCopy as CreditsMemberPriceCopy} id={key} />}\n {key === ComponentKey.Faqs && <CreditsFaq copy={componentCopy as CreditsFaqCopy} id={key} />}\n {key !== ComponentKey.Banner && (\n <div className=\"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16\" />\n )}\n </>\n )\n })}\n </div>\n </CreditsProvider>\n </RegistrationProvider>\n </HeadlessProvider>\n )\n}\n"],
5
+ "mappings": "AA8GY,OASI,YAAAA,EATJ,OAAAC,EASI,QAAAC,MATJ,oBA9GZ,OAAS,cAAAC,EAA4B,oBAAAC,MAAwB,gBAC7D,OAAS,wBAAAC,MAA4B,8CAGrC,OAAS,mBAAAC,MAAuB,yCAIhC,OAAS,iBAAAC,MAAwC,sCACjD,OAAS,mBAAAC,MAA4C,wCACrD,OAAS,mBAAAC,MAA4C,wCACrD,OAAS,2BAAAC,MAA4D,gDACrE,OAAS,yBAAAC,MAAwD,8CACjE,OAAS,qBAAAC,MAAgD,0CACzD,OAAS,eAAAC,MAAoC,oCAC7C,OAAS,sBAAAC,MAAkD,2CAC3D,OAAS,cAAAC,MAAkC,mCAC3C,OAAS,qBAAAC,MAAgD,0CAGlD,IAAKC,OACVA,EAAA,WAAa,oBACbA,EAAA,OAAS,gBACTA,EAAA,SAAW,kBACXA,EAAA,SAAW,kBACXA,EAAA,iBAAmB,0BACnBA,EAAA,eAAiB,wBACjBA,EAAA,WAAa,oBACbA,EAAA,qBAAuB,cACvBA,EAAA,YAAc,qBACdA,EAAA,KAAO,aAVGA,OAAA,IA0DL,MAAMC,GAAkB,CAAC,CAC9B,eAAAC,EACA,WAAAC,EACA,cAAAC,EACA,YAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,IAAAC,CACF,KAEE,QAAQ,IAAI,aAAcL,CAAU,EAElCnB,EAACG,EAAA,CAAiB,eAAgBe,EAChC,SAAAlB,EAACI,EAAA,CAAqB,KAAMe,EAAW,sBAAuB,MAAOE,GAAa,SAAS,MACzF,SAAApB,EAACI,EAAA,CACC,QAASgB,GAAa,QACtB,cAAeA,GAAa,cAC5B,iBAAkBA,GAAa,iBAC/B,gBAAiBE,EAAoB,gBACrC,gBAAiBA,EAAoB,gBACrC,WAAYF,GAAa,WACzB,oBAAqBF,EAAW,oBAChC,SAAUE,GAAa,SACvB,gBAAiBA,GAAa,gBAC9B,gBAAiBA,GAAa,gBAC9B,IAAKG,EACL,WAAYF,EAAW,OACvB,oBAAqBH,EAAW,oBAChC,UAAWC,GAAe,UAGzB,UAAAE,EAAW,WAAW,mBACrBtB,EAACe,EAAA,CAAkB,KAAMO,EAAW,WAAW,kBAA0B,EAE3EtB,EAAC,OAAI,UAAWE,EAAW,4BAA4B,EACpD,SAAAoB,EAAW,MAAM,IAAIG,GAAO,CAE3B,GAAIA,IAAQ,oBAAyB,OAAO,KAC5C,MAAMC,EAAgBJ,EAAW,aAAaG,CAAG,EACjD,OAAKC,EAEHzB,EAAAF,EAAA,CACG,UAAA0B,IAAQ,iBAAuBzB,EAACM,EAAA,CAAc,KAAMoB,EAAoC,GAAID,EAAK,EACjGA,IAAQ,mBAAyBJ,GAAa,SAC7CrB,EAACO,EAAA,CAAgB,KAAMmB,EAAsC,GAAID,EAAK,EAEvEA,IAAQ,mBAAyBzB,EAACQ,EAAA,CAAgB,KAAMkB,EAAsC,GAAID,EAAK,EACvGA,IAAQ,2BACPzB,EAACS,EAAA,CACC,KAAMiB,EACN,GAAID,EACJ,WACEP,EAAe,QAAU,QACrB,CACE,SAAU,aACV,iBACE,4EACJ,EACA,CACE,SAAU,iBACV,iBAAkB,gBACpB,EAER,EAEDO,IAAQ,yBACPzB,EAACU,EAAA,CACC,KAAMgB,EACN,GAAID,EACN,EAEDA,IAAQ,qBAA2BzB,EAACW,EAAA,CAAkB,KAAMe,EAAwC,GAAID,EAAK,EAC7GA,IAAQ,eAAqCzB,EAACY,EAAA,CAAY,KAAMc,EAAkC,GAAID,EAAK,EAC3GA,IAAQ,sBAA4BzB,EAACa,EAAA,CAAmB,KAAMa,EAAyC,GAAID,EAAK,EAChHA,IAAQ,cAAqBzB,EAACc,EAAA,CAAW,KAAMY,EAAiC,GAAID,EAAK,EACzFA,IAAQ,iBACPzB,EAAC,OAAI,UAAU,qEAAqE,GAExF,EAvCyB,IAyC7B,CAAC,EACH,GACF,EACF,EACF",
6
+ "names": ["Fragment", "jsx", "jsxs", "classNames", "HeadlessProvider", "RegistrationProvider", "CreditsProvider", "CreditsBanner", "CreditsInfoCard", "CreditsBenefits", "CreditsWaysToGetCredits", "CreditsAnkersolixTask", "CreditsRedeemList", "CreditsCash", "CreditsMemberPrice", "CreditsFaq", "CreditsNavigation", "ComponentKey", "CreditsTemplate", "headlessConfig", "siteConfig", "creditsConfig", "userContext", "pageConfig", "registrationContext", "gtm", "key", "componentCopy"]
7
+ }
@@ -1 +1 @@
1
- export * from './credits';
1
+ export * from './Credits';
@@ -1,2 +1,2 @@
1
- export*from"./credits";
1
+ export*from"./Credits";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/templates/index.ts"],
4
- "sourcesContent": ["export * from './credits'\n"],
4
+ "sourcesContent": ["export * from './Credits'\n"],
5
5
  "mappings": "AAAA,WAAc",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/campaign-ui",
3
- "version": "0.2.1",
3
+ "version": "0.2.2-beta.2",
4
4
  "description": "Campaign UI components and utilities for Anker projects",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -80,6 +80,7 @@
80
80
  "clsx": "^2.1.1",
81
81
  "crypto-js": "^4.2.0",
82
82
  "dayjs": "^1.11.7",
83
+ "decimal.js": "^10.4.3",
83
84
  "gsap": "^3.12.5",
84
85
  "monaco-editor": "^0.52.0",
85
86
  "postcss": "^8.4.38",
@@ -87,8 +88,8 @@
87
88
  "swiper": "^11.1.3",
88
89
  "tailwind-merge": "^2.3.0",
89
90
  "tailwindcss": "^3.4.3",
90
- "@anker-in/headless-ui": "1.0.26",
91
- "@anker-in/lib": "1.1.1"
91
+ "@anker-in/headless-ui": "1.1.25-alpha.1767516866003",
92
+ "@anker-in/lib": "1.1.2-beta.1"
92
93
  },
93
94
  "publishConfig": {
94
95
  "access": "public",
@@ -6,8 +6,9 @@ import { useCreditsContext } from '../provider'
6
6
  import { useHeadlessContext } from '@anker-in/lib'
7
7
 
8
8
  function useActivities({ page, pageSize, options = {} }: { page: number; pageSize: number; options?: any }) {
9
- const { profile, isLoadingProfile } = useCreditsContext()
10
- const { brand } = useHeadlessContext()
9
+ const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()
10
+ const { brand: headlessBrand } = useHeadlessContext()
11
+ const brand = alpcBrand || headlessBrand
11
12
  const [activities, setActivities] = useState<CreditLogResponse[]>([])
12
13
  const [total, setTotal] = useState(0)
13
14
 
@@ -192,11 +192,13 @@ export const useAlpcFetch = <TData>(
192
192
  swrOptions?: UseAlpcFetchOptionsSwrOptions<TData, Error>
193
193
  ) => {
194
194
  const [retry, setRetry] = useState(false)
195
- const { removeProfile } = useCreditsContext()
195
+ const { removeProfile, alpcBrand } = useCreditsContext()
196
196
 
197
197
  const { enable, ...otherSwrOptions } = swrOptions || {}
198
198
 
199
- const { locale = '', brand } = useHeadlessContext()
199
+ const { locale = '', brand: headlessBrand } = useHeadlessContext()
200
+ // 优先使用 creditsContext 中的 alpcBrand,如果没有则使用 headlessConfig 中的 brand
201
+ const brand = alpcBrand || headlessBrand
200
202
 
201
203
  const { queryKey = [], body: fetchBody = {}, headers, ...fetchOptions } = options
202
204
  const fetchEnable = enable ?? true
@@ -249,9 +251,11 @@ export const useAlpcFetch = <TData>(
249
251
 
250
252
  export const useAlpcMutation = <TData, TBody>(options: MutationOptions, mutationOptions?: UseMutationConfig<TData>) => {
251
253
  const [retry, setRetry] = useState(false)
252
- const { removeProfile } = useCreditsContext()
254
+ const { removeProfile, alpcBrand } = useCreditsContext()
253
255
 
254
- const { locale = '', brand } = useHeadlessContext()
256
+ const { locale = '', brand: headlessBrand } = useHeadlessContext()
257
+ // 优先使用 creditsContext 中的 alpcBrand,如果没有则使用 headlessConfig 中的 brand
258
+ const brand = alpcBrand || headlessBrand
255
259
 
256
260
  const { url, initData, headers, ...fetchOptions } = options
257
261
 
@@ -0,0 +1,33 @@
1
+ import { ProductVariant } from '@anker-in/lib'
2
+ import { FunctionMemberPriceResult } from '../memberPriceTypes'
3
+ import { getFunctionMemberPrice } from '../utils/getFunctionMemberPrice'
4
+ import { useMemo } from 'react'
5
+ import { useCreditsContext } from '../provider'
6
+ import { useHeadlessContext } from '@anker-in/lib'
7
+
8
+ // 计算单件商品的会员价
9
+ export const useFunctionMemberPrice = ({ variant }: { variant?: ProductVariant }) => {
10
+ const { memberPriceDiscount } = useCreditsContext()
11
+ const { locale = '' } = useHeadlessContext()
12
+
13
+ const memberPrice:
14
+ | FunctionMemberPriceResult
15
+ | (Partial<FunctionMemberPriceResult> & {
16
+ hasMemberPrice: false
17
+ }) = useMemo(() => {
18
+ const result = getFunctionMemberPrice({
19
+ memberPriceDiscount: memberPriceDiscount,
20
+ currencyCode: variant?.price.currencyCode,
21
+ variant,
22
+ locale,
23
+ })
24
+
25
+ if (result) {
26
+ return result as FunctionMemberPriceResult
27
+ }
28
+
29
+ return { hasMemberPrice: false }
30
+ }, [locale, memberPriceDiscount, variant])
31
+
32
+ return memberPrice
33
+ }
@@ -15,8 +15,9 @@ function useMyRewards({
15
15
  pageSize: number
16
16
  consumeType?: AlpcConsumeType
17
17
  }) {
18
- const { isLoadingProfile, profile } = useCreditsContext()
19
- const { brand, locale, appName } = useHeadlessContext()
18
+ const { isLoadingProfile, profile, alpcBrand } = useCreditsContext()
19
+ const { brand: headlessBrand, locale, appName } = useHeadlessContext()
20
+ const brand = alpcBrand || headlessBrand
20
21
  const isLogin = !!profile
21
22
 
22
23
  const [myRewards, setMyRewards] = useState<RedeemLogResponse[]>([])
@@ -1,6 +1,7 @@
1
1
  import { ALPC_COUNTRY_MAP } from '../const'
2
2
  import { useAlpcMutation, type UseMutationConfig } from './useAlpcFetch'
3
3
  import { useHeadlessContext } from '@anker-in/lib'
4
+ import { useCreditsContext } from '../provider'
4
5
 
5
6
  type RedeemCouponResponse = {
6
7
  data: {
@@ -12,7 +13,9 @@ type RedeemCouponResponse = {
12
13
  }
13
14
 
14
15
  export const useRedeemCoupon = (mutationOptions: UseMutationConfig<RedeemCouponResponse> = {}) => {
15
- const { locale, appName, brand } = useHeadlessContext()
16
+ const { alpcBrand } = useCreditsContext()
17
+ const { locale, appName, brand: headlessBrand } = useHeadlessContext()
18
+ const brand = alpcBrand || headlessBrand
16
19
 
17
20
  return useAlpcMutation<
18
21
  RedeemCouponResponse,
@@ -1,6 +1,7 @@
1
1
  import { ALPC_COUNTRY_MAP } from '../const'
2
2
  import { useAlpcMutation, type UseMutationConfig } from './useAlpcFetch'
3
3
  import { useHeadlessContext } from '@anker-in/lib'
4
+ import { useCreditsContext } from '../provider'
4
5
 
5
6
  type RedeemProductResponse = {
6
7
  code: number
@@ -10,7 +11,9 @@ type RedeemProductResponse = {
10
11
  }
11
12
 
12
13
  export const useRedeemProduct = (mutationOptions: UseMutationConfig<RedeemProductResponse> = {}) => {
13
- const { storeDomain, locale, appName, brand } = useHeadlessContext()
14
+ const { alpcBrand } = useCreditsContext()
15
+ const { storeDomain, locale, appName, brand: headlessBrand } = useHeadlessContext()
16
+ const brand = alpcBrand || headlessBrand
14
17
 
15
18
  return useAlpcMutation<
16
19
  RedeemProductResponse,
@@ -8,8 +8,9 @@ import { useHeadlessContext } from '@anker-in/lib'
8
8
 
9
9
  function useRedeemableList() {
10
10
  let locale = '' as string
11
- const { profile, isLoadingProfile } = useCreditsContext()
12
- const { locale: contextLocale, brand } = useHeadlessContext()
11
+ const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()
12
+ const { locale: contextLocale, brand: headlessBrand } = useHeadlessContext()
13
+ const brand = alpcBrand || headlessBrand
13
14
 
14
15
  if (contextLocale === 'pl') {
15
16
  locale = 'eu'
@@ -30,7 +31,6 @@ function useRedeemableList() {
30
31
  page: 1,
31
32
  page_size: 20,
32
33
  country: (ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),
33
- task_target: 1, // 1: 'app', 2: 'website'
34
34
  },
35
35
  })
36
36
 
@@ -0,0 +1,13 @@
1
+ // Function 折扣类型
2
+ export enum FunctionDiscountType {
3
+ Percentage = 1,
4
+ FixedAmount,
5
+ FixedPrice,
6
+ }
7
+
8
+ // 小数位取舍方式
9
+ export enum RoundSelected {
10
+ RoundHighest = 'round_highest',
11
+ RoundLowest = 'round_lowest',
12
+ RoundNearest = 'round_nearest',
13
+ }
@@ -0,0 +1,54 @@
1
+ import { FunctionDiscountType, RoundSelected } from './memberPriceConst'
2
+
3
+ // 价格结尾配置
4
+ export type PriceEndingConf = {
5
+ apply_price_ending: boolean
6
+ one_decimal_place: string
7
+ two_decimal_place: string
8
+ round_selected: RoundSelected
9
+ }
10
+
11
+ // 折扣配置
12
+ export type DiscountConfig = {
13
+ discount_type: FunctionDiscountType
14
+ discount_value: number
15
+ price_ending_conf?: PriceEndingConf
16
+ }
17
+
18
+ // 会员价配置类型
19
+ export type FunctionMemberPriceConfig = {
20
+ rule_id: string
21
+ result_detail: {
22
+ member_discounts?: {
23
+ user_identity: number // 用户身份:1-普通会员,2-高级会员等
24
+ main_products: {
25
+ all_store_variant: boolean
26
+ variants: {
27
+ variant_id: string
28
+ sku: string
29
+ handle: string
30
+ }[]
31
+ }
32
+ discount_conf: DiscountConfig
33
+ }[]
34
+ }
35
+ discount_combinations: {
36
+ other_product_discounts: boolean
37
+ }
38
+ }
39
+
40
+ // 会员价计算结果
41
+ export type FunctionMemberPriceResult = {
42
+ hasMemberPrice: boolean
43
+ useCoupon: boolean
44
+ originalPrice: number
45
+ originalPriceWithCurrency: string
46
+ salePrice: number
47
+ salePriceWithCurrency: string
48
+ salePriceWithoutCoupon: number
49
+ salePriceWithoutCouponWithCurrency: string
50
+ savePrice: number
51
+ savePriceWithCurrency: string
52
+ savePriceWithoutCoupon: number
53
+ savePriceWithoutCouponWithCurrency: string
54
+ }
@@ -2,6 +2,7 @@ import { createContext, PropsWithChildren, useContext } from 'react'
2
2
  import type { DTC_TASK_TYPE } from './const'
3
3
  import type { CreditInfoResponse } from './response'
4
4
  import { CreditsPageCommon } from '../type'
5
+ import { FunctionMemberPriceConfig } from './memberPriceTypes'
5
6
 
6
7
  type Context = {
7
8
  profile: any
@@ -18,6 +19,8 @@ type Context = {
18
19
  pageGroup: string
19
20
  }
20
21
  pageCommon: CreditsPageCommon
22
+ memberPriceDiscount?: FunctionMemberPriceConfig[]
23
+ alpcBrand?: string
21
24
  }
22
25
 
23
26
  export const CreditsContext = createContext<Context>({
@@ -34,6 +37,8 @@ export const CreditsContext = createContext<Context>({
34
37
  pageGroup: '',
35
38
  },
36
39
  pageCommon: {},
40
+ memberPriceDiscount: undefined,
41
+ alpcBrand: undefined,
37
42
  })
38
43
 
39
44
  export function CreditsProvider({
@@ -50,6 +55,8 @@ export function CreditsProvider({
50
55
  fetchCreditInfo,
51
56
  gtm,
52
57
  pageCommon,
58
+ memberPriceDiscount,
59
+ alpcBrand,
53
60
  }: PropsWithChildren<Context>) {
54
61
  return (
55
62
  <CreditsContext.Provider
@@ -66,6 +73,8 @@ export function CreditsProvider({
66
73
  customerLoading,
67
74
  gtm,
68
75
  pageCommon,
76
+ memberPriceDiscount,
77
+ alpcBrand,
69
78
  }}
70
79
  >
71
80
  {children}
@@ -0,0 +1,8 @@
1
+ // 从 Shopify GraphQL ID 中提取数字 ID
2
+ export function atobID(id: string) {
3
+ if (id && typeof id === 'string' && id.includes('/')) {
4
+ return id.split('/').pop()?.split('?')?.shift()
5
+ } else {
6
+ return id
7
+ }
8
+ }
@@ -0,0 +1,57 @@
1
+ import { FunctionDiscountType, RoundSelected } from '../memberPriceConst'
2
+ import { DiscountConfig } from '../memberPriceTypes'
3
+ import Decimal from 'decimal.js'
4
+
5
+ // Function 计算折后价
6
+ export const functionDiscountCalculate = ({
7
+ config,
8
+ price,
9
+ }: {
10
+ config: DiscountConfig
11
+ price: number
12
+ }) => {
13
+ const { apply_price_ending, one_decimal_place, two_decimal_place, round_selected } =
14
+ config.price_ending_conf || {}
15
+
16
+ let salePrice = new Decimal(price)
17
+
18
+ switch (config.discount_type) {
19
+ // 百分比折扣
20
+ case FunctionDiscountType.Percentage:
21
+ salePrice = salePrice.mul(100 - config.discount_value).div(100)
22
+ break
23
+ // 固定金额折扣
24
+ case FunctionDiscountType.FixedAmount:
25
+ salePrice = salePrice.sub(config.discount_value)
26
+ break
27
+ // 固定价格折扣
28
+ case FunctionDiscountType.FixedPrice:
29
+ salePrice = new Decimal(config.discount_value)
30
+ break
31
+ default:
32
+ break
33
+ }
34
+
35
+ if (apply_price_ending) {
36
+ // 小数位取舍
37
+ switch (round_selected) {
38
+ case RoundSelected.RoundHighest:
39
+ salePrice = salePrice.ceil()
40
+ break
41
+ case RoundSelected.RoundLowest:
42
+ salePrice = salePrice.floor()
43
+ break
44
+ case RoundSelected.RoundNearest:
45
+ salePrice = salePrice.round()
46
+ break
47
+ default:
48
+ salePrice = new Decimal(salePrice.toFixed(2, Decimal.ROUND_DOWN))
49
+ break
50
+ }
51
+
52
+ const priceEnding = salePrice.toString().split('.')
53
+ salePrice = new Decimal(priceEnding[0] + '.' + one_decimal_place + two_decimal_place)
54
+ }
55
+
56
+ return salePrice.toNumber()
57
+ }
@@ -0,0 +1,135 @@
1
+ import { formatPrice } from '../utils'
2
+ import { FunctionMemberPriceConfig, FunctionMemberPriceResult } from '../memberPriceTypes'
3
+ import { ProductVariant } from '@anker-in/lib'
4
+ import { functionDiscountCalculate } from './functionDiscountCalculate'
5
+ import Decimal from 'decimal.js'
6
+ import { getFunctionMemberPriceDiscountConfig } from './getFunctionMemberPriceDiscountConfig'
7
+ import variantGetCoupon from './variantGetCoupon'
8
+
9
+ // 计算单件商品的会员价
10
+ export const getFunctionMemberPrice = ({
11
+ memberPriceDiscount,
12
+ currencyCode,
13
+ variant,
14
+ locale,
15
+ }: {
16
+ memberPriceDiscount?: FunctionMemberPriceConfig[]
17
+ currencyCode?: string
18
+ variant?: ProductVariant
19
+ locale: string
20
+ }) => {
21
+ const couponData = variantGetCoupon({ variant })
22
+
23
+ // variant对应的会员价折扣配置
24
+ const { memberPriceDiscountConfig, activeMemberPriceConfig } = getFunctionMemberPriceDiscountConfig({
25
+ config: memberPriceDiscount,
26
+ variant,
27
+ })
28
+
29
+ const useCoupon = !!activeMemberPriceConfig?.discount_combinations.other_product_discounts
30
+
31
+ if (!memberPriceDiscountConfig) {
32
+ return false as false
33
+ }
34
+
35
+ const originalPrice = {
36
+ amount: variant?.price.amount || 0,
37
+ priceWithCurrency: formatPrice({
38
+ amount: variant?.price.amount || 0,
39
+ currencyCode: currencyCode || 'USD',
40
+ locale,
41
+ }),
42
+ }
43
+
44
+ const salePriceWithoutCouponAmount = memberPriceDiscountConfig
45
+ ? functionDiscountCalculate({
46
+ config: memberPriceDiscountConfig,
47
+ price: variant?.price.amount || 0,
48
+ })
49
+ : variant?.price.amount || 0
50
+ const salePriceWithoutCoupon = {
51
+ amount: salePriceWithoutCouponAmount,
52
+ priceWithCurrency: formatPrice({
53
+ amount: salePriceWithoutCouponAmount,
54
+ currencyCode: currencyCode || 'USD',
55
+ locale,
56
+ }),
57
+ }
58
+
59
+ // function 会员价是在原价的基础上进行计算,暂不支持折后价
60
+ let salePriceAmount = salePriceWithoutCouponAmount
61
+
62
+ // 减去code的优惠
63
+ if (couponData?.variant_price4wscode && variant && useCoupon) {
64
+ if (useCoupon) {
65
+ // code的优惠金额
66
+ const codeSaveAmountDecimal = new Decimal(variant.price.amount).minus(couponData.variant_price4wscode)
67
+ salePriceAmount = new Decimal(salePriceWithoutCouponAmount).minus(codeSaveAmountDecimal).toNumber()
68
+ } else {
69
+ // 不能与 code 同时使用,需要判断会员价是否小于 code 的优惠金额,如果小于则当做没有会员价
70
+ const codeSaveAmountDecimal = new Decimal(variant.price.amount).minus(couponData.variant_price4wscode)
71
+ if (salePriceWithoutCouponAmount > codeSaveAmountDecimal.toNumber()) {
72
+ return false as false
73
+ }
74
+ }
75
+ }
76
+
77
+ const salePrice = {
78
+ amount: salePriceAmount,
79
+ priceWithCurrency: formatPrice({
80
+ amount: salePriceAmount,
81
+ currencyCode: currencyCode || 'USD',
82
+ locale,
83
+ }),
84
+ }
85
+
86
+ const savePriceAmount = new Decimal(originalPrice.amount).minus(salePrice.amount).toNumber()
87
+ const savePrice = {
88
+ amount: savePriceAmount,
89
+ priceWithCurrency: formatPrice({
90
+ amount: savePriceAmount,
91
+ currencyCode: currencyCode || 'USD',
92
+ locale,
93
+ maximumFractionDigits: 2,
94
+ }),
95
+ }
96
+
97
+ const savePriceWithoutCouponAmount = new Decimal(originalPrice.amount)
98
+ .minus(salePriceWithoutCoupon.amount)
99
+ .toNumber()
100
+ const savePriceWithoutCoupon = {
101
+ amount: savePriceWithoutCouponAmount,
102
+ priceWithCurrency: formatPrice({
103
+ amount: savePriceWithoutCouponAmount,
104
+ currencyCode: currencyCode || 'USD',
105
+ locale,
106
+ maximumFractionDigits: 2,
107
+ }),
108
+ }
109
+
110
+ const result: FunctionMemberPriceResult = {
111
+ // 是否存在会员价
112
+ hasMemberPrice: !!memberPriceDiscountConfig,
113
+ useCoupon,
114
+ // 原价
115
+ originalPrice: originalPrice.amount,
116
+ originalPriceWithCurrency: originalPrice.priceWithCurrency as string,
117
+ // 使用券后的折后价
118
+ salePrice: salePrice.amount,
119
+ salePriceWithCurrency: salePrice.priceWithCurrency as string,
120
+
121
+ // 不使用券的折后价
122
+ salePriceWithoutCoupon: salePriceWithoutCoupon.amount,
123
+ salePriceWithoutCouponWithCurrency: salePriceWithoutCoupon.priceWithCurrency as string,
124
+
125
+ // 包含使用券的节省金额
126
+ savePrice: savePrice.amount,
127
+ savePriceWithCurrency: savePrice.priceWithCurrency as string,
128
+
129
+ // 不使用券的节省金额
130
+ savePriceWithoutCoupon: savePriceWithoutCoupon.amount,
131
+ savePriceWithoutCouponWithCurrency: savePriceWithoutCoupon.priceWithCurrency as string,
132
+ }
133
+
134
+ return result
135
+ }
@@ -0,0 +1,51 @@
1
+ import { DiscountConfig, FunctionMemberPriceConfig } from '../memberPriceTypes'
2
+ import { ProductVariant } from '@anker-in/lib'
3
+ import { atobID } from './atobID'
4
+
5
+ // 获取会员价折扣配置
6
+ export const getFunctionMemberPriceDiscountConfig = ({
7
+ config,
8
+ variant,
9
+ }: {
10
+ config?: FunctionMemberPriceConfig[]
11
+ variant?: ProductVariant
12
+ }) => {
13
+ let memberPriceDiscountConfig: DiscountConfig | undefined
14
+ let activeMemberPriceConfig: FunctionMemberPriceConfig | undefined
15
+
16
+ if (!config || !variant) {
17
+ return {
18
+ memberPriceDiscountConfig,
19
+ activeMemberPriceConfig,
20
+ }
21
+ }
22
+
23
+ for (const configItem of config) {
24
+ memberPriceDiscountConfig = configItem.result_detail.member_discounts?.find(discountItem => {
25
+ if (discountItem.main_products.all_store_variant) {
26
+ return discountItem
27
+ }
28
+
29
+ return discountItem.main_products.variants.find(
30
+ variantConfig => String(variantConfig.variant_id) === atobID(variant.id as string)
31
+ )
32
+ })?.discount_conf
33
+
34
+ if (memberPriceDiscountConfig) {
35
+ activeMemberPriceConfig = configItem
36
+ break
37
+ }
38
+ }
39
+
40
+ if (!memberPriceDiscountConfig) {
41
+ return {
42
+ memberPriceDiscountConfig,
43
+ activeMemberPriceConfig,
44
+ }
45
+ }
46
+
47
+ return {
48
+ memberPriceDiscountConfig,
49
+ activeMemberPriceConfig,
50
+ }
51
+ }