@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,34 @@
1
+ import { ProductVariant } from '@anker-in/lib'
2
+ import { atobID } from './atobID'
3
+
4
+ const variantGetCoupon = ({
5
+ variant,
6
+ channel = '',
7
+ }: {
8
+ variant?: ProductVariant
9
+ channel?: string
10
+ }) => {
11
+ if (!variant) return undefined
12
+
13
+ const hideChannel = 'wsch'
14
+ const discountCodeApp = variant?.metafields?.discountCodeApp || []
15
+
16
+ const results = discountCodeApp?.filter((coupon: any) => {
17
+ const variantId = atobID(variant.id as string)
18
+ const isActive =
19
+ (!coupon?.ends_at || new Date(coupon?.ends_at).getTime() > new Date().getTime()) &&
20
+ new Date(coupon?.starts_at).getTime() <= new Date().getTime() &&
21
+ coupon.variant_shopify_id === +(variantId || '')
22
+
23
+ return (
24
+ isActive &&
25
+ (channel
26
+ ? coupon?.title?.toLocaleLowerCase().includes(channel)
27
+ : !coupon?.title?.toLocaleLowerCase().includes(hideChannel))
28
+ )
29
+ })
30
+
31
+ return results?.[0]
32
+ }
33
+
34
+ export default variantGetCoupon
@@ -0,0 +1,270 @@
1
+ import { Button, Container, Heading, Picture, Text } from '@anker-in/headless-ui'
2
+ import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'
3
+ import { motion } from 'framer-motion'
4
+ import { useMemo, useState } from 'react'
5
+
6
+ import { TaskType, type CreditsAnkersolixTaskProps } from './type'
7
+ import { useActions } from '../creditsWaysToGetCredits/useActions'
8
+ import { useCreditsContext } from '../context/provider'
9
+ import { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
10
+ import { useRegistration } from '../../registration'
11
+ import { CreditsUploadReceiptModal } from '../modal/creditsUploadReceiptModal'
12
+ import { CreditsSubscribeModal } from '../modal/subscribeModal'
13
+
14
+ export const CreditsAnkersolixTask = ({ copy, classNames, id }: CreditsAnkersolixTaskProps & { id?: string }) => {
15
+ const [showMore, setShowMore] = useState(false)
16
+ const { profile } = useCreditsContext()
17
+ const { authCodeActivate } = useRegistration()
18
+ const { brand } = useHeadlessContext()
19
+ const rounded = ROUNDED_BRANDS.includes(brand)
20
+ const isLogin = !!profile
21
+
22
+ const [isUploadReceiptModalOpen, setIsUploadReceiptModalOpen] = useState(false)
23
+ const [isSubscribeModalOpen, setIsSubscribeModalOpen] = useState(false)
24
+ const [isSubscribeSuccess, setIsSubscribeSuccess] = useState(false)
25
+ const [isUploadReceiptSuccess, setIsUploadReceiptSuccess] = useState(false)
26
+
27
+ const { actions } = useActions({
28
+ copy,
29
+ subscribe: {
30
+ openSubscribePopup: () => setIsSubscribeModalOpen(true),
31
+ isSuccess: isSubscribeSuccess,
32
+ },
33
+ uploadReceipt: {
34
+ openUploadReceiptPopup: () => setIsUploadReceiptModalOpen(true),
35
+ isSuccess: isUploadReceiptSuccess,
36
+ },
37
+ })
38
+ const list = useMemo(() => {
39
+ const list = copy.list
40
+ .map(item => {
41
+ if (!actions[item.id as keyof typeof actions]) {
42
+ return undefined
43
+ }
44
+ const { finished, notLogin, notFinished, completed } = actions[item.id as keyof typeof actions]
45
+ let buttonLabel = ''
46
+ let handleClick = undefined
47
+ let link = undefined
48
+ if (!isLogin) {
49
+ buttonLabel = notLogin.buttonLabel
50
+ handleClick = notLogin.handleClick
51
+ } else if (finished) {
52
+ buttonLabel = completed.buttonLabel
53
+ handleClick = undefined
54
+ } else {
55
+ buttonLabel = notFinished.buttonLabel
56
+ handleClick = notFinished.handleClick
57
+ link = (notFinished as { link: string }).link
58
+ }
59
+ return {
60
+ ...item,
61
+ buttonLabel,
62
+ handleClick,
63
+ finished,
64
+ link,
65
+ }
66
+ })
67
+ .filter(Boolean) as {
68
+ title: string
69
+ credits: string
70
+ id: TaskType
71
+ buttonLabel: string
72
+ finished: boolean
73
+ link: string
74
+ handleClick: (() => void) | undefined
75
+ }[]
76
+
77
+ // 登录后,保留原顺序,将已完成的任务放在最后
78
+ if (isLogin) {
79
+ return list.sort((a, b) => {
80
+ if (a?.finished && !b?.finished) {
81
+ return 1 // a已完成,b未完成,a排在后面
82
+ }
83
+ if (!a?.finished && b?.finished) {
84
+ return -1 // a未完成,b已完成,a排在前面
85
+ }
86
+ return 0 // 都已完成或都未完成,保持原顺序
87
+ })
88
+ } else {
89
+ return list
90
+ }
91
+ }, [actions, copy.list, isLogin])
92
+
93
+ // 只有大于3个任务时才显示蒙层
94
+ const shouldShowMask = list.length > 3
95
+
96
+ return (
97
+ <Container id={id} className="[&>div]:l:!px-0 bg-[#F5F5F7]">
98
+ <Heading as="h2" size="4" html={copy.title} className='md:px-[16px]'/>
99
+ <div
100
+ className={cn(
101
+ 'mt-[24px] p-[32px] md-l:p-[32px] md:p-[16px] relative overflow-hidden',
102
+ rounded ? 'rounded-[8px]' : '',
103
+ !rounded && 'l:rounded-none'
104
+ )}
105
+ style={{
106
+ background: 'linear-gradient(180deg, rgba(255, 241, 214, 0) 39.51%, #F4CA81 119.53%)',
107
+ }}
108
+ >
109
+ {/* 径向渐变背景层 - 使用伪元素模拟 */}
110
+ <div
111
+ className="absolute inset-0 pointer-events-none -z-10"
112
+ style={{
113
+ background: 'radial-gradient(ellipse 130% 205% at 45% -20%, #FFF6EA 0%, #FFFFFF 73%, #FFF1D6 100%)',
114
+ }}
115
+ />
116
+ {/* 副标题和装饰图部分 */}
117
+ <div className="flex items-center justify-between h-[560px] md:h-auto md:flex-col md:items-start l:h-auto l:mb-[16px] l:flex-col-reverse l:items-start">
118
+ <div className="flex flex-col gap-[8px]">
119
+ <Heading
120
+ as="h3"
121
+ size={4}
122
+ html={copy?.subtitle}
123
+ className="text-[32px] font-bold text-[#080a0f] tracking-[-1.28px] leading-[1.2] xl:text-[24px]"
124
+ />
125
+ <div className="flex items-center gap-[8px]">
126
+ <p
127
+ className="text-[48px] font-bold tracking-[-1.92px] leading-none bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-43% to-[#00db84] bg-clip-text text-transparent xl-xxl:text-[40px] l-xl:text-[32px] l:text-[24px]"
128
+ dangerouslySetInnerHTML={{ __html: copy.equalCredits }}
129
+ />
130
+ </div>
131
+ </div>
132
+ {copy.mainImage?.url && (
133
+ <Picture className="w-full max-w-[50%] md:max-w-full md:mt-[24px] l:max-w-full l:mt-[24px]" source={copy.mainImage.url} />
134
+ )}
135
+ </div>
136
+
137
+ {/* 卡片列表 */}
138
+ <div className="relative">
139
+ <motion.div
140
+ className={cn(
141
+ 'grid grid-cols-3 gap-[16px] overflow-hidden md:grid-cols-1 md-l:grid-cols-2 min-md:!h-auto'
142
+ )}
143
+ initial={{ height: shouldShowMask ? 512 : 'auto' }}
144
+ animate={{ height: showMore || !shouldShowMask ? 'auto' : 512 }}
145
+ transition={{ duration: 0.3 }}
146
+ onAnimationComplete={() => {
147
+ if (!showMore && shouldShowMask && window.screen.width < 768) {
148
+ const section = document.getElementById(id || 'ankersolix-task')
149
+ if (section) {
150
+ section.scrollIntoView({ behavior: 'smooth', block: 'end' })
151
+ }
152
+ }
153
+ }}
154
+ >
155
+ {list.map(item => (
156
+ <div
157
+ key={item.id}
158
+ className={cn(
159
+ 'flex min-h-[241px] xl-xxl:min-h-[192px] l:min-h-[160px] l-xl:min-h-[170px] flex-col justify-between bg-white p-[32px] md:p-[16px] l:p-[24px]',
160
+ rounded ? '' : ''
161
+ )}
162
+ >
163
+ <div>
164
+ <Heading
165
+ as="h4"
166
+ html={item.title}
167
+ size={2}
168
+ className="text-[24px] font-bold text-[#080a0f] tracking-[-0.96px] leading-[1.2] text-pretty md:text-[18px] l:text-[20px]"
169
+ />
170
+ <div className="mt-[8px] flex items-center gap-[4px]">
171
+ <Picture
172
+ className="size-[24px] [&_path]:size-full"
173
+ source="https://cdn.shopify.com/s/files/1/0511/6346/3874/files/20250902-153351.png?v=1756798450"
174
+ />
175
+ <Text
176
+ as="p"
177
+ html={item.credits}
178
+ size={2}
179
+ className="text-[18px] font-bold text-[#080a0f] tracking-[-0.36px] leading-[1.4] md:text-[16px]"
180
+ />
181
+ </div>
182
+ </div>
183
+
184
+ {item.handleClick &&
185
+ !(item.id === TaskType.UploadReceipt && isUploadReceiptSuccess) &&
186
+ !(item.id === TaskType.Activate && authCodeActivate.isActivateSuccess) &&
187
+ !(item.id === TaskType.Subscribe && isSubscribeSuccess) ? (
188
+ <Button
189
+ as={item.link ? 'a' : 'button'}
190
+ {...(item.link && { href: item.link })}
191
+ {...(item.handleClick && { onClick: item.handleClick })}
192
+ variant="primary"
193
+ size="lg"
194
+ className="mt-[24px] w-fit bg-[#080a0f] text-white text-[16px] font-bold tracking-[-0.64px] leading-[1.2]"
195
+ >
196
+ {item.buttonLabel}
197
+ </Button>
198
+ ) : (
199
+ <Button
200
+ variant="primary"
201
+ size="lg"
202
+ className="mt-[24px] w-fit bg-[#080a0f] text-white text-[16px] font-bold tracking-[-0.64px] leading-[1.2]"
203
+ disabled
204
+ >
205
+ {item.buttonLabel}
206
+ </Button>
207
+ )}
208
+ </div>
209
+ ))}
210
+ {!showMore && shouldShowMask && (
211
+ <div
212
+ className="absolute inset-0 pointer-events-none min-md:hidden"
213
+ style={{ background: 'linear-gradient(180deg, rgba(244, 202, 129, 0) 66.37%, #f4ca81 100%)' }}
214
+ ></div>
215
+ )}
216
+ </motion.div>
217
+ {shouldShowMask && (
218
+ <>
219
+ {showMore ? (
220
+ <button
221
+ className="mx-auto mt-[12px] block w-fit min-md:hidden"
222
+ onClick={() => {
223
+ setShowMore(false)
224
+ }}
225
+ >
226
+ <ChevronUpIcon className="size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]"></ChevronUpIcon>
227
+ </button>
228
+ ) : (
229
+ <>
230
+ <div className="absolute bottom-0 flex w-full translate-y-1/2 justify-center min-md:hidden">
231
+ <button className="w-fit" onClick={() => setShowMore(!showMore)}>
232
+ <ChevronDownIcon className="size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]"></ChevronDownIcon>
233
+ </button>
234
+ </div>
235
+ </>
236
+ )}
237
+ </>
238
+ )}
239
+ </div>
240
+ </div>
241
+ {copy.receipt && (
242
+ <CreditsUploadReceiptModal
243
+ isOpen={isUploadReceiptModalOpen}
244
+ onClose={() => {
245
+ setIsUploadReceiptModalOpen(false)
246
+ }}
247
+ copy={copy.receipt}
248
+ onSuccess={() => {
249
+ setIsUploadReceiptSuccess(true)
250
+ }}
251
+ />
252
+ )}
253
+ {copy.subscribe && (
254
+ <CreditsSubscribeModal
255
+ copy={copy.subscribe}
256
+ onSuccess={() => {
257
+ setIsSubscribeSuccess(true)
258
+ setTimeout(() => {
259
+ setIsSubscribeModalOpen(false)
260
+ }, 3000)
261
+ }}
262
+ isOpen={isSubscribeModalOpen}
263
+ onClose={() => {
264
+ setIsSubscribeModalOpen(false)
265
+ }}
266
+ />
267
+ )}
268
+ </Container>
269
+ )
270
+ }
@@ -0,0 +1,2 @@
1
+ export * from './type'
2
+ export * from './CreditsAnkersolixTask'
@@ -0,0 +1,7 @@
1
+ // 直接引用旧组件的类型
2
+ export {
3
+ type BenefitItem,
4
+ type CreditsWaysToGetCreditsCopy as CreditsAnkersolixTaskCopy,
5
+ type CreditsWaysToGetCreditsProps as CreditsAnkersolixTaskProps,
6
+ TaskType,
7
+ } from '../creditsWaysToGetCredits/type'
@@ -22,7 +22,7 @@ export type CreditsBannerCopy = {
22
22
  }
23
23
  }
24
24
 
25
- export function CreditsBanner({ copy }: { copy: CreditsBannerCopy }) {
25
+ export function CreditsBanner({ copy, id }: { copy: CreditsBannerCopy; id?: string }) {
26
26
  const { profile, openSignInPopup, openSignUpPopup } = useCreditsContext()
27
27
  const isLogin = profile ? Object.keys(profile).length !== 0 : false
28
28
 
@@ -36,7 +36,7 @@ export function CreditsBanner({ copy }: { copy: CreditsBannerCopy }) {
36
36
 
37
37
  return (
38
38
  <>
39
- <div className=" relative w-full">
39
+ <div id={id} className=" relative w-full">
40
40
  <Picture
41
41
  className="aspect-h-[804] aspect-w-[1920] md:aspect-h-[660] md:aspect-w-[390] md-l:aspect-h-[660] md-l:aspect-w-[768]"
42
42
  source={`${copy.pcImg?.url}, ${copy.laptopImg?.url} 1024, ${copy.mobileImg?.url} 768`}
@@ -1,6 +1,6 @@
1
1
  import { Heading, Picture, Text } from '@anker-in/headless-ui'
2
2
  import { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
3
- import IconInfo from './iconInfo'
3
+ import IconInfo from './IconInfo'
4
4
 
5
5
  export interface BenefitItemCopy {
6
6
  icon: {
@@ -16,30 +16,49 @@ const BenefitItem = ({
16
16
  handleClick,
17
17
  isNoteActive,
18
18
  index,
19
+ bigIcon,
20
+ cardBgColor,
21
+ cardBorderColor,
19
22
  }: {
20
23
  item: BenefitItemCopy
21
24
  handleClick: ({ item, index }: { item: BenefitItemCopy; index: number }) => void
22
25
  isNoteActive: boolean
23
26
  index: number
27
+ bigIcon?: boolean
28
+ cardBgColor?: string
29
+ cardBorderColor?: string
24
30
  }) => {
25
31
  const { brand } = useHeadlessContext()
26
32
  const rounded = ROUNDED_BRANDS.includes(brand)
33
+
34
+ // 根据 bigIcon 设置不同屏幕下的图标大小
35
+ // 尺寸:≥1921px=64px, 1441-1920px=54px, ≤1440px=48px
36
+ const iconSizeClass = bigIcon
37
+ ? 'mb-[16px] size-[64px] xl-xxl:size-[54px] xl:size-[48px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0'
38
+ : 'mb-[16px] size-[31px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0'
39
+
40
+ console.log('cardBgColor in BenefitItem', cardBgColor)
41
+ // 背景色和边框色处理
42
+ const cardStyle: React.CSSProperties = {}
43
+ if (cardBgColor) {
44
+ cardStyle.background = cardBgColor
45
+ } else {
46
+ cardStyle.background = 'linear-gradient(119.61deg, #FAFAFA 38.58%, #FFFFFF 63.73%, #F9FCFF 89.37%)'
47
+ }
48
+ if (cardBorderColor) {
49
+ cardStyle.borderColor = cardBorderColor
50
+ }
51
+
27
52
  return (
28
53
  <div
29
54
  className={cn(
30
55
  'relative flex-1 flex flex-col rounded-[16px] border border-white px-[24px] pb-[26px] pt-[24px] md:min-h-[180px] md:p-[16px]',
31
56
  !rounded && 'rounded-none'
32
57
  )}
33
- style={{
34
- background: 'linear-gradient(119.61deg, #FAFAFA 38.58%, #FFFFFF 63.73%, #F9FCFF 89.37%)',
35
- }}
58
+ style={cardStyle}
36
59
  >
37
60
  <div className="flex flex-col">
38
- <Picture
39
- className="mb-[16px] size-[31px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0"
40
- alt={item.icon?.alt}
41
- source={item.icon?.url}
42
- />
61
+ <Picture className={iconSizeClass} alt={item.icon?.alt} source={item.icon?.url} />
43
62
  <div className="flex items-center">
44
63
  <Heading html={item.text} size="2" className="break-all" />
45
64
  {item.note && (
@@ -7,16 +7,19 @@ import { useState } from 'react'
7
7
  import { Grid, Pagination } from 'swiper/modules'
8
8
  import { Swiper, SwiperSlide } from 'swiper/react'
9
9
 
10
- import BenefitItem, { type BenefitItemCopy } from './benefitItem'
10
+ import BenefitItem, { type BenefitItemCopy } from './BenefitItem'
11
11
  import { useCreditsContext } from '../context/provider'
12
12
  import { gaTrack, classNames as cn } from '@anker-in/lib'
13
13
 
14
14
  export type CreditsBenefitsCopy = {
15
15
  title: string
16
16
  benefits: BenefitItemCopy[]
17
+ bigIcon?: boolean
18
+ cardBgColor?: string
19
+ cardBorderColor?: string
17
20
  }
18
21
 
19
- export const CreditsBenefits = ({ copy }: { copy: CreditsBenefitsCopy }) => {
22
+ export const CreditsBenefits = ({ copy, id }: { copy: CreditsBenefitsCopy; id?: string }) => {
20
23
  const [activeNoteIndex, setActiveNoteIndex] = useState<number | null>(null)
21
24
  const { profile, gtm } = useCreditsContext()
22
25
  const handleClick = ({ item, index }: { item: BenefitItemCopy; index: number }) => {
@@ -42,7 +45,7 @@ export const CreditsBenefits = ({ copy }: { copy: CreditsBenefitsCopy }) => {
42
45
  }
43
46
 
44
47
  return (
45
- <Container id="benefits" className="!z-[30] bg-[#F5F5F7]">
48
+ <Container id={id} className="!z-[30] bg-[#F5F5F7]">
46
49
  <Heading as="h2" size="4" html={copy?.title} />
47
50
  <div className="mt-[24px] grid grid-cols-4 xl:grid-cols-3 gap-[16px] l:hidden items-stretch">
48
51
  {copy.benefits.map((item, index) => (
@@ -52,6 +55,9 @@ export const CreditsBenefits = ({ copy }: { copy: CreditsBenefitsCopy }) => {
52
55
  handleClick={handleClick}
53
56
  isNoteActive={activeNoteIndex === index}
54
57
  index={index}
58
+ bigIcon={copy.bigIcon}
59
+ cardBgColor={copy.cardBgColor}
60
+ cardBorderColor={copy.cardBorderColor}
55
61
  />
56
62
  ))}
57
63
  </div>
@@ -88,6 +94,9 @@ export const CreditsBenefits = ({ copy }: { copy: CreditsBenefitsCopy }) => {
88
94
  handleClick={handleClick}
89
95
  isNoteActive={activeNoteIndex === index}
90
96
  index={index}
97
+ bigIcon={copy.bigIcon}
98
+ cardBgColor={copy.cardBgColor}
99
+ cardBorderColor={copy.cardBorderColor}
91
100
  />
92
101
  </SwiperSlide>
93
102
  ))}
@@ -1,4 +1,4 @@
1
- import { Container, Heading } from '@anker-in/headless-ui'
1
+ import { Container, Heading, Text } from '@anker-in/headless-ui'
2
2
  import { useMemo, useState } from 'react'
3
3
 
4
4
  import RedeemableItem from './RedeemableItem'
@@ -8,8 +8,9 @@ import { useProductsByHandles } from '@anker-in/lib'
8
8
  import { CreditsCashCopy, RedeemItem } from './type'
9
9
  import { Product, classNames as cn } from '@anker-in/lib'
10
10
  import { useCreditsContext } from '../context/provider'
11
+ import { numberFormat } from '../context/utils'
11
12
 
12
- export const CreditsCash = ({ copy }: { copy: CreditsCashCopy }) => {
13
+ export const CreditsCash = ({ copy, id }: { copy: CreditsCashCopy; id?: string }) => {
13
14
  const [rules, setRules] = useState<string | string[]>()
14
15
  const { redeemableList } = useRedeemableList()
15
16
  const { pageCommon } = useCreditsContext()
@@ -50,8 +51,9 @@ export const CreditsCash = ({ copy }: { copy: CreditsCashCopy }) => {
50
51
  }, [productByHandles, copy.list, redeemableList])
51
52
 
52
53
  return (
53
- <Container className={cn('bg-[#F5F5F5]')}>
54
+ <Container id={id} className={cn('bg-[#F5F5F5]')}>
54
55
  <Heading as="h2" size="4" html={copy.title} />
56
+
55
57
  <div className="relative mt-[24px] grid grid-cols-4 gap-[16px] l:gap-[12px] md:grid-cols-2 md-xl:grid-cols-3">
56
58
  {list?.map((item, index: number) => (
57
59
  <RedeemableItem
@@ -113,11 +113,14 @@ function RedeemableItem({
113
113
  <div
114
114
  className={cn(
115
115
  'flex flex-col items-center rounded-[16px] bg-[#EAEAEC] p-[24px] md:rounded-[12px] md:px-[8px] xl:py-[16px] md-xl:px-[16px]',
116
- !rounded && 'rounded-none',
116
+ !rounded && 'rounded-none md:rounded-none',
117
117
  className
118
118
  )}
119
119
  >
120
- <div className={cn('relative mx-auto h-[224px] w-fit l:h-[120px] l-xxl:h-[138px]')}>
120
+ <a
121
+ href={`/products/${itemData.product.handle}`}
122
+ className={cn('relative mx-auto h-[224px] w-fit l:h-[120px] l-xxl:h-[138px]')}
123
+ >
121
124
  <Picture
122
125
  className="mx-auto h-full w-auto"
123
126
  imgClassName="h-full object-contain"
@@ -127,13 +130,13 @@ function RedeemableItem({
127
130
  itemData?.productVariant?.image?.url
128
131
  }
129
132
  ></Picture>
130
- </div>
133
+ </a>
131
134
  <div className={cn('mt-[22px] w-full l:mt-[8px]')}>
132
135
  <Text
133
136
  html={itemData?.product?.title}
134
137
  title={itemData.config?.title || itemData.alpcData?.title || itemData.product?.title}
135
138
  size={2}
136
- className="line-clamp-2 h-[58px] text-[24px] leading-[1.2] l:h-[40px] l:text-[16px] l-xxl:h-[48px] l-xxl:text-[20px]"
139
+ className="line-clamp-2 h-[58px] text-[24px] l-xxl:text-[20px] l:text-[16px] leading-[1.2] l:h-[40px] l-xxl:h-[48px]"
137
140
  />
138
141
  {itemData?.config?.rules?.split('<br>')?.length > 0 && (
139
142
  <button
@@ -163,16 +166,8 @@ function RedeemableItem({
163
166
  {pageCommon?.ruleLabel}
164
167
  </button>
165
168
  )}
166
- <Text
167
- html={formatPrice({
168
- amount: itemData?.productVariant?.price.amount,
169
- currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',
170
- locale: locale,
171
- })}
172
- className="mt-[24px] text-[24px] font-bold text-[#D1D1D1] line-through l:text-[14px]"
173
- as="p"
174
- />
175
- <div className="flex items-center l:mt-[12px] laptop:text-[16px] lg-desktop:text-[18px]">
169
+
170
+ <div className="flex flex-wrap items-center l:mt-[12px] laptop:text-[16px] lg-desktop:text-[18px]">
176
171
  <Picture
177
172
  className="size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]"
178
173
  source="https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783"
@@ -185,7 +180,16 @@ function RedeemableItem({
185
180
  })}`}
186
181
  size={2}
187
182
  as="p"
188
- className="ml-[4px] mt-[4px] text-[28px] font-bold leading-none md:text-[18px] l-xxl:text-[24px] md-l:text-[20px] "
183
+ className="ml-[4px] mt-[4px] font-bold leading-none text-[24px] l-xxl:text-[20px] l:text-[16px]"
184
+ />
185
+ <Text
186
+ html={formatPrice({
187
+ amount: itemData?.productVariant?.price.amount,
188
+ currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',
189
+ locale: locale,
190
+ })}
191
+ className="l-xxl:text-[20px] mt-[4px] l:text-[16px] ml-[4px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through"
192
+ as="p"
189
193
  />
190
194
  </div>
191
195
 
@@ -17,7 +17,7 @@ export type CreditsFaqCopy = {
17
17
  answer: string
18
18
  }[]
19
19
  }
20
- export const CreditsFaq = ({ copy }: { copy: CreditsFaqCopy }) => {
20
+ export const CreditsFaq = ({ copy, id }: { copy: CreditsFaqCopy; id?: string }) => {
21
21
  const { title, items: faqList, subTitle = '' } = copy || {}
22
22
  const { brand } = useHeadlessContext()
23
23
  const rounded = ROUNDED_BRANDS.includes(brand)
@@ -35,7 +35,7 @@ export const CreditsFaq = ({ copy }: { copy: CreditsFaqCopy }) => {
35
35
  }, [faqList, categoryList.length, activeTab])
36
36
 
37
37
  return (
38
- <Container className="bg-[#F5F5F7]" id="faq">
38
+ <Container id={id} className="bg-[#F5F5F7]">
39
39
  {title && <Heading as="h2" size="4" html={copy?.title} />}
40
40
  {subTitle && (
41
41
  <div className="mt-[8px] flex flex-row">
@@ -18,7 +18,7 @@ export type CreditsInfoCardCopy = {
18
18
  buttons: ButtonConfig[]
19
19
  }
20
20
 
21
- export function CreditsInfoCard({ copy }: { copy: CreditsInfoCardCopy }) {
21
+ export function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?: string }) {
22
22
  const [openActivities, setOpenActivities] = useState(false)
23
23
  const [openRewards, setOpenRewards] = useState(false)
24
24
  const [hover, setHover] = useState<boolean>(false)
@@ -42,7 +42,7 @@ export function CreditsInfoCard({ copy }: { copy: CreditsInfoCardCopy }) {
42
42
  }, [])
43
43
 
44
44
  return (
45
- <Container asChild id="infoCard" className="-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]">
45
+ <Container asChild id={id} className="-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]">
46
46
  <div
47
47
  className={cn(
48
48
  'mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]',