@anker-in/campaign-ui 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/dist/cjs/components/chat/index.js +1 -1
  2. package/dist/cjs/components/chat/index.js.map +3 -3
  3. package/dist/cjs/components/credits/const.d.ts +1 -0
  4. package/dist/cjs/components/credits/const.js +2 -0
  5. package/dist/cjs/components/credits/const.js.map +7 -0
  6. package/dist/cjs/components/credits/context/hooks/useRedeemAndBuy.js +1 -1
  7. package/dist/cjs/components/credits/context/hooks/useRedeemAndBuy.js.map +2 -2
  8. package/dist/cjs/components/credits/context/hooks/useSubscribed.js +1 -1
  9. package/dist/cjs/components/credits/context/hooks/useSubscribed.js.map +3 -3
  10. package/dist/cjs/components/credits/context/provider.d.ts +8 -33
  11. package/dist/cjs/components/credits/context/provider.js +1 -1
  12. package/dist/cjs/components/credits/context/provider.js.map +3 -3
  13. package/dist/cjs/components/credits/creditsBanner/index.d.ts +16 -16
  14. package/dist/cjs/components/credits/creditsBanner/index.js +1 -1
  15. package/dist/cjs/components/credits/creditsBanner/index.js.map +2 -2
  16. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js +1 -1
  17. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js.map +3 -3
  18. package/dist/cjs/components/credits/creditsBenefits/index.d.ts +7 -8
  19. package/dist/cjs/components/credits/creditsBenefits/index.js +3 -3
  20. package/dist/cjs/components/credits/creditsBenefits/index.js.map +3 -3
  21. package/dist/cjs/components/credits/creditsCash/CreditsCash.d.ts +4 -0
  22. package/dist/cjs/components/credits/creditsCash/CreditsCash.js +2 -0
  23. package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +7 -0
  24. package/dist/cjs/components/credits/creditsCash/RedeemableItem.d.ts +1 -5
  25. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
  26. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  27. package/dist/cjs/components/credits/creditsCash/index.d.ts +2 -11
  28. package/dist/cjs/components/credits/creditsCash/index.js +1 -1
  29. package/dist/cjs/components/credits/creditsCash/index.js.map +4 -4
  30. package/dist/cjs/components/credits/creditsCash/type.d.ts +1 -3
  31. package/dist/cjs/components/credits/creditsCash/type.js +1 -1
  32. package/dist/cjs/components/credits/creditsCash/type.js.map +1 -1
  33. package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
  34. package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
  35. package/dist/cjs/components/credits/creditsFaq/index.d.ts +2 -2
  36. package/dist/cjs/components/credits/creditsFaq/index.js +1 -1
  37. package/dist/cjs/components/credits/creditsFaq/index.js.map +3 -3
  38. package/dist/cjs/components/credits/creditsInfoCard/index.d.ts +9 -15
  39. package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
  40. package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
  41. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  42. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +3 -3
  43. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  44. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +3 -3
  45. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  46. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
  47. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.d.ts +4 -0
  48. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +2 -0
  49. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +7 -0
  50. package/dist/cjs/components/credits/creditsRedeemList/NonProductValue.d.ts +1 -3
  51. package/dist/cjs/components/credits/creditsRedeemList/NonProductValue.js +1 -1
  52. package/dist/cjs/components/credits/creditsRedeemList/NonProductValue.js.map +3 -3
  53. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.js +1 -1
  54. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.js.map +3 -3
  55. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  56. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  57. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.js +1 -1
  58. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +3 -3
  59. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js +1 -1
  60. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js.map +3 -3
  61. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  62. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +3 -3
  63. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  64. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +3 -3
  65. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
  66. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
  67. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  68. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  69. package/dist/cjs/components/credits/creditsRedeemList/index.d.ts +2 -12
  70. package/dist/cjs/components/credits/creditsRedeemList/index.js +1 -1
  71. package/dist/cjs/components/credits/creditsRedeemList/index.js.map +4 -4
  72. package/dist/cjs/components/credits/creditsRedeemList/type.d.ts +1 -15
  73. package/dist/cjs/components/credits/creditsRedeemList/type.js +1 -1
  74. package/dist/cjs/components/credits/creditsRedeemList/type.js.map +1 -1
  75. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.d.ts +2 -0
  76. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +2 -0
  77. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +7 -0
  78. package/dist/cjs/components/credits/creditsWaysToGetCredits/index.d.ts +2 -2
  79. package/dist/cjs/components/credits/creditsWaysToGetCredits/index.js +1 -1
  80. package/dist/cjs/components/credits/creditsWaysToGetCredits/index.js.map +4 -4
  81. package/dist/cjs/components/credits/creditsWaysToGetCredits/type.d.ts +5 -15
  82. package/dist/cjs/components/credits/creditsWaysToGetCredits/type.js +1 -1
  83. package/dist/cjs/components/credits/creditsWaysToGetCredits/type.js.map +2 -2
  84. package/dist/cjs/components/credits/creditsWaysToGetCredits/useActions.d.ts +11 -2
  85. package/dist/cjs/components/credits/creditsWaysToGetCredits/useActions.js +1 -1
  86. package/dist/cjs/components/credits/creditsWaysToGetCredits/useActions.js.map +3 -3
  87. package/dist/cjs/components/credits/modal/MyRewardsModal.js +1 -1
  88. package/dist/cjs/components/credits/modal/MyRewardsModal.js.map +3 -3
  89. package/dist/cjs/components/credits/modal/activitiesModal.js +1 -1
  90. package/dist/cjs/components/credits/modal/activitiesModal.js.map +3 -3
  91. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  92. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  93. package/dist/cjs/components/credits/modal/modalContainer.js +1 -1
  94. package/dist/cjs/components/credits/modal/modalContainer.js.map +3 -3
  95. package/dist/cjs/components/credits/modal/rulesModal.js +1 -1
  96. package/dist/cjs/components/credits/modal/rulesModal.js.map +3 -3
  97. package/dist/cjs/components/credits/modal/subscribeModal.d.ts +15 -0
  98. package/dist/cjs/components/credits/modal/subscribeModal.js +2 -0
  99. package/dist/cjs/components/credits/modal/subscribeModal.js.map +7 -0
  100. package/dist/cjs/components/credits/modal/tip.js +1 -1
  101. package/dist/cjs/components/credits/modal/tip.js.map +3 -3
  102. package/dist/cjs/components/credits/type.d.ts +23 -4
  103. package/dist/cjs/components/credits/type.js +1 -1
  104. package/dist/cjs/components/credits/type.js.map +1 -1
  105. package/dist/cjs/components/index.d.ts +1 -0
  106. package/dist/cjs/components/index.js +1 -1
  107. package/dist/cjs/components/index.js.map +2 -2
  108. package/dist/cjs/components/registration/authCodeActivate/Message.js +1 -1
  109. package/dist/cjs/components/registration/authCodeActivate/Message.js.map +2 -2
  110. package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
  111. package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
  112. package/dist/cjs/components/registration/authCodeActivate/type.d.ts +1 -2
  113. package/dist/cjs/components/registration/authCodeActivate/type.js +1 -1
  114. package/dist/cjs/components/registration/authCodeActivate/type.js.map +1 -1
  115. package/dist/cjs/components/registration/context/index.d.ts +1 -0
  116. package/dist/cjs/components/registration/context/index.js +2 -0
  117. package/dist/cjs/components/registration/context/index.js.map +7 -0
  118. package/dist/cjs/components/registration/context/provider.d.ts +27 -0
  119. package/dist/cjs/components/registration/context/provider.js +2 -0
  120. package/dist/cjs/components/registration/context/provider.js.map +7 -0
  121. package/dist/cjs/components/registration/index.d.ts +1 -0
  122. package/dist/cjs/components/registration/index.js +1 -1
  123. package/dist/cjs/components/registration/index.js.map +2 -2
  124. package/dist/cjs/components/registration/modalContainer.d.ts +1 -2
  125. package/dist/cjs/components/registration/modalContainer.js +1 -1
  126. package/dist/cjs/components/registration/modalContainer.js.map +3 -3
  127. package/dist/cjs/index.d.ts +2 -1
  128. package/dist/cjs/index.js +1 -1
  129. package/dist/cjs/index.js.map +2 -2
  130. package/dist/cjs/templates/credits.d.ts +59 -0
  131. package/dist/cjs/templates/credits.js +2 -0
  132. package/dist/cjs/templates/credits.js.map +7 -0
  133. package/dist/cjs/templates/index.d.ts +1 -0
  134. package/dist/cjs/templates/index.js +2 -0
  135. package/dist/cjs/templates/index.js.map +7 -0
  136. package/dist/esm/components/chat/index.js +1 -1
  137. package/dist/esm/components/chat/index.js.map +2 -2
  138. package/dist/esm/components/credits/const.d.ts +1 -0
  139. package/dist/esm/components/credits/const.js +2 -0
  140. package/dist/esm/components/credits/const.js.map +7 -0
  141. package/dist/esm/components/credits/context/hooks/useRedeemAndBuy.js +1 -1
  142. package/dist/esm/components/credits/context/hooks/useRedeemAndBuy.js.map +2 -2
  143. package/dist/esm/components/credits/context/hooks/useSubscribed.js +1 -1
  144. package/dist/esm/components/credits/context/hooks/useSubscribed.js.map +3 -3
  145. package/dist/esm/components/credits/context/provider.d.ts +8 -33
  146. package/dist/esm/components/credits/context/provider.js +1 -1
  147. package/dist/esm/components/credits/context/provider.js.map +3 -3
  148. package/dist/esm/components/credits/creditsBanner/index.d.ts +16 -16
  149. package/dist/esm/components/credits/creditsBanner/index.js +1 -1
  150. package/dist/esm/components/credits/creditsBanner/index.js.map +2 -2
  151. package/dist/esm/components/credits/creditsBenefits/benefitItem.js +1 -1
  152. package/dist/esm/components/credits/creditsBenefits/benefitItem.js.map +3 -3
  153. package/dist/esm/components/credits/creditsBenefits/index.d.ts +7 -8
  154. package/dist/esm/components/credits/creditsBenefits/index.js +3 -3
  155. package/dist/esm/components/credits/creditsBenefits/index.js.map +2 -2
  156. package/dist/esm/components/credits/creditsCash/CreditsCash.d.ts +4 -0
  157. package/dist/esm/components/credits/creditsCash/CreditsCash.js +2 -0
  158. package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +7 -0
  159. package/dist/esm/components/credits/creditsCash/RedeemableItem.d.ts +1 -5
  160. package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
  161. package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  162. package/dist/esm/components/credits/creditsCash/index.d.ts +2 -11
  163. package/dist/esm/components/credits/creditsCash/index.js +1 -1
  164. package/dist/esm/components/credits/creditsCash/index.js.map +4 -4
  165. package/dist/esm/components/credits/creditsCash/type.d.ts +1 -3
  166. package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
  167. package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js.map +2 -2
  168. package/dist/esm/components/credits/creditsFaq/index.d.ts +2 -2
  169. package/dist/esm/components/credits/creditsFaq/index.js +1 -1
  170. package/dist/esm/components/credits/creditsFaq/index.js.map +3 -3
  171. package/dist/esm/components/credits/creditsInfoCard/index.d.ts +9 -15
  172. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  173. package/dist/esm/components/credits/creditsInfoCard/index.js.map +3 -3
  174. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  175. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +3 -3
  176. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  177. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +3 -3
  178. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  179. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
  180. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.d.ts +4 -0
  181. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +2 -0
  182. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +7 -0
  183. package/dist/esm/components/credits/creditsRedeemList/NonProductValue.d.ts +1 -3
  184. package/dist/esm/components/credits/creditsRedeemList/NonProductValue.js +1 -1
  185. package/dist/esm/components/credits/creditsRedeemList/NonProductValue.js.map +3 -3
  186. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js +1 -1
  187. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js.map +3 -3
  188. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  189. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  190. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js +1 -1
  191. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +3 -3
  192. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js +1 -1
  193. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js.map +3 -3
  194. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  195. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +3 -3
  196. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  197. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +3 -3
  198. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
  199. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
  200. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  201. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  202. package/dist/esm/components/credits/creditsRedeemList/index.d.ts +2 -12
  203. package/dist/esm/components/credits/creditsRedeemList/index.js +1 -1
  204. package/dist/esm/components/credits/creditsRedeemList/index.js.map +4 -4
  205. package/dist/esm/components/credits/creditsRedeemList/type.d.ts +1 -15
  206. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.d.ts +2 -0
  207. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +2 -0
  208. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +7 -0
  209. package/dist/esm/components/credits/creditsWaysToGetCredits/index.d.ts +2 -2
  210. package/dist/esm/components/credits/creditsWaysToGetCredits/index.js +1 -1
  211. package/dist/esm/components/credits/creditsWaysToGetCredits/index.js.map +4 -4
  212. package/dist/esm/components/credits/creditsWaysToGetCredits/type.d.ts +5 -15
  213. package/dist/esm/components/credits/creditsWaysToGetCredits/type.js.map +2 -2
  214. package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.d.ts +11 -2
  215. package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.js +1 -1
  216. package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.js.map +3 -3
  217. package/dist/esm/components/credits/modal/MyRewardsModal.js +1 -1
  218. package/dist/esm/components/credits/modal/MyRewardsModal.js.map +3 -3
  219. package/dist/esm/components/credits/modal/activitiesModal.js +1 -1
  220. package/dist/esm/components/credits/modal/activitiesModal.js.map +3 -3
  221. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  222. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  223. package/dist/esm/components/credits/modal/modalContainer.js +1 -1
  224. package/dist/esm/components/credits/modal/modalContainer.js.map +3 -3
  225. package/dist/esm/components/credits/modal/rulesModal.js +1 -1
  226. package/dist/esm/components/credits/modal/rulesModal.js.map +2 -2
  227. package/dist/esm/components/credits/modal/subscribeModal.d.ts +15 -0
  228. package/dist/esm/components/credits/modal/subscribeModal.js +2 -0
  229. package/dist/esm/components/credits/modal/subscribeModal.js.map +7 -0
  230. package/dist/esm/components/credits/modal/tip.js +1 -1
  231. package/dist/esm/components/credits/modal/tip.js.map +3 -3
  232. package/dist/esm/components/credits/type.d.ts +23 -4
  233. package/dist/esm/components/index.d.ts +1 -0
  234. package/dist/esm/components/index.js +1 -1
  235. package/dist/esm/components/index.js.map +2 -2
  236. package/dist/esm/components/registration/authCodeActivate/Message.js +1 -1
  237. package/dist/esm/components/registration/authCodeActivate/Message.js.map +2 -2
  238. package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
  239. package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
  240. package/dist/esm/components/registration/authCodeActivate/type.d.ts +1 -2
  241. package/dist/esm/components/registration/context/index.d.ts +1 -0
  242. package/dist/esm/components/registration/context/index.js +2 -0
  243. package/dist/esm/components/registration/context/index.js.map +7 -0
  244. package/dist/esm/components/registration/context/provider.d.ts +27 -0
  245. package/dist/esm/components/registration/context/provider.js +2 -0
  246. package/dist/esm/components/registration/context/provider.js.map +7 -0
  247. package/dist/esm/components/registration/index.d.ts +1 -0
  248. package/dist/esm/components/registration/index.js +1 -1
  249. package/dist/esm/components/registration/index.js.map +2 -2
  250. package/dist/esm/components/registration/modalContainer.d.ts +1 -2
  251. package/dist/esm/components/registration/modalContainer.js +1 -1
  252. package/dist/esm/components/registration/modalContainer.js.map +3 -3
  253. package/dist/esm/index.d.ts +2 -1
  254. package/dist/esm/index.js +1 -1
  255. package/dist/esm/index.js.map +2 -2
  256. package/dist/esm/templates/credits.d.ts +59 -0
  257. package/dist/esm/templates/credits.js +2 -0
  258. package/dist/esm/templates/credits.js.map +7 -0
  259. package/dist/esm/templates/index.d.ts +1 -0
  260. package/dist/esm/templates/index.js +2 -0
  261. package/dist/esm/templates/index.js.map +7 -0
  262. package/package.json +5 -4
  263. package/src/components/chat/index.tsx +1 -1
  264. package/src/components/credits/context/hooks/useRedeemAndBuy.ts +0 -2
  265. package/src/components/credits/context/hooks/useSubscribed.ts +1 -2
  266. package/src/components/credits/context/provider.tsx +16 -20
  267. package/src/components/credits/creditsBanner/index.tsx +14 -16
  268. package/src/components/credits/creditsBenefits/benefitItem.tsx +19 -4
  269. package/src/components/credits/creditsBenefits/index.tsx +6 -10
  270. package/src/components/credits/creditsCash/{index.tsx → CreditsCash.tsx} +8 -26
  271. package/src/components/credits/creditsCash/RedeemableItem.tsx +35 -17
  272. package/src/components/credits/creditsCash/index.ts +2 -0
  273. package/src/components/credits/creditsCash/type.ts +1 -3
  274. package/src/components/credits/creditsFaq/faqItem/FaqItem.tsx +12 -12
  275. package/src/components/credits/creditsFaq/index.tsx +6 -4
  276. package/src/components/credits/creditsInfoCard/index.tsx +38 -33
  277. package/src/components/credits/creditsRedeemList/AddressForm/CountrySelect.tsx +7 -3
  278. package/src/components/credits/creditsRedeemList/AddressForm/StateSelect.tsx +5 -1
  279. package/src/components/credits/creditsRedeemList/AddressForm/index.tsx +5 -4
  280. package/src/components/credits/creditsRedeemList/{index.tsx → CreditsRedeemList.tsx} +15 -28
  281. package/src/components/credits/creditsRedeemList/NonProductValue.tsx +4 -3
  282. package/src/components/credits/creditsRedeemList/RedeemCouponModal.tsx +6 -6
  283. package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +14 -11
  284. package/src/components/credits/creditsRedeemList/RedeemProductModal/Init.tsx +4 -2
  285. package/src/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.tsx +3 -1
  286. package/src/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.tsx +9 -5
  287. package/src/components/credits/creditsRedeemList/RedeemProductModal/Success.tsx +4 -1
  288. package/src/components/credits/creditsRedeemList/RedeemProductModal/index.tsx +2 -2
  289. package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +11 -7
  290. package/src/components/credits/creditsRedeemList/index.ts +2 -0
  291. package/src/components/credits/creditsRedeemList/type.ts +1 -16
  292. package/src/components/credits/creditsWaysToGetCredits/{index.tsx → CreditsWaysToGetCredits.tsx} +64 -15
  293. package/src/components/credits/creditsWaysToGetCredits/index.ts +2 -0
  294. package/src/components/credits/creditsWaysToGetCredits/type.ts +5 -15
  295. package/src/components/credits/creditsWaysToGetCredits/useActions.ts +22 -8
  296. package/src/components/credits/modal/MyRewardsModal.tsx +10 -2
  297. package/src/components/credits/modal/activitiesModal.tsx +8 -3
  298. package/src/components/credits/modal/creditsUploadReceiptModal.tsx +9 -1
  299. package/src/components/credits/modal/modalContainer.tsx +5 -1
  300. package/src/components/credits/modal/rulesModal.tsx +1 -1
  301. package/src/components/credits/modal/subscribeModal.tsx +201 -0
  302. package/src/components/credits/modal/tip.tsx +10 -1
  303. package/src/components/credits/type.ts +23 -4
  304. package/src/components/index.ts +2 -2
  305. package/src/components/registration/authCodeActivate/Message.tsx +43 -0
  306. package/src/components/registration/authCodeActivate/index.tsx +338 -0
  307. package/src/components/registration/authCodeActivate/type.ts +23 -0
  308. package/src/components/registration/context/index.tsx +1 -0
  309. package/src/components/registration/context/provider.tsx +86 -0
  310. package/src/components/registration/index.ts +2 -0
  311. package/src/components/registration/modalContainer.tsx +114 -0
  312. package/src/index.ts +2 -1
  313. package/src/templates/credits.tsx +134 -0
  314. package/src/templates/index.ts +1 -0
  315. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.d.ts +0 -1
  316. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js +0 -2
  317. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js.map +0 -7
  318. package/dist/cjs/components/credits/context/hooks/useSubscriptions.d.ts +0 -9
  319. package/dist/cjs/components/credits/context/hooks/useSubscriptions.js +0 -2
  320. package/dist/cjs/components/credits/context/hooks/useSubscriptions.js.map +0 -7
  321. package/dist/cjs/helpers/fetchResponse.d.ts +0 -14
  322. package/dist/cjs/helpers/fetchResponse.js +0 -2
  323. package/dist/cjs/helpers/fetchResponse.js.map +0 -7
  324. package/dist/cjs/helpers/fetcher.d.ts +0 -2
  325. package/dist/cjs/helpers/fetcher.js +0 -2
  326. package/dist/cjs/helpers/fetcher.js.map +0 -7
  327. package/dist/cjs/helpers/index.d.ts +0 -2
  328. package/dist/cjs/helpers/index.js +0 -2
  329. package/dist/cjs/helpers/index.js.map +0 -7
  330. package/dist/cjs/helpers/track.d.ts +0 -19
  331. package/dist/cjs/helpers/track.js +0 -2
  332. package/dist/cjs/helpers/track.js.map +0 -7
  333. package/dist/cjs/helpers/utils.d.ts +0 -3
  334. package/dist/cjs/helpers/utils.js +0 -2
  335. package/dist/cjs/helpers/utils.js.map +0 -7
  336. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.d.ts +0 -1
  337. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js +0 -2
  338. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js.map +0 -7
  339. package/dist/esm/components/credits/context/hooks/useSubscriptions.d.ts +0 -9
  340. package/dist/esm/components/credits/context/hooks/useSubscriptions.js +0 -2
  341. package/dist/esm/components/credits/context/hooks/useSubscriptions.js.map +0 -7
  342. package/dist/esm/helpers/fetchResponse.d.ts +0 -14
  343. package/dist/esm/helpers/fetchResponse.js +0 -2
  344. package/dist/esm/helpers/fetchResponse.js.map +0 -7
  345. package/dist/esm/helpers/fetcher.d.ts +0 -2
  346. package/dist/esm/helpers/fetcher.js +0 -2
  347. package/dist/esm/helpers/fetcher.js.map +0 -7
  348. package/dist/esm/helpers/index.d.ts +0 -2
  349. package/dist/esm/helpers/index.js +0 -2
  350. package/dist/esm/helpers/index.js.map +0 -7
  351. package/dist/esm/helpers/track.d.ts +0 -19
  352. package/dist/esm/helpers/track.js +0 -2
  353. package/dist/esm/helpers/track.js.map +0 -7
  354. package/dist/esm/helpers/utils.d.ts +0 -3
  355. package/dist/esm/helpers/utils.js +0 -2
  356. package/dist/esm/helpers/utils.js.map +0 -7
  357. package/src/components/credits/context/hooks/useSendEmailValidation.ts +0 -20
  358. package/src/components/credits/context/hooks/useSubscriptions.ts +0 -29
  359. package/src/helpers/fetchResponse.ts +0 -35
  360. package/src/helpers/fetcher.ts +0 -44
  361. package/src/helpers/index.ts +0 -2
  362. package/src/helpers/track.ts +0 -73
  363. package/src/helpers/utils.ts +0 -8
@@ -0,0 +1,201 @@
1
+ import { useCallback, useEffect, useState } from 'react'
2
+ import { useRouter } from 'next/router'
3
+ import { Button, Checkbox, Picture, Text } from '@anker-in/headless-ui'
4
+ import { classNames, fetcher, gaTrack, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
5
+ import Cookies from 'js-cookie'
6
+ import { parse } from 'query-string'
7
+ import sha256 from 'crypto-js/sha256'
8
+ import { useCreditsContext } from '../context/provider'
9
+ import { emailValidate } from '../context/utils'
10
+ import { CreditsModalContainer, type ModalContainerProps } from './modalContainer'
11
+
12
+ export type CreditsSubscribeModalCopy = {
13
+ title: string
14
+ desc?: string
15
+ placeholder: string
16
+ policy?: string
17
+ successTips?: string
18
+ dealsType?: string
19
+ }
20
+
21
+ interface CreditsSubscribeModalProps extends ModalContainerProps {
22
+ copy: CreditsSubscribeModalCopy
23
+ onSuccess?: () => void
24
+ }
25
+
26
+ const getAdCookie = () => {
27
+ if (typeof window === 'undefined') {
28
+ return { register_source: '' }
29
+ }
30
+ const { search, href } = window.location || {}
31
+ const query = parse(search)
32
+
33
+ return {
34
+ fbuy_ref_code: Cookies.get('fbuy_ref_code'),
35
+ affiliate: Cookies.get('affiliate'),
36
+ ref: Cookies.get('ref_ads'),
37
+ inviter_code: query.ic || query.inviter_code || Cookies.get('inviter_code'),
38
+ register_source: query.redirect || Cookies.get('reg_source') || href,
39
+ deals_type: Cookies.get('deal'),
40
+ transfer_id: Cookies.get('transfer_id'),
41
+ }
42
+ }
43
+
44
+ export function CreditsSubscribeModal({ copy, onSuccess, ...props }: CreditsSubscribeModalProps) {
45
+ const { brand } = useHeadlessContext()
46
+ const rounded = ROUNDED_BRANDS.includes(brand)
47
+ const { locale } = useRouter()
48
+ const [policy, setPolicy] = useState(false)
49
+ const [email, setEmail] = useState('')
50
+ const [errorMessage, setErrorMessage] = useState('')
51
+ const [successMessage, setSuccessMessage] = useState('')
52
+ const [loading, setLoading] = useState(false)
53
+ const { profile } = useCreditsContext()
54
+
55
+ const handleEmailChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {
56
+ setErrorMessage('')
57
+ setEmail(event.target?.value?.trim())
58
+ }, [])
59
+
60
+ const handleSubmit = useCallback(async () => {
61
+ setErrorMessage('')
62
+ if (!email) {
63
+ return setErrorMessage('Please fill in your email')
64
+ }
65
+
66
+ if (!emailValidate(email)) {
67
+ return setErrorMessage('Invalid email address')
68
+ }
69
+
70
+ if (!policy) {
71
+ return setErrorMessage('Please agree to the policy')
72
+ }
73
+
74
+ setLoading(true)
75
+ const { register_source } = getAdCookie()
76
+
77
+ const result = await fetcher({
78
+ locale,
79
+ action: 'subscribe',
80
+ url: '/api/multipass/subscribe/subscribe_emails',
81
+ method: 'POST',
82
+ body: {
83
+ email,
84
+ register_source,
85
+ brand,
86
+ deals_type: copy.dealsType || 'vip_subscribe',
87
+ },
88
+ headers: {},
89
+ type: '',
90
+ })
91
+ setLoading(false)
92
+
93
+ if (!result.errors) {
94
+ setSuccessMessage(copy.successTips || 'Subscribed successfully!')
95
+ if (onSuccess) {
96
+ onSuccess()
97
+ }
98
+ setTimeout(() => {
99
+ setSuccessMessage('')
100
+ }, 3000)
101
+ gaTrack({
102
+ subscribe_hashed_email: email ? sha256(email) : '',
103
+ })
104
+ gaTrack({
105
+ event: 'ga4Event',
106
+ event_name: 'subscribe',
107
+ event_parameters: {
108
+ page_group: copy.dealsType || 'vip_subscribe',
109
+ position: 'pop_up',
110
+ },
111
+ })
112
+ gaTrack({
113
+ event: 'uaEvent',
114
+ eventCategory: 'subscribe',
115
+ eventAction: copy.dealsType || 'vip_subscribe',
116
+ eventLabel: 'pop_up',
117
+ nonInteraction: false,
118
+ })
119
+ } else {
120
+ setErrorMessage(result.errors || result.statusText)
121
+ }
122
+ }, [email, policy, locale, brand, copy.dealsType, copy.successTips, onSuccess])
123
+
124
+ useEffect(() => {
125
+ if (profile && profile?.email) {
126
+ setEmail(profile?.email)
127
+ }
128
+ }, [profile])
129
+
130
+ return (
131
+ <CreditsModalContainer
132
+ className="w-[540px] md:h-auto"
133
+ scrollClassName="mb-[40px] min-l:px-[48px] md:mb-[24px]"
134
+ titleClassName="h-[56px]"
135
+ useAnimation
136
+ animationClassName="md:translate-y-[100vh]"
137
+ {...props}
138
+ >
139
+ <div className="flex flex-col gap-[16px] text-center min-l:px-[16px]">
140
+ <div>
141
+ <Text className={classNames('mb-[24px] text-[22px] font-bold')} html={copy.title}></Text>
142
+ </div>
143
+ {copy.desc && (
144
+ <Text
145
+ className="mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]"
146
+ html={copy.desc}
147
+ ></Text>
148
+ )}
149
+ <div
150
+ className={classNames(
151
+ 'relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]',
152
+ !rounded && 'rounded-none'
153
+ )}
154
+ >
155
+ <input
156
+ className={classNames(
157
+ 'h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]',
158
+ !rounded && 'rounded-none'
159
+ )}
160
+ placeholder={copy.placeholder}
161
+ value={email}
162
+ onChange={handleEmailChange}
163
+ />
164
+ <Button
165
+ variant="primary"
166
+ onClick={handleSubmit}
167
+ loading={loading}
168
+ className={classNames(
169
+ 'legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]',
170
+ !rounded && 'rounded-none'
171
+ )}
172
+ >
173
+ <Picture
174
+ source="https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383"
175
+ className="h-[24px] w-[24px]"
176
+ alt="email"
177
+ />
178
+ </Button>
179
+ </div>
180
+ <div className="flex w-full">
181
+ <Checkbox checked={policy} onCheckedChange={() => setPolicy(!policy)} required className="border-[#1d1d1f]" />
182
+ <label
183
+ className="text-left ml-2 text-[14px] font-semibold text-[#777] [&_a]:underline"
184
+ dangerouslySetInnerHTML={{
185
+ __html: copy?.policy || '',
186
+ }}
187
+ />
188
+ </div>
189
+ <div
190
+ className={classNames(
191
+ 'w-full text-left text-[16px] font-semibold',
192
+ errorMessage && 'text-[#F84D4F]',
193
+ successMessage && 'text-[#52C41A]'
194
+ )}
195
+ >
196
+ <Text html={successMessage || errorMessage || ''} />
197
+ </div>
198
+ </div>
199
+ </CreditsModalContainer>
200
+ )
201
+ }
@@ -1,9 +1,13 @@
1
+ import { useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
1
2
  import classNames from 'classnames'
2
3
  import { useState } from 'react'
3
4
 
4
5
  function Tip({ info, index }: { info: string; index: number }) {
5
6
  const [show, setShow] = useState(false)
6
7
 
8
+ const { brand } = useHeadlessContext()
9
+ const rounded = ROUNDED_BRANDS.includes(brand)
10
+
7
11
  return (
8
12
  <div
9
13
  className="relative ml-[6px] cursor-pointer"
@@ -81,7 +85,12 @@ function Tip({ info, index }: { info: string; index: number }) {
81
85
  }
82
86
  }
83
87
  ></i>
84
- <p className="relative block rounded-[4px] bg-white px-[14px] py-[12px]">
88
+ <p
89
+ className={classNames(
90
+ 'relative block rounded-[4px] bg-white px-[14px] py-[12px]',
91
+ !rounded && 'rounded-none'
92
+ )}
93
+ >
85
94
  <span className="block text-left text-[14px] font-semibold leading-[1.4] text-[#333]">{info}</span>
86
95
  </p>
87
96
  </div>
@@ -1,5 +1,7 @@
1
1
  import type { Product, ProductVariant } from '@anker-in/lib'
2
2
  import type { AlpcConsumeType, ConsumeType } from './context/const'
3
+ import { MyActivitiesMetafields } from './modal/activitiesModal'
4
+ import { MyRewardsMetafields } from './modal/MyRewardsModal'
3
5
 
4
6
  export interface Subscription {
5
7
  preference: {
@@ -49,12 +51,29 @@ export interface ShippingZone {
49
51
  }
50
52
 
51
53
  export type CreditsPageCommon = {
52
- pointUnit: string
53
- ruleLabel: string
54
- soldOut: string
55
- imageMapping: {
54
+ pointUnit?: string
55
+ infoIcon?: string
56
+ ruleLabel?: string
57
+ soldOut?: string
58
+ copied?: string
59
+ off?: string
60
+ copy?: string
61
+ giftCardLabel?: string
62
+ imageMapping?: {
56
63
  [key in ConsumeType]: {
57
64
  url: string
58
65
  }
59
66
  }
67
+ activitiesModal?: MyActivitiesMetafields
68
+ rewardsModal?: MyRewardsMetafields
69
+ insufficientCredits?: string
70
+ validatorInfo?: {
71
+ addressInfo: {
72
+ name: string
73
+ country: string
74
+ province: string
75
+ city: string
76
+ address: string
77
+ }
78
+ }
60
79
  }
@@ -1,5 +1,3 @@
1
- // eslint-disable-next-line import/extensions
2
-
3
1
  export { default as Chat } from './chat/index'
4
2
 
5
3
  export {
@@ -12,3 +10,5 @@ export {
12
10
  } from './chat/utils'
13
11
 
14
12
  export * from './credits/index'
13
+
14
+ export * from './registration/index'
@@ -0,0 +1,43 @@
1
+ export const Message = ({ status, message }: { status: string; message: string }) => {
2
+ return (
3
+ status && (
4
+ <div className="absolute left-5 right-5 top-2 flex items-center gap-2 rounded-sm bg-white px-4 py-3 shadow-lg min-md:left-12 min-md:right-12">
5
+ <div className="flex-shrink-0">
6
+ {status === 'success' && (
7
+ <span className="inline-block h-5 w-5">
8
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
9
+ <g clipPath="url(#clip0_205_16388)">
10
+ <circle cx="10" cy="10" r="10" fill="#1677FF" />
11
+ <path d="M10 16L10 10" stroke="white" strokeWidth="2" strokeLinecap="round" />
12
+ <circle cx="10" cy="6.5" r="1.5" transform="rotate(-180 10 6.5)" fill="white" />
13
+ </g>
14
+ <defs>
15
+ <clipPath id="clip0_205_16388">
16
+ <rect width="20" height="20" fill="white" />
17
+ </clipPath>
18
+ </defs>
19
+ </svg>
20
+ </span>
21
+ )}
22
+ {status === 'error' && (
23
+ <span className="inline-block h-5 w-5">
24
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
25
+ <g clipPath="url(#clip0_205_16236)">
26
+ <circle cx="10" cy="10" r="10" fill="#F84D4F" />
27
+ <path d="M10 5L10 11" stroke="white" strokeWidth="2" strokeLinecap="round" />
28
+ <circle cx="10" cy="14.5" r="1.5" fill="white" />
29
+ </g>
30
+ <defs>
31
+ <clipPath id="clip0_205_16236">
32
+ <rect width="20" height="20" fill="white" />
33
+ </clipPath>
34
+ </defs>
35
+ </svg>
36
+ </span>
37
+ )}
38
+ </div>
39
+ <p className="text-sm font-semibold leading-[120%] text-[#333]">{message}</p>
40
+ </div>
41
+ )
42
+ )
43
+ }
@@ -0,0 +1,338 @@
1
+ import { Button, Text } from '@anker-in/headless-ui'
2
+ import {
3
+ useSendEmailValidation,
4
+ gaTrack,
5
+ classNames as cn,
6
+ useHeadlessContext,
7
+ useEmailValidation,
8
+ useCountDown,
9
+ ROUNDED_BRANDS,
10
+ } from '@anker-in/lib'
11
+ import React, { useCallback, useEffect, useRef, useState } from 'react'
12
+ import { Message } from './Message'
13
+ import { AuthCodeActivateProps } from './type'
14
+ import { useRegistration } from '../context'
15
+ import { RegistrationModalContainer } from '../modalContainer'
16
+
17
+ export const AuthCodeActivate: React.FC<AuthCodeActivateProps> = ({ copy }) => {
18
+ const { locale, brand } = useHeadlessContext()
19
+ const { email, authCodeActivate } = useRegistration()
20
+ const rounded = ROUNDED_BRANDS.includes(brand)
21
+
22
+ const { activeToken, setActiveToken, setIsSendingActivateEmail, setIsActivateSuccess, onAuthSuccess, autoSendEmail } =
23
+ authCodeActivate
24
+
25
+ const { isMutating: emailValidationLoading, trigger: triggerEmailValidation } = useEmailValidation()
26
+
27
+ const {
28
+ isMutating: isSendingEmail,
29
+ trigger: triggerSendValidationEmail,
30
+ data: sendEmailData,
31
+ } = useSendEmailValidation()
32
+
33
+ const [messageText, setMessageText] = useState('')
34
+ const [messageStatus, setMessageStatus] = useState('')
35
+ const { startCountDown: isStartCountDown, startAction: startCountDown, countDown } = useCountDown(60)
36
+
37
+ const [error, setError] = useState('')
38
+ const [focusIndex, setFocusIndex] = useState(0)
39
+ const [codeArray, setCodeArray] = useState(new Array(6).fill(''))
40
+
41
+ const inputRefs = useRef<HTMLInputElement[]>([])
42
+ const code = codeArray.join('')
43
+
44
+ useEffect(() => {
45
+ if (inputRefs.current[focusIndex]) {
46
+ inputRefs.current[focusIndex].focus()
47
+ }
48
+ }, [focusIndex])
49
+
50
+ useEffect(() => {
51
+ if (sendEmailData?.data?.data?.active_token) {
52
+ setActiveToken(sendEmailData.data.data.active_token)
53
+ }
54
+ }, [sendEmailData?.data?.data?.active_token])
55
+
56
+ useEffect(() => {
57
+ setIsSendingActivateEmail(isSendingEmail)
58
+ }, [isSendingEmail, setIsSendingActivateEmail])
59
+
60
+ // 自动发送邮箱验证码
61
+ useEffect(() => {
62
+ if (autoSendEmail && email) {
63
+ triggerSendValidationEmail(
64
+ {
65
+ email: email,
66
+ data: {
67
+ redirect_url: `${window?.location?.origin}${window?.location?.pathname}`,
68
+ },
69
+ },
70
+ {
71
+ onSuccess: () => {
72
+ setMessageStatus('success')
73
+ setMessageText(copy?.sendEmailSuccessMessage || '')
74
+ startCountDown()
75
+ setTimeout(() => {
76
+ setMessageStatus('')
77
+ setMessageText('')
78
+ }, 5000)
79
+ },
80
+ }
81
+ )
82
+ }
83
+ }, [autoSendEmail, email, triggerSendValidationEmail])
84
+
85
+ const handleSendAgain = useCallback(async () => {
86
+ if (!email) return
87
+ // 发起网络请求
88
+ await triggerSendValidationEmail(
89
+ {
90
+ email: email,
91
+ data: {
92
+ redirect_url: `${window?.location?.origin}${window?.location?.pathname}`,
93
+ },
94
+ },
95
+ {
96
+ onSuccess: () => {
97
+ setMessageStatus('success')
98
+ setMessageText(copy?.sendEmailSuccessMessage || '')
99
+ startCountDown()
100
+ setTimeout(() => {
101
+ setMessageStatus('')
102
+ setMessageText('')
103
+ }, 5000)
104
+ },
105
+ }
106
+ )
107
+ gaTrack({
108
+ event: 'ga4Event',
109
+ event_name: 'lp_button',
110
+ event_parameters: {
111
+ page_group: 'reg_sub_pop',
112
+ position: 'auth_code',
113
+ button_name: 'sent_again',
114
+ },
115
+ })
116
+ }, [email, triggerSendValidationEmail])
117
+
118
+ const handleInputCodeChange = (event: React.ChangeEvent<HTMLInputElement>, index: number) => {
119
+ const { value } = event.target
120
+
121
+ setError('')
122
+
123
+ if (Number.isNaN(Number(value))) {
124
+ return
125
+ }
126
+
127
+ if (value.length > 1) {
128
+ if (index < codeArray.length - 1) {
129
+ if (!codeArray[index + 1]) {
130
+ setFocusIndex(index + 1)
131
+ setCodeArray(old => {
132
+ const newCode = [...old]
133
+ newCode[index] = value[0]
134
+ if (value.length > 1) {
135
+ newCode[index + 1] = value[1]
136
+ }
137
+ return newCode
138
+ })
139
+ }
140
+ }
141
+ return
142
+ }
143
+ const newCode = [...codeArray]
144
+ newCode[index] = value
145
+ setCodeArray(newCode)
146
+ if (value) {
147
+ if (index < codeArray.length - 1 && !codeArray[index + 1]) {
148
+ setFocusIndex(index + 1)
149
+ }
150
+ } else if (index > 0) {
151
+ setFocusIndex(index - 1)
152
+ }
153
+ }
154
+
155
+ const handleAuthCodeSubmit = useCallback(async () => {
156
+ if (!code?.length) {
157
+ setError(copy?.codeEmptyError || '')
158
+ return
159
+ }
160
+
161
+ if (code.length < 6) {
162
+ setError(copy?.incorrectCodeError || '')
163
+ return
164
+ }
165
+
166
+ if (activeToken) {
167
+ await triggerEmailValidation(
168
+ {
169
+ token: activeToken,
170
+ code: code,
171
+ },
172
+ {
173
+ onSuccess: data => {
174
+ if (data.status >= 200 && data.status < 300) {
175
+ setMessageStatus('success')
176
+ setMessageText(copy?.authSuccessMessage || '')
177
+ setIsActivateSuccess(true)
178
+ if (onAuthSuccess) {
179
+ onAuthSuccess()
180
+ } else {
181
+ setTimeout(() => {
182
+ authCodeActivate.close()
183
+ }, 3000)
184
+ }
185
+ } else {
186
+ if (data?.data?.error_code === '104') {
187
+ if (onAuthSuccess) {
188
+ onAuthSuccess()
189
+ } else {
190
+ setTimeout(() => {
191
+ authCodeActivate.close()
192
+ }, 3000)
193
+ }
194
+ } else if (data?.data?.error_code === '142') {
195
+ setError(copy?.incorrectCodeError || 'Invalid verification code.')
196
+ } else if (data?.data?.error_code === '154') {
197
+ setError(copy?.expiredCodeMessage || '')
198
+ } else {
199
+ setError(copy?.sendEmailErrorMessage || '')
200
+ }
201
+ }
202
+ },
203
+ }
204
+ )
205
+ }
206
+
207
+ // 设置定时器清除状态信息
208
+ let timer = setTimeout(() => {
209
+ setMessageStatus('')
210
+ setMessageText('')
211
+ clearTimeout(timer)
212
+ }, 5000)
213
+
214
+ gaTrack({
215
+ event: 'ga4Event',
216
+ event_name: 'lp_button',
217
+ event_parameters: {
218
+ page_group: 'reg_sub_pop',
219
+ position: 'auth_code',
220
+ button_name: 'check_and_active',
221
+ },
222
+ })
223
+ }, [
224
+ code,
225
+ copy?.codeEmptyError,
226
+ copy?.authSuccessMessage,
227
+ copy?.incorrectCodeError,
228
+ copy?.expiredCodeMessage,
229
+ copy?.sendEmailErrorMessage,
230
+ locale,
231
+ activeToken,
232
+ ])
233
+
234
+ return (
235
+ <RegistrationModalContainer isOpen={authCodeActivate.isOpen} onClose={authCodeActivate.close}>
236
+ <div className="relative">
237
+ <div>
238
+ <Text
239
+ className="text-[22px] font-extrabold leading-[120%] text-[#333] min-l:text-[24px] [&_abbr]:text-[#005d8e]"
240
+ html={copy?.authCodeTitle}
241
+ />
242
+ <Text
243
+ as="p"
244
+ className="mt-3 text-[14px] font-semibold leading-[140%] text-[rgba(51,51,51,0.75)] min-l:text-base [&_abbr]:text-[#333]"
245
+ html={copy?.authCodeDesc?.replace('%email%', email || '')}
246
+ />
247
+ </div>
248
+ <div className="mt-6">
249
+ <Text
250
+ className="mt-4 text-[14px] !font-bold font-semibold leading-[140%] text-[#333] min-l:mt-6"
251
+ html={copy?.enterActiveCodeText}
252
+ />
253
+ <div className="my-3 grid grid-cols-6 gap-2">
254
+ {codeArray.map((item, index) => (
255
+ <div key={index} className="col-span-1 aspect-1 text-[#555]">
256
+ <input
257
+ ref={inputRef => {
258
+ if (inputRef) {
259
+ inputRefs.current[index] = inputRef
260
+ }
261
+ }}
262
+ key={index}
263
+ type="tel"
264
+ className={cn(
265
+ 'flex size-full items-center justify-center border border-[#333333]/20 bg-[#EEEEEE] text-center text-[24px] font-medium focus:border-[#333]/50 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none [&:focus-visible]:outline-none',
266
+ rounded && 'rounded-[12px]'
267
+ )}
268
+ value={item}
269
+ autoComplete="false"
270
+ autoCorrect="false"
271
+ spellCheck="false"
272
+ autoCapitalize="false"
273
+ onChange={event => handleInputCodeChange(event, index)}
274
+ onFocus={() => {
275
+ setFocusIndex(index)
276
+ }}
277
+ onPaste={event => {
278
+ const paste = event.clipboardData.getData('text')
279
+ if (!Number.isNaN(Number(paste))) {
280
+ const pastedCode = paste.split('').slice(0, 6)
281
+ setCodeArray(pastedCode.concat(Array(6 - pastedCode.length).fill('')))
282
+ if (pastedCode.length <= codeArray.length) {
283
+ setFocusIndex(pastedCode.length - 1)
284
+ }
285
+ }
286
+ }}
287
+ onKeyDown={event => {
288
+ const { value } = event.target as HTMLInputElement
289
+ if (event.key === 'Backspace' && !value && index > 0) {
290
+ setFocusIndex(index - 1)
291
+ }
292
+ }}
293
+ />
294
+ </div>
295
+ ))}
296
+ </div>
297
+
298
+ {error && <Text className="mb-3 text-[14px] font-semibold leading-[120%] text-[#f84d4f]" html={error} />}
299
+ {copy?.authCodeContent && (
300
+ <ul
301
+ className='flex flex-col gap-1 [&_li]:flex [&_li]:gap-2 [&_li]:text-[14px] [&_li]:font-semibold [&_li]:leading-[120%] [&_li]:text-[rgba(51,51,51,0.55)] [&_li]:before:content-["•"]'
302
+ dangerouslySetInnerHTML={{ __html: copy?.authCodeContent }}
303
+ />
304
+ )}
305
+ </div>
306
+ <div className="mt-4 min-l:mt-6">
307
+ <Text className="text-base font-semibold leading-[100%] text-[#333]" html={copy?.authCodeReceiveText} />{' '}
308
+ {isStartCountDown ? (
309
+ <Text
310
+ html={copy?.retrieveText?.replace('%countdownTime%', countDown.toString())}
311
+ className="cursor-pointer text-base font-semibold leading-[100%] !text-brand text-[#005d8e] text-[#333] underline"
312
+ />
313
+ ) : (
314
+ <Text
315
+ onClick={handleSendAgain}
316
+ className={cn(
317
+ 'cursor-pointer text-base font-semibold leading-[100%] !text-brand text-[#005d8e] text-[#333] underline',
318
+ {
319
+ 'pointer-events-none': isStartCountDown || isSendingEmail,
320
+ }
321
+ )}
322
+ html={copy?.sendAgainText}
323
+ />
324
+ )}
325
+ <Button
326
+ type="submit"
327
+ loading={emailValidationLoading}
328
+ className="mt-6 flex h-[54px] w-full cursor-pointer items-center justify-center px-8 py-[15px] text-center text-base font-bold leading-[100%] text-white min-l:mt-8"
329
+ onClick={handleAuthCodeSubmit}
330
+ >
331
+ {copy.buttonText}
332
+ </Button>
333
+ </div>
334
+ <Message status={messageStatus} message={messageText} />
335
+ </div>
336
+ </RegistrationModalContainer>
337
+ )
338
+ }
@@ -0,0 +1,23 @@
1
+ export type AuthCodeActivateCopy = {
2
+ authCodeTitle?: string
3
+ authCodeDesc?: string
4
+ enterActiveCodeText?: string
5
+ authCodeContent?: string
6
+ authCodeReceiveText?: string
7
+ sendAgainText?: string
8
+ buttonText?: string
9
+ note?: string
10
+ codeEmptyError?: string
11
+ incorrectCodeError?: string
12
+ retrieveText?: string
13
+ authSuccessMessage?: string
14
+ sendEmailSuccessMessage?: string
15
+ sendEmailErrorMessage?: string
16
+ beenActivatedMessage?: string
17
+ invalidCodeMessage?: string
18
+ expiredCodeMessage?: string
19
+ }
20
+
21
+ export type AuthCodeActivateProps = {
22
+ copy: AuthCodeActivateCopy
23
+ }
@@ -0,0 +1 @@
1
+ export * from './provider'