@anker-in/campaign-ui 0.2.11-beta.2 → 0.2.11-beta.4

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 (249) hide show
  1. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.d.ts +2 -2
  2. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +1 -1
  3. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +2 -2
  4. package/dist/cjs/components/credits/context/memberPriceConst.d.ts +0 -5
  5. package/dist/cjs/components/credits/context/memberPriceConst.js +1 -1
  6. package/dist/cjs/components/credits/context/memberPriceConst.js.map +3 -3
  7. package/dist/cjs/components/credits/context/memberPriceTypes.d.ts +1 -22
  8. package/dist/cjs/components/credits/context/memberPriceTypes.js +1 -1
  9. package/dist/cjs/components/credits/context/memberPriceTypes.js.map +1 -1
  10. package/dist/cjs/components/credits/context/provider.d.ts +15 -1
  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/context/utils/getFunctionMemberPrice.d.ts +2 -2
  14. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +1 -1
  15. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +1 -1
  16. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +2 -2
  17. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +1 -1
  18. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +1 -1
  19. package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +2 -2
  20. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +1 -1
  21. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +1 -1
  22. package/dist/cjs/components/credits/context/utils.d.ts +4 -0
  23. package/dist/cjs/components/credits/context/utils.js +1 -1
  24. package/dist/cjs/components/credits/context/utils.js.map +3 -3
  25. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  26. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
  27. package/dist/cjs/components/credits/creditsBanner/index.d.ts +2 -0
  28. package/dist/cjs/components/credits/creditsBanner/index.js +12 -1
  29. package/dist/cjs/components/credits/creditsBanner/index.js.map +3 -3
  30. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js +1 -1
  31. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js.map +3 -3
  32. package/dist/cjs/components/credits/creditsBenefits/IconInfo.js +1 -1
  33. package/dist/cjs/components/credits/creditsBenefits/IconInfo.js.map +1 -1
  34. package/dist/cjs/components/credits/creditsBenefits/index.js +3 -3
  35. package/dist/cjs/components/credits/creditsBenefits/index.js.map +2 -2
  36. package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
  37. package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +2 -2
  38. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
  39. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  40. package/dist/cjs/components/credits/creditsCash/type.d.ts +1 -0
  41. package/dist/cjs/components/credits/creditsCash/type.js +1 -1
  42. package/dist/cjs/components/credits/creditsCash/type.js.map +1 -1
  43. package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
  44. package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
  45. package/dist/cjs/components/credits/creditsFaq/index.js +1 -1
  46. package/dist/cjs/components/credits/creditsFaq/index.js.map +3 -3
  47. package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
  48. package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
  49. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  50. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
  51. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
  52. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
  53. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.d.ts +7 -0
  54. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.js +2 -0
  55. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.js.map +7 -0
  56. package/dist/cjs/components/credits/creditsMemberPrice/type.d.ts +3 -5
  57. package/dist/cjs/components/credits/creditsMemberPrice/type.js +1 -1
  58. package/dist/cjs/components/credits/creditsMemberPrice/type.js.map +1 -1
  59. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
  60. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
  61. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  62. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +3 -3
  63. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  64. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +3 -3
  65. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  66. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
  67. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  68. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  69. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  70. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  71. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  72. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +3 -3
  73. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  74. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  75. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  76. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  77. package/dist/cjs/components/credits/modal/MyRewardsModal.js +1 -1
  78. package/dist/cjs/components/credits/modal/MyRewardsModal.js.map +3 -3
  79. package/dist/cjs/components/credits/modal/activitiesModal.js +1 -1
  80. package/dist/cjs/components/credits/modal/activitiesModal.js.map +3 -3
  81. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  82. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  83. package/dist/cjs/components/credits/modal/modalContainer.js +1 -1
  84. package/dist/cjs/components/credits/modal/modalContainer.js.map +3 -3
  85. package/dist/cjs/components/credits/modal/subscribeModal.js +1 -1
  86. package/dist/cjs/components/credits/modal/subscribeModal.js.map +3 -3
  87. package/dist/cjs/components/credits/modal/tip.js +1 -1
  88. package/dist/cjs/components/credits/modal/tip.js.map +3 -3
  89. package/dist/cjs/components/index.d.ts +2 -2
  90. package/dist/cjs/components/index.js +1 -1
  91. package/dist/cjs/components/index.js.map +2 -2
  92. package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
  93. package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
  94. package/dist/cjs/components/registration/modalContainer.js +1 -1
  95. package/dist/cjs/components/registration/modalContainer.js.map +3 -3
  96. package/dist/cjs/constants.d.ts +1 -0
  97. package/dist/cjs/constants.js +2 -0
  98. package/dist/cjs/constants.js.map +7 -0
  99. package/dist/cjs/index.d.ts +3 -2
  100. package/dist/cjs/index.js +1 -1
  101. package/dist/cjs/index.js.map +2 -2
  102. package/dist/cjs/templates/Credits.d.ts +15 -1
  103. package/dist/cjs/templates/Credits.js +1 -1
  104. package/dist/cjs/templates/Credits.js.map +3 -3
  105. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +2 -2
  106. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +1 -1
  107. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +2 -2
  108. package/dist/esm/components/credits/context/memberPriceConst.d.ts +0 -5
  109. package/dist/esm/components/credits/context/memberPriceConst.js +1 -1
  110. package/dist/esm/components/credits/context/memberPriceConst.js.map +3 -3
  111. package/dist/esm/components/credits/context/memberPriceTypes.d.ts +1 -22
  112. package/dist/esm/components/credits/context/provider.d.ts +15 -1
  113. package/dist/esm/components/credits/context/provider.js +1 -1
  114. package/dist/esm/components/credits/context/provider.js.map +3 -3
  115. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +2 -2
  116. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +1 -1
  117. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +1 -1
  118. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +2 -2
  119. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +1 -1
  120. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +1 -1
  121. package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +2 -2
  122. package/dist/esm/components/credits/context/utils/variantGetCoupon.js +1 -1
  123. package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +1 -1
  124. package/dist/esm/components/credits/context/utils.d.ts +4 -0
  125. package/dist/esm/components/credits/context/utils.js +1 -1
  126. package/dist/esm/components/credits/context/utils.js.map +3 -3
  127. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  128. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
  129. package/dist/esm/components/credits/creditsBanner/index.d.ts +2 -0
  130. package/dist/esm/components/credits/creditsBanner/index.js +12 -1
  131. package/dist/esm/components/credits/creditsBanner/index.js.map +3 -3
  132. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js +1 -1
  133. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js.map +3 -3
  134. package/dist/esm/components/credits/creditsBenefits/IconInfo.js +1 -1
  135. package/dist/esm/components/credits/creditsBenefits/IconInfo.js.map +1 -1
  136. package/dist/esm/components/credits/creditsBenefits/index.js +3 -3
  137. package/dist/esm/components/credits/creditsBenefits/index.js.map +2 -2
  138. package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
  139. package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +2 -2
  140. package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
  141. package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  142. package/dist/esm/components/credits/creditsCash/type.d.ts +1 -0
  143. package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
  144. package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
  145. package/dist/esm/components/credits/creditsFaq/index.js +1 -1
  146. package/dist/esm/components/credits/creditsFaq/index.js.map +3 -3
  147. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  148. package/dist/esm/components/credits/creditsInfoCard/index.js.map +2 -2
  149. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  150. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
  151. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
  152. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
  153. package/dist/esm/components/credits/creditsMemberPrice/Pagination.d.ts +7 -0
  154. package/dist/esm/components/credits/creditsMemberPrice/Pagination.js +2 -0
  155. package/dist/esm/components/credits/creditsMemberPrice/Pagination.js.map +7 -0
  156. package/dist/esm/components/credits/creditsMemberPrice/type.d.ts +3 -5
  157. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
  158. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
  159. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  160. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +2 -2
  161. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  162. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +2 -2
  163. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  164. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +2 -2
  165. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  166. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  167. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  168. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  169. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  170. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +2 -2
  171. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  172. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  173. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  174. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  175. package/dist/esm/components/credits/modal/MyRewardsModal.js +1 -1
  176. package/dist/esm/components/credits/modal/MyRewardsModal.js.map +2 -2
  177. package/dist/esm/components/credits/modal/activitiesModal.js +1 -1
  178. package/dist/esm/components/credits/modal/activitiesModal.js.map +3 -3
  179. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  180. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  181. package/dist/esm/components/credits/modal/modalContainer.js +1 -1
  182. package/dist/esm/components/credits/modal/modalContainer.js.map +3 -3
  183. package/dist/esm/components/credits/modal/subscribeModal.js +1 -1
  184. package/dist/esm/components/credits/modal/subscribeModal.js.map +3 -3
  185. package/dist/esm/components/credits/modal/tip.js +1 -1
  186. package/dist/esm/components/credits/modal/tip.js.map +3 -3
  187. package/dist/esm/components/index.d.ts +2 -2
  188. package/dist/esm/components/index.js +1 -1
  189. package/dist/esm/components/index.js.map +2 -2
  190. package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
  191. package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
  192. package/dist/esm/components/registration/modalContainer.js +1 -1
  193. package/dist/esm/components/registration/modalContainer.js.map +3 -3
  194. package/dist/esm/constants.d.ts +1 -0
  195. package/dist/esm/constants.js +2 -0
  196. package/dist/esm/constants.js.map +7 -0
  197. package/dist/esm/index.d.ts +3 -2
  198. package/dist/esm/index.js +1 -1
  199. package/dist/esm/index.js.map +2 -2
  200. package/dist/esm/templates/Credits.d.ts +15 -1
  201. package/dist/esm/templates/Credits.js +1 -1
  202. package/dist/esm/templates/Credits.js.map +3 -3
  203. package/package.json +3 -3
  204. package/src/components/credits/context/memberPriceConst.ts +0 -7
  205. package/src/components/credits/context/memberPriceTypes.ts +1 -26
  206. package/src/components/credits/context/provider.tsx +14 -0
  207. package/src/components/credits/context/utils.ts +9 -0
  208. package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +43 -40
  209. package/src/components/credits/creditsBanner/index.tsx +31 -2
  210. package/src/components/credits/creditsBenefits/BenefitItem.tsx +13 -5
  211. package/src/components/credits/creditsBenefits/IconInfo.tsx +1 -1
  212. package/src/components/credits/creditsBenefits/index.tsx +1 -1
  213. package/src/components/credits/creditsCash/CreditsCash.tsx +1 -1
  214. package/src/components/credits/creditsCash/RedeemableItem.tsx +25 -7
  215. package/src/components/credits/creditsCash/type.ts +1 -0
  216. package/src/components/credits/creditsFaq/faqItem/FaqItem.tsx +25 -23
  217. package/src/components/credits/creditsFaq/index.tsx +2 -1
  218. package/src/components/credits/creditsInfoCard/index.tsx +3 -2
  219. package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +94 -117
  220. package/src/components/credits/creditsMemberPrice/MemberPriceItem.tsx +127 -27
  221. package/src/components/credits/creditsMemberPrice/Pagination.tsx +113 -0
  222. package/src/components/credits/creditsMemberPrice/type.ts +3 -5
  223. package/src/components/credits/creditsNavigation/CreditsNavigation.tsx +3 -3
  224. package/src/components/credits/creditsRedeemList/AddressForm/CountrySelect.tsx +2 -1
  225. package/src/components/credits/creditsRedeemList/AddressForm/StateSelect.tsx +2 -1
  226. package/src/components/credits/creditsRedeemList/AddressForm/index.tsx +2 -1
  227. package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +27 -13
  228. package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +2 -1
  229. package/src/components/credits/creditsRedeemList/RedeemProductModal/Success.tsx +2 -1
  230. package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +3 -2
  231. package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +34 -20
  232. package/src/components/credits/modal/MyRewardsModal.tsx +2 -1
  233. package/src/components/credits/modal/activitiesModal.tsx +2 -1
  234. package/src/components/credits/modal/creditsUploadReceiptModal.tsx +2 -1
  235. package/src/components/credits/modal/modalContainer.tsx +2 -1
  236. package/src/components/credits/modal/subscribeModal.tsx +2 -1
  237. package/src/components/credits/modal/tip.tsx +2 -1
  238. package/src/components/index.ts +2 -2
  239. package/src/components/registration/authCodeActivate/index.tsx +1 -1
  240. package/src/components/registration/modalContainer.tsx +2 -1
  241. package/src/constants.ts +1 -0
  242. package/src/index.ts +3 -2
  243. package/src/templates/Credits.tsx +26 -9
  244. package/src/components/credits/context/hooks/useFunctionMemberPrice.ts +0 -33
  245. package/src/components/credits/context/utils/atobID.ts +0 -8
  246. package/src/components/credits/context/utils/functionDiscountCalculate.ts +0 -57
  247. package/src/components/credits/context/utils/getFunctionMemberPrice.ts +0 -135
  248. package/src/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.ts +0 -51
  249. package/src/components/credits/context/utils/variantGetCoupon.ts +0 -34
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsCash/CreditsCash.tsx"],
4
- "sourcesContent": ["import { Container, Heading, Text } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\n\nimport RedeemableItem from './RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/rulesModal'\nimport { useProductsByHandles } from '@anker-in/lib'\nimport { CreditsCashCopy, RedeemItem } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\n\nexport const CreditsCash = ({ copy, id }: { copy: CreditsCashCopy; id?: string }) => {\n const [rules, setRules] = useState<string | string[]>()\n const { redeemableList } = useRedeemableList()\n const { pageCommon } = useCreditsContext()\n\n const variantMetafieldIdentifiers: any[] = []\n\n const { data: productByHandles } = useProductsByHandles({\n handles: copy?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n const list = useMemo(() => {\n return productByHandles\n ?.map((product: Product) => {\n const config = copy.list.find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n if (!alpcData || !productVariant) return null\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [productByHandles, copy.list, redeemableList])\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n\n <div className=\"relative mt-[24px] grid grid-cols-4 gap-[16px] l:gap-[12px] md:grid-cols-2 md-xl:grid-cols-3\">\n {list?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={copy}\n itemData={item}\n setRules={setRules}\n currencyCode={productByHandles?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className=\"md:h-fit md:rounded-b-[16px]\"\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "AAqDI,OACE,OAAAA,EADF,QAAAC,MAAA,oBArDJ,OAAS,aAAAC,EAAW,WAAAC,MAAqB,wBACzC,OAAS,WAAAC,EAAS,YAAAC,MAAgB,QAElC,OAAOC,MAAoB,mBAC3B,OAAOC,MAAuB,qCAC9B,OAAOC,MAAgB,sBACvB,OAAS,wBAAAC,MAA4B,gBAErC,OAAkB,cAAcC,MAAU,gBAC1C,OAAS,qBAAAC,MAAyB,sBAG3B,MAAMC,EAAc,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAA8C,CACnF,KAAM,CAACC,EAAOC,CAAQ,EAAIX,EAA4B,EAChD,CAAE,eAAAY,CAAe,EAAIV,EAAkB,EACvC,CAAE,WAAAW,CAAW,EAAIP,EAAkB,EAEnCQ,EAAqC,CAAC,EAEtC,CAAE,KAAMC,CAAiB,EAAIX,EAAqB,CACtD,QAASI,GAAM,MAAM,IAAIQ,GAAQA,EAAK,WAAW,CAAC,GAAG,MAAM,GAAK,CAAC,EACjE,qBAAsB,CACpB,QAASF,CACX,CACF,CAAC,EAEKG,EAAOlB,EAAQ,IACZgB,GACH,IAAKG,GAAqB,CAC1B,MAAMC,EAASX,EAAK,KAAK,KAAKQ,GAAQA,EAAK,WAAW,CAAC,GAAG,SAAWE,EAAQ,MAAM,EAC7EE,EAAWR,EAAe,KAAKI,GAAQA,EAAK,IAAI,SAAS,IAAMG,GAAQ,UAAU,SAAS,CAAC,EAC3FE,EACJH,EAAQ,UAAU,KAAMI,GAAiBA,EAAQ,MAAQH,GAAQ,WAAW,CAAC,GAAG,GAAG,GAAKD,EAAQ,WAAW,CAAC,EAC9G,MAAI,CAACE,GAAY,CAACC,EAAuB,KAClC,CACL,QAAAH,EACA,eAAAG,EACA,SAAU,CACR,GAAID,GAAU,GACd,eAAgBA,GAAU,gBAC1B,mBAAoBA,GAAU,oBAC9B,UAAWA,GAAU,WACrB,YAAaA,GAAU,aACvB,MAAOA,GAAU,KACjB,KAAMA,GAAU,IAClB,EACA,OAAAD,CACF,CACF,CAAC,EACA,OAAO,OAAO,EAChB,CAACJ,EAAkBP,EAAK,KAAMI,CAAc,CAAC,EAEhD,OACEhB,EAACC,EAAA,CAAU,GAAIY,EAAI,UAAWJ,EAAG,cAAc,EAC7C,UAAAV,EAACG,EAAA,CAAQ,GAAG,KAAK,KAAK,IAAI,KAAMU,EAAK,MAAO,EAE5Cb,EAAC,OAAI,UAAU,+FACZ,SAAAsB,GAAM,IAAI,CAACD,EAAMO,IAChB5B,EAACM,EAAA,CAEC,KAAMO,EACN,SAAUQ,EACV,SAAUL,EACV,aAAcI,IAAmB,CAAC,GAAG,MAAM,cAAgB,OAJtDQ,CAKP,CACD,EACH,EAECb,GACCf,EAACQ,EAAA,CACC,iBAAiB,+BACjB,UAAU,+BACV,OAAQO,EAAM,OAAS,EACvB,QAAS,IAAMC,EAAS,CAAC,CAAC,EAC1B,eAAe,gCACf,MAAOD,EACP,gBAAgB,mCAChB,MAAOG,GAAY,UACnB,cAAc,2BAChB,GAEJ,CAEJ",
4
+ "sourcesContent": ["import { Container, Heading, Text } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\n\nimport RedeemableItem from './RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/rulesModal'\nimport { useProductsByHandles } from '@anker-in/lib'\nimport { CreditsCashCopy, RedeemItem } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\n\nexport const CreditsCash = ({ copy, id }: { copy: CreditsCashCopy; id?: string }) => {\n const [rules, setRules] = useState<string | string[]>()\n const { redeemableList } = useRedeemableList()\n const { pageCommon } = useCreditsContext()\n\n const variantMetafieldIdentifiers: any[] = []\n\n const { data: productByHandles } = useProductsByHandles({\n handles: copy?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n const list = useMemo(() => {\n return productByHandles\n ?.map((product: Product) => {\n const config = (copy.list || []).find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n if (!alpcData || !productVariant) return null\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [productByHandles, copy.list, redeemableList])\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n\n <div className=\"relative mt-[24px] grid grid-cols-4 gap-[16px] l:gap-[12px] md:grid-cols-2 md-xl:grid-cols-3\">\n {list?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={copy}\n itemData={item}\n setRules={setRules}\n currencyCode={productByHandles?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className=\"md:h-fit md:rounded-b-[16px]\"\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "AAqDI,OACE,OAAAA,EADF,QAAAC,MAAA,oBArDJ,OAAS,aAAAC,EAAW,WAAAC,MAAqB,wBACzC,OAAS,WAAAC,EAAS,YAAAC,MAAgB,QAElC,OAAOC,MAAoB,mBAC3B,OAAOC,MAAuB,qCAC9B,OAAOC,MAAgB,sBACvB,OAAS,wBAAAC,MAA4B,gBAErC,OAAkB,cAAcC,MAAU,gBAC1C,OAAS,qBAAAC,MAAyB,sBAG3B,MAAMC,EAAc,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAA8C,CACnF,KAAM,CAACC,EAAOC,CAAQ,EAAIX,EAA4B,EAChD,CAAE,eAAAY,CAAe,EAAIV,EAAkB,EACvC,CAAE,WAAAW,CAAW,EAAIP,EAAkB,EAEnCQ,EAAqC,CAAC,EAEtC,CAAE,KAAMC,CAAiB,EAAIX,EAAqB,CACtD,QAASI,GAAM,MAAM,IAAIQ,GAAQA,EAAK,WAAW,CAAC,GAAG,MAAM,GAAK,CAAC,EACjE,qBAAsB,CACpB,QAASF,CACX,CACF,CAAC,EAEKG,EAAOlB,EAAQ,IACZgB,GACH,IAAKG,GAAqB,CAC1B,MAAMC,GAAUX,EAAK,MAAQ,CAAC,GAAG,KAAKQ,GAAQA,EAAK,WAAW,CAAC,GAAG,SAAWE,EAAQ,MAAM,EACrFE,EAAWR,EAAe,KAAKI,GAAQA,EAAK,IAAI,SAAS,IAAMG,GAAQ,UAAU,SAAS,CAAC,EAC3FE,EACJH,EAAQ,UAAU,KAAMI,GAAiBA,EAAQ,MAAQH,GAAQ,WAAW,CAAC,GAAG,GAAG,GAAKD,EAAQ,WAAW,CAAC,EAC9G,MAAI,CAACE,GAAY,CAACC,EAAuB,KAClC,CACL,QAAAH,EACA,eAAAG,EACA,SAAU,CACR,GAAID,GAAU,GACd,eAAgBA,GAAU,gBAC1B,mBAAoBA,GAAU,oBAC9B,UAAWA,GAAU,WACrB,YAAaA,GAAU,aACvB,MAAOA,GAAU,KACjB,KAAMA,GAAU,IAClB,EACA,OAAAD,CACF,CACF,CAAC,EACA,OAAO,OAAO,EAChB,CAACJ,EAAkBP,EAAK,KAAMI,CAAc,CAAC,EAEhD,OACEhB,EAACC,EAAA,CAAU,GAAIY,EAAI,UAAWJ,EAAG,cAAc,EAC7C,UAAAV,EAACG,EAAA,CAAQ,GAAG,KAAK,KAAK,IAAI,KAAMU,EAAK,MAAO,EAE5Cb,EAAC,OAAI,UAAU,+FACZ,SAAAsB,GAAM,IAAI,CAACD,EAAMO,IAChB5B,EAACM,EAAA,CAEC,KAAMO,EACN,SAAUQ,EACV,SAAUL,EACV,aAAcI,IAAmB,CAAC,GAAG,MAAM,cAAgB,OAJtDQ,CAKP,CACD,EACH,EAECb,GACCf,EAACQ,EAAA,CACC,iBAAiB,+BACjB,UAAU,+BACV,OAAQO,EAAM,OAAS,EACvB,QAAS,IAAMC,EAAS,CAAC,CAAC,EAC1B,eAAe,gCACf,MAAOD,EACP,gBAAgB,mCAChB,MAAOG,GAAY,UACnB,cAAc,2BAChB,GAEJ,CAEJ",
6
6
  "names": ["jsx", "jsxs", "Container", "Heading", "useMemo", "useState", "RedeemableItem", "useRedeemableList", "RulesModal", "useProductsByHandles", "cn", "useCreditsContext", "CreditsCash", "copy", "id", "rules", "setRules", "redeemableList", "pageCommon", "variantMetafieldIdentifiers", "productByHandles", "item", "list", "product", "config", "alpcData", "productVariant", "variant", "index"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as i}from"react/jsx-runtime";import{Button as E,Text as d,Picture as C}from"@anker-in/headless-ui";import{useMemo as c,useState as F}from"react";import{useCreditsContext as A}from"../context/provider";import{useRedeemAndBuy as B}from"../context/hooks/useRedeemAndBuy";import{formatPrice as N,numberFormat as L}from"../context/utils";import{gaTrack as _,classNames as a,ROUNDED_BRANDS as O,useHeadlessContext as P}from"@anker-in/lib";import{useRegistration as U}from"../../../components/registration";function T({copy:r,itemData:e,setRules:y,className:S}){const{creditInfo:x,profile:l,openSignUpPopup:w,pageCommon:s,gtm:{pageGroup:m}}=A(),{authCodeActivate:f}=U(),{brand:R,locale:v}=P(),g=O.includes(R),[b,h]=F(null),{trigger:V,isMutating:k}=B({},{onError:o=>{h(o.message)}}),n=c(()=>!!l,[l?.activated]),p=c(()=>n&&l?.activated&&e.alpcData?.consumeCredits>Number(x?.available_credit||0),[n,l?.activated,e.alpcData?.consumeCredits,x?.available_credit]),z=c(()=>!!(e.alpcData?.remainingInventory<=0&&e.alpcData?.isLimited||!e.productVariant?.availableForSale||p),[e.alpcData?.remainingInventory,e.alpcData?.isLimited,e.productVariant?.availableForSale,p]),I=()=>{h(null),n?!l?.activated&&!f.isActivateSuccess?f.open():(V({productVariant:e?.productVariant,redeemId:e?.config?.redeemId}),_({event:"ga4Event",event_name:"lp_button",member_active_status:l?.activated?"active":"not active",event_parameters:{page_group:m,position:r.title,button_name:u,info:e?.alpcData?.id?.toString()}})):w()},u=c(()=>e.productVariant?.availableForSale?n?r.btnRedeem:r.unlockRewards:r?.soldOut||"Sold Out",[n,e.productVariant?.availableForSale,r.btnRedeem,r.unlockRewards,r?.soldOut]);return i("div",{className:a("flex flex-col items-center rounded-[16px] bg-[#EAEAEC] p-[24px] md:rounded-[12px] md:px-[8px] xl:py-[16px] md-xl:px-[16px]",!g&&"rounded-none md:rounded-none",S),children:[t("a",{href:`/products/${e.product.handle}`,className:a("relative mx-auto h-[224px] w-fit l:h-[120px] l-xxl:h-[138px]"),children:t(C,{className:"mx-auto h-full w-auto",imgClassName:"h-full object-contain",source:e?.config?.image?.url||e?.productVariant?.metafields?.global?.transparentImg||e?.productVariant?.image?.url})}),i("div",{className:a("mt-[22px] w-full l:mt-[8px]"),children:[t(d,{html:e?.product?.title,title:e.config?.title||e.alpcData?.title||e.product?.title,size:2,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]"}),e?.config?.rules?.split("<br>")?.length>0&&t("button",{type:"button",onClick:()=>{y(e?.config?.rules?.split("<br>")),_({event:"ga4Event",event_name:"lp_button",member_active_status:l?.activated?"active":"not active",event_parameters:{page_group:m,position:r.title,button_name:s?.ruleLabel,info:e?.alpcData?.id?.toString()}})},className:"mt-[8px] text-[16px] font-bold underline xxl:text-[14px]",tabIndex:0,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&o.preventDefault()},children:s?.ruleLabel}),i("div",{className:"flex flex-wrap items-center l:mt-[12px] laptop:text-[16px] lg-desktop:text-[18px]",children:[t(C,{className:"size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]",source:"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783"}),t(d,{html:`${L(e?.alpcData?.consumeCredits)} + ${N({amount:Number(e?.config?.price),currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:v})}`,size:2,as:"p",className:"ml-[4px] mt-[4px] font-bold leading-none text-[24px] l-xxl:text-[20px] l:text-[16px]"}),t(d,{html:N({amount:e?.productVariant?.price.amount,currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:v}),className:"l-xxl:text-[20px] mt-[4px] l:text-[16px] ml-[4px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through",as:"p"})]}),i("div",{className:"group relative w-full",children:[t(E,{disabled:z,variant:"primary",size:"lg",className:"mt-[8px] md:px-[10px] l:w-full",loading:k,onClick:()=>{I()},title:p?s.insufficientCredits:u,children:u}),t("div",{className:a("absolute -bottom-[20px] left-0 z-10 w-[300px] translate-y-full opacity-0 transition-opacity group-hover:opacity-100 md:-bottom-[14px] md:w-[160px]",p?"block":"hidden"),children:i("div",{className:a("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow md:px-[10px] md:py-[8px]",!g&&"rounded-none"),children:[t(d,{as:"p",size:"2",html:s?.insufficientCredits,className:"text-[14px]"}),t("div",{className:"absolute -top-[10px] left-[48px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]"})]})})]})]}),b&&t("div",{className:"mt-[8px] text-[14px] text-[#FF0000]",children:b})]})}var X=T;export{X as default};
1
+ import{jsx as t,jsxs as i}from"react/jsx-runtime";import{Button as F,Text as d,Picture as C,Badge as L}from"@anker-in/headless-ui";import{useMemo as c,useState as A}from"react";import{useCreditsContext as B}from"../context/provider";import{useRedeemAndBuy as $}from"../context/hooks/useRedeemAndBuy";import{formatPrice as N,numberFormat as O,extractVariantId as _}from"../context/utils";import{gaTrack as S,classNames as o,useHeadlessContext as P}from"@anker-in/lib";import{useRegistration as T}from"../../../components/registration";import{ROUNDED_BRANDS as U}from"../../../constants";function M({copy:r,itemData:e,setRules:V,className:w}){const{creditInfo:x,profile:a,openSignUpPopup:y,pageCommon:s,gtm:{pageGroup:m}}=B(),{authCodeActivate:f}=T(),{brand:R,locale:g}=P(),v=U.includes(R),[b,h]=A(null),{trigger:z,isMutating:I}=$({},{onError:n=>{h(n.message)}}),l=c(()=>!!a,[a?.activated]),p=c(()=>l&&a?.activated&&e.alpcData?.consumeCredits>Number(x?.available_credit||0),[l,a?.activated,e.alpcData?.consumeCredits,x?.available_credit]),k=c(()=>!!(e.alpcData?.remainingInventory<=0&&e.alpcData?.isLimited||!e.productVariant?.availableForSale||p),[e.alpcData?.remainingInventory,e.alpcData?.isLimited,e.productVariant?.availableForSale,p]),E=()=>{h(null),l?!a?.activated&&!f.isActivateSuccess?f.open():(z({productVariant:e?.productVariant,redeemId:e?.config?.redeemId}),S({event:"ga4Event",event_name:"lp_button",member_active_status:a?.activated?"active":"not active",event_parameters:{page_group:m,position:r.title,button_name:u,info:e?.alpcData?.id?.toString()}})):y()},u=c(()=>e.productVariant?.availableForSale?l?r.btnRedeem:r.unlockRewards:r?.soldOut||"Sold Out",[l,e.productVariant?.availableForSale,r.btnRedeem,r.unlockRewards,r?.soldOut]);return i("div",{className:o("relative flex flex-col items-center rounded-[16px] bg-[#EAEAEC] md:rounded-[12px] p-[24px] l:p-[8px] md-xl:p-[16px]",!v&&"rounded-none md:rounded-none",r.badgeLabel&&"pt-[48px] l:pt-[44px]",w),children:[r.badgeLabel&&t(L,{className:"absolute left-[24px] l:left-[16px] !bg-gradient-brand top-[16px] z-10",size:"lg",variant:"promotional",promotionalType:"regular-member",children:r.badgeLabel}),t("a",{href:_(e.productVariant?.id)?`/products/${e.product.handle}?variant=${_(e.productVariant?.id)}`:`/products/${e.product.handle}`,className:o("relative mx-auto h-[224px] w-fit l:h-[120px] l-xxl:h-[138px]"),children:t(C,{className:"mx-auto h-full w-auto",imgClassName:"h-full object-contain",source:e?.config?.image?.url||e?.productVariant?.metafields?.global?.transparentImg||e?.productVariant?.image?.url})}),i("div",{className:o("mt-[22px] w-full l:mt-[8px]"),children:[t(d,{html:e?.product?.title,title:e.config?.title||e.alpcData?.title||e.product?.title,size:2,className:"line-clamp-2 h-[58px] text-[24px] l-xxl:text-[20px] l:text-[16px] leading-[1.2] l:h-[38px] l-xxl:h-[48px]"}),e?.config?.rules?.split("<br>")?.length>0&&t("button",{type:"button",onClick:()=>{V(e?.config?.rules?.split("<br>")),S({event:"ga4Event",event_name:"lp_button",member_active_status:a?.activated?"active":"not active",event_parameters:{page_group:m,position:r.title,button_name:s?.ruleLabel,info:e?.alpcData?.id?.toString()}})},className:"mt-[8px] text-[16px] font-bold underline xxl:text-[14px]",tabIndex:0,onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&n.preventDefault()},children:s?.ruleLabel}),i("div",{className:"flex flex-wrap items-center l:mt-[12px] laptop:text-[16px] lg-desktop:text-[18px]",children:[t(C,{className:"size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]",source:"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783"}),t(d,{html:`${O(e?.alpcData?.consumeCredits)} + ${N({amount:Number(e?.config?.price),currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:g})}`,size:2,as:"p",className:"ml-[4px] mt-[4px] font-bold leading-none text-[24px] l-xxl:text-[20px] l:text-[16px]"}),t(d,{html:N({amount:e?.productVariant?.price.amount,currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:g}),className:"l-xxl:text-[20px] mt-[4px] l:text-[16px] ml-[4px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through",as:"p"})]}),i("div",{className:"group relative w-full mt-[8px]",children:[t(F,{disabled:k,variant:"primary",size:"lg",className:"mt-[8px] md:px-[10px] l:w-full",loading:I,onClick:()=>{E()},title:p?s.insufficientCredits:u,children:u}),t("div",{className:o("absolute -bottom-[20px] left-0 z-10 w-[300px] translate-y-full opacity-0 transition-opacity group-hover:opacity-100 md:-bottom-[14px] md:w-[160px]",p?"block":"hidden"),children:i("div",{className:o("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow md:px-[10px] md:py-[8px]",!v&&"rounded-none"),children:[t(d,{as:"p",size:"2",html:s?.insufficientCredits,className:"text-[14px]"}),t("div",{className:"absolute -top-[10px] left-[48px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]"})]})})]})]}),b&&t("div",{className:"mt-[8px] text-[14px] text-[#FF0000]",children:b})]})}var D=M;export{D as default};
2
2
  //# sourceMappingURL=RedeemableItem.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsCash/RedeemableItem.tsx"],
4
- "sourcesContent": ["import { Button, Text, Picture } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\n\nimport { CreditsCashCopy, RedeemItem } from './type'\nimport { useCreditsContext } from '../context/provider'\nimport { useRedeemAndBuy } from '../context/hooks/useRedeemAndBuy'\nimport { formatPrice, numberFormat } from '../context/utils'\nimport { gaTrack, classNames as cn, ROUNDED_BRANDS, useHeadlessContext } from '@anker-in/lib'\nimport { useRegistration } from '../../../components/registration'\n\nfunction RedeemableItem({\n copy,\n itemData,\n setRules,\n className,\n}: {\n copy: CreditsCashCopy\n itemData: RedeemItem\n className?: string\n setRules: (rules: string[]) => void\n currencyCode: string\n}) {\n const {\n creditInfo,\n profile,\n openSignUpPopup,\n pageCommon,\n gtm: { pageGroup },\n } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand, locale } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const [error, setError] = useState<string | null>(null)\n const { trigger, isMutating } = useRedeemAndBuy(\n {},\n {\n onError: error => {\n setError(error.message)\n },\n }\n )\n\n const isLogin = useMemo(() => {\n return !!profile\n }, [profile?.activated])\n\n const inSufficientCredit = useMemo(() => {\n return (\n isLogin && profile?.activated && itemData.alpcData?.consumeCredits > Number(creditInfo?.available_credit || 0)\n )\n }, [isLogin, profile?.activated, itemData.alpcData?.consumeCredits, creditInfo?.available_credit])\n\n const isDisabled = useMemo(() => {\n // \u5151\u6362\u9650\u5236\n if (itemData.alpcData?.remainingInventory <= 0 && itemData.alpcData?.isLimited) {\n return true\n }\n\n // \u5546\u54C1\u5E93\u5B58\u9650\u5236\n if (!itemData.productVariant?.availableForSale) {\n return true\n }\n\n // \u79EF\u5206\u4E0D\u8DB3\n if (inSufficientCredit) {\n return true\n }\n return false\n }, [\n itemData.alpcData?.remainingInventory,\n itemData.alpcData?.isLimited,\n itemData.productVariant?.availableForSale,\n inSufficientCredit,\n ])\n\n const handleRedeem = () => {\n setError(null)\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.open()\n } else {\n trigger({\n productVariant: itemData?.productVariant,\n redeemId: itemData?.config?.redeemId,\n })\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: pageGroup,\n position: copy.title,\n button_name: redeemButtonText,\n info: itemData?.alpcData?.id?.toString(),\n },\n })\n }\n }\n\n const redeemButtonText = useMemo(() => {\n // \u7F3A\u8D27\u6587\u6848\n if (!itemData.productVariant?.availableForSale) {\n return copy?.soldOut || 'Sold Out'\n } else if (!isLogin) {\n return copy.unlockRewards\n } else {\n return copy.btnRedeem\n }\n }, [isLogin, itemData.productVariant?.availableForSale, copy.btnRedeem, copy.unlockRewards, copy?.soldOut])\n\n return (\n <div\n className={cn(\n 'flex flex-col items-center rounded-[16px] bg-[#EAEAEC] p-[24px] md:rounded-[12px] md:px-[8px] xl:py-[16px] md-xl:px-[16px]',\n !rounded && 'rounded-none md:rounded-none',\n className\n )}\n >\n <a\n href={`/products/${itemData.product.handle}`}\n className={cn('relative mx-auto h-[224px] w-fit l:h-[120px] l-xxl:h-[138px]')}\n >\n <Picture\n className=\"mx-auto h-full w-auto\"\n imgClassName=\"h-full object-contain\"\n source={\n itemData?.config?.image?.url ||\n itemData?.productVariant?.metafields?.global?.transparentImg ||\n itemData?.productVariant?.image?.url\n }\n ></Picture>\n </a>\n <div className={cn('mt-[22px] w-full l:mt-[8px]')}>\n <Text\n html={itemData?.product?.title}\n title={itemData.config?.title || itemData.alpcData?.title || itemData.product?.title}\n size={2}\n 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]\"\n />\n {itemData?.config?.rules?.split('<br>')?.length > 0 && (\n <button\n type=\"button\"\n onClick={() => {\n setRules(itemData?.config?.rules?.split('<br>'))\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: pageGroup,\n position: copy.title,\n button_name: pageCommon?.ruleLabel,\n info: itemData?.alpcData?.id?.toString(),\n },\n })\n }}\n className=\"mt-[8px] text-[16px] font-bold underline xxl:text-[14px]\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n {pageCommon?.ruleLabel}\n </button>\n )}\n\n <div className=\"flex flex-wrap items-center l:mt-[12px] laptop:text-[16px] lg-desktop:text-[18px]\">\n <Picture\n className=\"size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]\"\n source=\"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783\"\n />\n <Text\n html={`${numberFormat(itemData?.alpcData?.consumeCredits)} + ${formatPrice({\n amount: Number(itemData?.config?.price),\n currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',\n locale: locale,\n })}`}\n size={2}\n as=\"p\"\n className=\"ml-[4px] mt-[4px] font-bold leading-none text-[24px] l-xxl:text-[20px] l:text-[16px]\"\n />\n <Text\n html={formatPrice({\n amount: itemData?.productVariant?.price.amount,\n currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',\n locale: locale,\n })}\n className=\"l-xxl:text-[20px] mt-[4px] l:text-[16px] ml-[4px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through\"\n as=\"p\"\n />\n </div>\n\n <div className=\"group relative w-full\">\n <Button\n disabled={isDisabled}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[8px] md:px-[10px] l:w-full\"\n loading={isMutating}\n onClick={() => {\n handleRedeem()\n }}\n title={inSufficientCredit ? pageCommon.insufficientCredits : redeemButtonText}\n >\n {redeemButtonText}\n </Button>\n <div\n className={cn(\n 'absolute -bottom-[20px] left-0 z-10 w-[300px] translate-y-full opacity-0 transition-opacity group-hover:opacity-100 md:-bottom-[14px] md:w-[160px]',\n inSufficientCredit ? 'block' : 'hidden'\n )}\n >\n <div\n className={cn(\n 'relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow md:px-[10px] md:py-[8px]',\n !rounded && 'rounded-none'\n )}\n >\n <Text as=\"p\" size=\"2\" html={pageCommon?.insufficientCredits} className=\"text-[14px]\" />\n <div className=\"absolute -top-[10px] left-[48px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]\" />\n </div>\n </div>\n </div>\n </div>\n {error && <div className=\"mt-[8px] text-[14px] text-[#FF0000]\">{error}</div>}\n </div>\n )\n}\n\nexport default RedeemableItem\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "Button", "Text", "Picture", "useMemo", "useState", "useCreditsContext", "useRedeemAndBuy", "formatPrice", "numberFormat", "gaTrack", "cn", "ROUNDED_BRANDS", "useHeadlessContext", "useRegistration", "RedeemableItem", "copy", "itemData", "setRules", "className", "creditInfo", "profile", "openSignUpPopup", "pageCommon", "pageGroup", "authCodeActivate", "brand", "locale", "rounded", "error", "setError", "trigger", "isMutating", "isLogin", "inSufficientCredit", "isDisabled", "handleRedeem", "redeemButtonText", "e", "RedeemableItem_default"]
4
+ "sourcesContent": ["import { Button, Text, Picture, Badge } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\n\nimport { CreditsCashCopy, RedeemItem } from './type'\nimport { useCreditsContext } from '../context/provider'\nimport { useRedeemAndBuy } from '../context/hooks/useRedeemAndBuy'\nimport { formatPrice, numberFormat, extractVariantId } from '../context/utils'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { useRegistration } from '../../../components/registration'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nfunction RedeemableItem({\n copy,\n itemData,\n setRules,\n className,\n}: {\n copy: CreditsCashCopy\n itemData: RedeemItem\n className?: string\n setRules: (rules: string[]) => void\n currencyCode: string\n}) {\n const {\n creditInfo,\n profile,\n openSignUpPopup,\n pageCommon,\n gtm: { pageGroup },\n } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand, locale } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const [error, setError] = useState<string | null>(null)\n const { trigger, isMutating } = useRedeemAndBuy(\n {},\n {\n onError: error => {\n setError(error.message)\n },\n }\n )\n\n const isLogin = useMemo(() => {\n return !!profile\n }, [profile?.activated])\n\n const inSufficientCredit = useMemo(() => {\n return (\n isLogin && profile?.activated && itemData.alpcData?.consumeCredits > Number(creditInfo?.available_credit || 0)\n )\n }, [isLogin, profile?.activated, itemData.alpcData?.consumeCredits, creditInfo?.available_credit])\n\n const isDisabled = useMemo(() => {\n // \u5151\u6362\u9650\u5236\n if (itemData.alpcData?.remainingInventory <= 0 && itemData.alpcData?.isLimited) {\n return true\n }\n\n // \u5546\u54C1\u5E93\u5B58\u9650\u5236\n if (!itemData.productVariant?.availableForSale) {\n return true\n }\n\n // \u79EF\u5206\u4E0D\u8DB3\n if (inSufficientCredit) {\n return true\n }\n return false\n }, [\n itemData.alpcData?.remainingInventory,\n itemData.alpcData?.isLimited,\n itemData.productVariant?.availableForSale,\n inSufficientCredit,\n ])\n\n const handleRedeem = () => {\n setError(null)\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.open()\n } else {\n trigger({\n productVariant: itemData?.productVariant,\n redeemId: itemData?.config?.redeemId,\n })\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: pageGroup,\n position: copy.title,\n button_name: redeemButtonText,\n info: itemData?.alpcData?.id?.toString(),\n },\n })\n }\n }\n\n const redeemButtonText = useMemo(() => {\n // \u7F3A\u8D27\u6587\u6848\n if (!itemData.productVariant?.availableForSale) {\n return copy?.soldOut || 'Sold Out'\n } else if (!isLogin) {\n return copy.unlockRewards\n } else {\n return copy.btnRedeem\n }\n }, [isLogin, itemData.productVariant?.availableForSale, copy.btnRedeem, copy.unlockRewards, copy?.soldOut])\n\n return (\n <div\n className={cn(\n 'relative flex flex-col items-center rounded-[16px] bg-[#EAEAEC] md:rounded-[12px] p-[24px] l:p-[8px] md-xl:p-[16px]',\n !rounded && 'rounded-none md:rounded-none',\n copy.badgeLabel && 'pt-[48px] l:pt-[44px]',\n className\n )}\n >\n {/* Redeem \u6807\u7B7E Badge */}\n {copy.badgeLabel && (\n <Badge\n className=\"absolute left-[24px] l:left-[16px] !bg-gradient-brand top-[16px] z-10\"\n size=\"lg\"\n variant=\"promotional\"\n promotionalType=\"regular-member\"\n >\n {copy.badgeLabel}\n </Badge>\n )}\n\n <a\n href={\n extractVariantId(itemData.productVariant?.id)\n ? `/products/${itemData.product.handle}?variant=${extractVariantId(itemData.productVariant?.id)}`\n : `/products/${itemData.product.handle}`\n }\n className={cn('relative mx-auto h-[224px] w-fit l:h-[120px] l-xxl:h-[138px]')}\n >\n <Picture\n className=\"mx-auto h-full w-auto\"\n imgClassName=\"h-full object-contain\"\n source={\n itemData?.config?.image?.url ||\n itemData?.productVariant?.metafields?.global?.transparentImg ||\n itemData?.productVariant?.image?.url\n }\n ></Picture>\n </a>\n <div className={cn('mt-[22px] w-full l:mt-[8px]')}>\n <Text\n html={itemData?.product?.title}\n title={itemData.config?.title || itemData.alpcData?.title || itemData.product?.title}\n size={2}\n className=\"line-clamp-2 h-[58px] text-[24px] l-xxl:text-[20px] l:text-[16px] leading-[1.2] l:h-[38px] l-xxl:h-[48px]\"\n />\n {itemData?.config?.rules?.split('<br>')?.length > 0 && (\n <button\n type=\"button\"\n onClick={() => {\n setRules(itemData?.config?.rules?.split('<br>'))\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: pageGroup,\n position: copy.title,\n button_name: pageCommon?.ruleLabel,\n info: itemData?.alpcData?.id?.toString(),\n },\n })\n }}\n className=\"mt-[8px] text-[16px] font-bold underline xxl:text-[14px]\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n {pageCommon?.ruleLabel}\n </button>\n )}\n\n <div className=\"flex flex-wrap items-center l:mt-[12px] laptop:text-[16px] lg-desktop:text-[18px]\">\n <Picture\n className=\"size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]\"\n source=\"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783\"\n />\n <Text\n html={`${numberFormat(itemData?.alpcData?.consumeCredits)} + ${formatPrice({\n amount: Number(itemData?.config?.price),\n currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',\n locale: locale,\n })}`}\n size={2}\n as=\"p\"\n className=\"ml-[4px] mt-[4px] font-bold leading-none text-[24px] l-xxl:text-[20px] l:text-[16px]\"\n />\n <Text\n html={formatPrice({\n amount: itemData?.productVariant?.price.amount,\n currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',\n locale: locale,\n })}\n className=\"l-xxl:text-[20px] mt-[4px] l:text-[16px] ml-[4px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through\"\n as=\"p\"\n />\n </div>\n\n <div className=\"group relative w-full mt-[8px]\">\n <Button\n disabled={isDisabled}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[8px] md:px-[10px] l:w-full\"\n loading={isMutating}\n onClick={() => {\n handleRedeem()\n }}\n title={inSufficientCredit ? pageCommon.insufficientCredits : redeemButtonText}\n >\n {redeemButtonText}\n </Button>\n <div\n className={cn(\n 'absolute -bottom-[20px] left-0 z-10 w-[300px] translate-y-full opacity-0 transition-opacity group-hover:opacity-100 md:-bottom-[14px] md:w-[160px]',\n inSufficientCredit ? 'block' : 'hidden'\n )}\n >\n <div\n className={cn(\n 'relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow md:px-[10px] md:py-[8px]',\n !rounded && 'rounded-none'\n )}\n >\n <Text as=\"p\" size=\"2\" html={pageCommon?.insufficientCredits} className=\"text-[14px]\" />\n <div className=\"absolute -top-[10px] left-[48px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]\" />\n </div>\n </div>\n </div>\n </div>\n {error && <div className=\"mt-[8px] text-[14px] text-[#FF0000]\">{error}</div>}\n </div>\n )\n}\n\nexport default RedeemableItem\n"],
5
+ "mappings": "AA2HQ,cAAAA,EAgEA,QAAAC,MAhEA,oBA3HR,OAAS,UAAAC,EAAQ,QAAAC,EAAM,WAAAC,EAAS,SAAAC,MAAa,wBAC7C,OAAS,WAAAC,EAAS,YAAAC,MAAgB,QAGlC,OAAS,qBAAAC,MAAyB,sBAClC,OAAS,mBAAAC,MAAuB,mCAChC,OAAS,eAAAC,EAAa,gBAAAC,EAAc,oBAAAC,MAAwB,mBAC5D,OAAS,WAAAC,EAAS,cAAcC,EAAI,sBAAAC,MAA0B,gBAC9D,OAAS,mBAAAC,MAAuB,mCAChC,OAAS,kBAAAC,MAAsB,qBAE/B,SAASC,EAAe,CACtB,KAAAC,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,CACF,EAMG,CACD,KAAM,CACJ,WAAAC,EACA,QAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,IAAK,CAAE,UAAAC,CAAU,CACnB,EAAInB,EAAkB,EAChB,CAAE,iBAAAoB,CAAiB,EAAIZ,EAAgB,EACvC,CAAE,MAAAa,EAAO,OAAAC,CAAO,EAAIf,EAAmB,EACvCgB,EAAUd,EAAe,SAASY,CAAK,EACvC,CAACG,EAAOC,CAAQ,EAAI1B,EAAwB,IAAI,EAChD,CAAE,QAAA2B,EAAS,WAAAC,CAAW,EAAI1B,EAC9B,CAAC,EACD,CACE,QAASuB,GAAS,CAChBC,EAASD,EAAM,OAAO,CACxB,CACF,CACF,EAEMI,EAAU9B,EAAQ,IACf,CAAC,CAACkB,EACR,CAACA,GAAS,SAAS,CAAC,EAEjBa,EAAqB/B,EAAQ,IAE/B8B,GAAWZ,GAAS,WAAaJ,EAAS,UAAU,eAAiB,OAAOG,GAAY,kBAAoB,CAAC,EAE9G,CAACa,EAASZ,GAAS,UAAWJ,EAAS,UAAU,eAAgBG,GAAY,gBAAgB,CAAC,EAE3Fe,EAAahC,EAAQ,IAErB,GAAAc,EAAS,UAAU,oBAAsB,GAAKA,EAAS,UAAU,WAKjE,CAACA,EAAS,gBAAgB,kBAK1BiB,GAIH,CACDjB,EAAS,UAAU,mBACnBA,EAAS,UAAU,UACnBA,EAAS,gBAAgB,iBACzBiB,CACF,CAAC,EAEKE,EAAe,IAAM,CACzBN,EAAS,IAAI,EACRG,EAEM,CAACZ,GAAS,WAAa,CAACI,EAAiB,kBAClDA,EAAiB,KAAK,GAEtBM,EAAQ,CACN,eAAgBd,GAAU,eAC1B,SAAUA,GAAU,QAAQ,QAC9B,CAAC,EACDP,EAAQ,CACN,MAAO,WACP,WAAY,YACZ,qBAAsBW,GAAS,UAAY,SAAW,aACtD,iBAAkB,CAChB,WAAYG,EACZ,SAAUR,EAAK,MACf,YAAaqB,EACb,KAAMpB,GAAU,UAAU,IAAI,SAAS,CACzC,CACF,CAAC,GAlBDK,EAAgB,CAoBpB,EAEMe,EAAmBlC,EAAQ,IAE1Bc,EAAS,gBAAgB,iBAElBgB,EAGHjB,EAAK,UAFLA,EAAK,cAFLA,GAAM,SAAW,WAMzB,CAACiB,EAAShB,EAAS,gBAAgB,iBAAkBD,EAAK,UAAWA,EAAK,cAAeA,GAAM,OAAO,CAAC,EAE1G,OACElB,EAAC,OACC,UAAWa,EACT,sHACA,CAACiB,GAAW,+BACZZ,EAAK,YAAc,wBACnBG,CACF,EAGC,UAAAH,EAAK,YACJnB,EAACK,EAAA,CACC,UAAU,wEACV,KAAK,KACL,QAAQ,cACR,gBAAgB,iBAEf,SAAAc,EAAK,WACR,EAGFnB,EAAC,KACC,KACEY,EAAiBQ,EAAS,gBAAgB,EAAE,EACxC,aAAaA,EAAS,QAAQ,MAAM,YAAYR,EAAiBQ,EAAS,gBAAgB,EAAE,CAAC,GAC7F,aAAaA,EAAS,QAAQ,MAAM,GAE1C,UAAWN,EAAG,8DAA8D,EAE5E,SAAAd,EAACI,EAAA,CACC,UAAU,wBACV,aAAa,wBACb,OACEgB,GAAU,QAAQ,OAAO,KACzBA,GAAU,gBAAgB,YAAY,QAAQ,gBAC9CA,GAAU,gBAAgB,OAAO,IAEpC,EACH,EACAnB,EAAC,OAAI,UAAWa,EAAG,6BAA6B,EAC9C,UAAAd,EAACG,EAAA,CACC,KAAMiB,GAAU,SAAS,MACzB,MAAOA,EAAS,QAAQ,OAASA,EAAS,UAAU,OAASA,EAAS,SAAS,MAC/E,KAAM,EACN,UAAU,4GACZ,EACCA,GAAU,QAAQ,OAAO,MAAM,MAAM,GAAG,OAAS,GAChDpB,EAAC,UACC,KAAK,SACL,QAAS,IAAM,CACbqB,EAASD,GAAU,QAAQ,OAAO,MAAM,MAAM,CAAC,EAC/CP,EAAQ,CACN,MAAO,WACP,WAAY,YACZ,qBAAsBW,GAAS,UAAY,SAAW,aACtD,iBAAkB,CAChB,WAAYG,EACZ,SAAUR,EAAK,MACf,YAAaO,GAAY,UACzB,KAAMN,GAAU,UAAU,IAAI,SAAS,CACzC,CACF,CAAC,CACH,EACA,UAAU,2DACV,SAAU,EACV,UAAWqB,GAAK,EACVA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MACjCA,EAAE,eAAe,CAErB,EAEC,SAAAf,GAAY,UACf,EAGFzB,EAAC,OAAI,UAAU,oFACb,UAAAD,EAACI,EAAA,CACC,UAAU,gEACV,OAAO,6FACT,EACAJ,EAACG,EAAA,CACC,KAAM,GAAGQ,EAAaS,GAAU,UAAU,cAAc,CAAC,MAAMV,EAAY,CACzE,OAAQ,OAAOU,GAAU,QAAQ,KAAK,EACtC,aAAcA,GAAU,gBAAgB,MAAM,cAAgB,MAC9D,OAAQU,CACV,CAAC,CAAC,GACF,KAAM,EACN,GAAG,IACH,UAAU,uFACZ,EACA9B,EAACG,EAAA,CACC,KAAMO,EAAY,CAChB,OAAQU,GAAU,gBAAgB,MAAM,OACxC,aAAcA,GAAU,gBAAgB,MAAM,cAAgB,MAC9D,OAAQU,CACV,CAAC,EACD,UAAU,0HACV,GAAG,IACL,GACF,EAEA7B,EAAC,OAAI,UAAU,iCACb,UAAAD,EAACE,EAAA,CACC,SAAUoC,EACV,QAAQ,UACR,KAAK,KACL,UAAU,iCACV,QAASH,EACT,QAAS,IAAM,CACbI,EAAa,CACf,EACA,MAAOF,EAAqBX,EAAW,oBAAsBc,EAE5D,SAAAA,EACH,EACAxC,EAAC,OACC,UAAWc,EACT,qJACAuB,EAAqB,QAAU,QACjC,EAEA,SAAApC,EAAC,OACC,UAAWa,EACT,mHACA,CAACiB,GAAW,cACd,EAEA,UAAA/B,EAACG,EAAA,CAAK,GAAG,IAAI,KAAK,IAAI,KAAMuB,GAAY,oBAAqB,UAAU,cAAc,EACrF1B,EAAC,OAAI,UAAU,mHAAmH,GACpI,EACF,GACF,GACF,EACCgC,GAAShC,EAAC,OAAI,UAAU,sCAAuC,SAAAgC,EAAM,GACxE,CAEJ,CAEA,IAAOU,EAAQxB",
6
+ "names": ["jsx", "jsxs", "Button", "Text", "Picture", "Badge", "useMemo", "useState", "useCreditsContext", "useRedeemAndBuy", "formatPrice", "numberFormat", "extractVariantId", "gaTrack", "cn", "useHeadlessContext", "useRegistration", "ROUNDED_BRANDS", "RedeemableItem", "copy", "itemData", "setRules", "className", "creditInfo", "profile", "openSignUpPopup", "pageCommon", "pageGroup", "authCodeActivate", "brand", "locale", "rounded", "error", "setError", "trigger", "isMutating", "isLogin", "inSufficientCredit", "isDisabled", "handleRedeem", "redeemButtonText", "e", "RedeemableItem_default"]
7
7
  }
@@ -26,6 +26,7 @@ export type CreditsCashCopy = {
26
26
  unlockRewards: string;
27
27
  btnRedeem: string;
28
28
  off: string;
29
+ badgeLabel?: string;
29
30
  };
30
31
  export type RedeemItem = {
31
32
  product: Product;
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as s}from"react/jsx-runtime";import{Heading as f,Text as l}from"@anker-in/headless-ui";import{ChevronDownIcon as b}from"@heroicons/react/24/outline";import{classNames as e}from"@anker-in/lib";import{motion as c}from"framer-motion";import{useEffect as u,useState as v}from"react";const k=({index:a,question:n,answer:o,showDots:x,itemRightIconRender:p,defaultExpended:m=!1})=>{const[r,d]=v(m);return u(()=>{a==0&&d(!0),n||d(!0)},[a,n]),s("div",{className:e("relative mx-0 border-b-[1px] border-[#e4e5e6] py-[24px] l:py-[16px]"),children:[s("div",{className:"relative flex items-center",onClick:()=>{d(!r)},role:"button",tabIndex:0,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&i.preventDefault()},children:[t(f,{html:n,as:"h3",className:e(x?'before:absolute before:left-[-15px] before:top-[8px] before:h-[6px] before:w-[6px] before:rounded-[50%] before:bg-[#000] before:content-[""]':"","relative block flex-1 cursor-pointer pr-[10px] text-[18px] font-bold text-[#1D1D1F] l:text-[16px]")}),p?p({expanded:r}):t(b,{className:e("size-[16px] shrink-0 cursor-pointer stroke-[2.5px] transition-all",r?"rotate-180":"")})]}),t(c.div,{initial:!1,animate:{height:r?"auto":0},className:"overflow-hidden [&_td]:border [&_td]:border-[#333] [&_td]:px-[8px] [&_td]:py-[4px]",children:o?.toString()?.includes("https://www.youtube.com")?t(l,{as:"div",className:e("mt-[8px]"),"data-ratio":"16:9","data-content":o,html:o?.toString()}):t(l,{as:"div",html:o?.toString(),className:e("mt-[8px] text-[16px] font-bold leading-[1.5] text-[#3D3D3F] l:text-[14px] [&_a]:text-brand [&_a]:underline")})})]},a)};export{k as FaqItem};
1
+ import{jsx as t,jsxs as l}from"react/jsx-runtime";import{Heading as f,Text as p}from"@anker-in/headless-ui";import{ChevronDownIcon as b}from"@heroicons/react/24/outline";import{classNames as e}from"@anker-in/lib";import{useEffect as c,useState as u}from"react";const y=({index:a,question:d,answer:o,showDots:x,itemRightIconRender:i,defaultExpended:m=!1})=>{const[r,n]=u(m);return c(()=>{a==0&&n(!0),d||n(!0)},[a,d]),l("div",{className:e("relative mx-0 border-b-[1px] border-[#e4e5e6] py-[24px] l:py-[16px]"),children:[l("div",{className:"relative flex items-center",onClick:()=>{n(!r)},role:"button",tabIndex:0,onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&s.preventDefault()},children:[t(f,{html:d,as:"h3",className:e(x?'before:absolute before:left-[-15px] before:top-[8px] before:h-[6px] before:w-[6px] before:rounded-[50%] before:bg-[#000] before:content-[""]':"","relative block flex-1 cursor-pointer pr-[10px] text-[18px] font-bold text-[#1D1D1F] l:text-[16px]")}),i?i({expanded:r}):t(b,{className:e("size-[16px] shrink-0 cursor-pointer stroke-[2.5px] transition-all",r?"rotate-180":"")})]}),t("div",{className:e("grid transition-all duration-300 ease-in-out [&_td]:border [&_td]:border-[#333] [&_td]:px-[8px] [&_td]:py-[4px]",r?"grid-rows-[1fr]":"grid-rows-[0fr]"),children:t("div",{className:"overflow-hidden",children:o?.toString()?.includes("https://www.youtube.com")?t(p,{as:"div",className:e("mt-[8px]"),"data-ratio":"16:9","data-content":o,html:o?.toString()}):t(p,{as:"div",html:o?.toString(),className:e("mt-[8px] text-[16px] font-bold leading-[1.5] text-[#3D3D3F] l:text-[14px] [&_a]:text-brand [&_a]:underline")})})})]},a)};export{y as FaqItem};
2
2
  //# sourceMappingURL=FaqItem.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/creditsFaq/faqItem/FaqItem.tsx"],
4
- "sourcesContent": ["import { Heading, Text } from '@anker-in/headless-ui'\nimport { ChevronDownIcon } from '@heroicons/react/24/outline'\nimport { classNames as cn } from '@anker-in/lib'\nimport { motion } from 'framer-motion'\nimport { type ReactNode, useEffect, useState } from 'react'\n\ntype FaqItemProps = {\n index: number\n question?: string\n answer?: string | number\n showDots: boolean\n itemRightIconRender?: ({ expanded }: { expanded: boolean }) => ReactNode\n defaultExpended?: boolean\n}\n\nexport const FaqItem = ({\n index,\n question,\n answer,\n showDots,\n itemRightIconRender,\n defaultExpended = false,\n}: FaqItemProps) => {\n const [expanded, setExpanded] = useState(defaultExpended)\n useEffect(() => {\n if (index == 0) {\n setExpanded(true)\n }\n if (!question) {\n setExpanded(true)\n }\n }, [index, question])\n\n return (\n <div key={index} className={cn('relative mx-0 border-b-[1px] border-[#e4e5e6] py-[24px] l:py-[16px]')}>\n <div\n className=\"relative flex items-center\"\n onClick={() => {\n setExpanded(!expanded)\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n <Heading\n html={question}\n as=\"h3\"\n className={cn(\n showDots\n ? 'before:absolute before:left-[-15px] before:top-[8px] before:h-[6px] before:w-[6px] before:rounded-[50%] before:bg-[#000] before:content-[\"\"]'\n : '',\n 'relative block flex-1 cursor-pointer pr-[10px] text-[18px] font-bold text-[#1D1D1F] l:text-[16px]'\n )}\n ></Heading>\n {itemRightIconRender ? (\n itemRightIconRender({ expanded })\n ) : (\n <ChevronDownIcon\n className={cn(\n 'size-[16px] shrink-0 cursor-pointer stroke-[2.5px] transition-all',\n expanded ? 'rotate-180' : ''\n )}\n />\n )}\n </div>\n <motion.div\n initial={false}\n animate={{ height: !expanded ? 0 : 'auto' }}\n className=\"overflow-hidden [&_td]:border [&_td]:border-[#333] [&_td]:px-[8px] [&_td]:py-[4px]\"\n >\n {answer?.toString()?.includes('https://www.youtube.com') ? (\n <Text\n as=\"div\"\n className={cn('mt-[8px]')}\n data-ratio=\"16:9\"\n data-content={answer}\n html={answer?.toString()}\n ></Text>\n ) : (\n <Text\n as=\"div\"\n html={answer?.toString()}\n className={cn(\n 'mt-[8px] text-[16px] font-bold leading-[1.5] text-[#3D3D3F] l:text-[14px] [&_a]:text-brand [&_a]:underline'\n )}\n ></Text>\n )}\n </motion.div>\n </div>\n )\n}\n"],
5
- "mappings": "AAmCM,OAaE,OAAAA,EAbF,QAAAC,MAAA,oBAnCN,OAAS,WAAAC,EAAS,QAAAC,MAAY,wBAC9B,OAAS,mBAAAC,MAAuB,8BAChC,OAAS,cAAcC,MAAU,gBACjC,OAAS,UAAAC,MAAc,gBACvB,OAAyB,aAAAC,EAAW,YAAAC,MAAgB,QAW7C,MAAMC,EAAU,CAAC,CACtB,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,SAAAC,EACA,oBAAAC,EACA,gBAAAC,EAAkB,EACpB,IAAoB,CAClB,KAAM,CAACC,EAAUC,CAAW,EAAIT,EAASO,CAAe,EACxD,OAAAR,EAAU,IAAM,CACVG,GAAS,GACXO,EAAY,EAAI,EAEbN,GACHM,EAAY,EAAI,CAEpB,EAAG,CAACP,EAAOC,CAAQ,CAAC,EAGlBV,EAAC,OAAgB,UAAWI,EAAG,sEAAsE,EACnG,UAAAJ,EAAC,OACC,UAAU,6BACV,QAAS,IAAM,CACbgB,EAAY,CAACD,CAAQ,CACvB,EACA,KAAK,SACL,SAAU,EACV,UAAWE,GAAK,EACVA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MACjCA,EAAE,eAAe,CAErB,EAEA,UAAAlB,EAACE,EAAA,CACC,KAAMS,EACN,GAAG,KACH,UAAWN,EACTQ,EACI,+IACA,GACJ,mGACF,EACD,EACAC,EACCA,EAAoB,CAAE,SAAAE,CAAS,CAAC,EAEhChB,EAACI,EAAA,CACC,UAAWC,EACT,oEACAW,EAAW,aAAe,EAC5B,EACF,GAEJ,EACAhB,EAACM,EAAO,IAAP,CACC,QAAS,GACT,QAAS,CAAE,OAASU,EAAe,OAAJ,CAAW,EAC1C,UAAU,qFAET,SAAAJ,GAAQ,SAAS,GAAG,SAAS,yBAAyB,EACrDZ,EAACG,EAAA,CACC,GAAG,MACH,UAAWE,EAAG,UAAU,EACxB,aAAW,OACX,eAAcO,EACd,KAAMA,GAAQ,SAAS,EACxB,EAEDZ,EAACG,EAAA,CACC,GAAG,MACH,KAAMS,GAAQ,SAAS,EACvB,UAAWP,EACT,4GACF,EACD,EAEL,IAzDQK,CA0DV,CAEJ",
6
- "names": ["jsx", "jsxs", "Heading", "Text", "ChevronDownIcon", "cn", "motion", "useEffect", "useState", "FaqItem", "index", "question", "answer", "showDots", "itemRightIconRender", "defaultExpended", "expanded", "setExpanded", "e"]
4
+ "sourcesContent": ["import { Heading, Text } from '@anker-in/headless-ui'\nimport { ChevronDownIcon } from '@heroicons/react/24/outline'\nimport { classNames as cn } from '@anker-in/lib'\nimport { type ReactNode, useEffect, useState } from 'react'\n\ntype FaqItemProps = {\n index: number\n question?: string\n answer?: string | number\n showDots: boolean\n itemRightIconRender?: ({ expanded }: { expanded: boolean }) => ReactNode\n defaultExpended?: boolean\n}\n\nexport const FaqItem = ({\n index,\n question,\n answer,\n showDots,\n itemRightIconRender,\n defaultExpended = false,\n}: FaqItemProps) => {\n const [expanded, setExpanded] = useState(defaultExpended)\n useEffect(() => {\n if (index == 0) {\n setExpanded(true)\n }\n if (!question) {\n setExpanded(true)\n }\n }, [index, question])\n\n return (\n <div key={index} className={cn('relative mx-0 border-b-[1px] border-[#e4e5e6] py-[24px] l:py-[16px]')}>\n <div\n className=\"relative flex items-center\"\n onClick={() => {\n setExpanded(!expanded)\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n <Heading\n html={question}\n as=\"h3\"\n className={cn(\n showDots\n ? 'before:absolute before:left-[-15px] before:top-[8px] before:h-[6px] before:w-[6px] before:rounded-[50%] before:bg-[#000] before:content-[\"\"]'\n : '',\n 'relative block flex-1 cursor-pointer pr-[10px] text-[18px] font-bold text-[#1D1D1F] l:text-[16px]'\n )}\n ></Heading>\n {itemRightIconRender ? (\n itemRightIconRender({ expanded })\n ) : (\n <ChevronDownIcon\n className={cn(\n 'size-[16px] shrink-0 cursor-pointer stroke-[2.5px] transition-all',\n expanded ? 'rotate-180' : ''\n )}\n />\n )}\n </div>\n <div\n className={cn(\n 'grid transition-all duration-300 ease-in-out [&_td]:border [&_td]:border-[#333] [&_td]:px-[8px] [&_td]:py-[4px]',\n expanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\n )}\n >\n <div className=\"overflow-hidden\">\n {answer?.toString()?.includes('https://www.youtube.com') ? (\n <Text\n as=\"div\"\n className={cn('mt-[8px]')}\n data-ratio=\"16:9\"\n data-content={answer}\n html={answer?.toString()}\n ></Text>\n ) : (\n <Text\n as=\"div\"\n html={answer?.toString()}\n className={cn(\n 'mt-[8px] text-[16px] font-bold leading-[1.5] text-[#3D3D3F] l:text-[14px] [&_a]:text-brand [&_a]:underline'\n )}\n ></Text>\n )}\n </div>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "AAkCM,OAaE,OAAAA,EAbF,QAAAC,MAAA,oBAlCN,OAAS,WAAAC,EAAS,QAAAC,MAAY,wBAC9B,OAAS,mBAAAC,MAAuB,8BAChC,OAAS,cAAcC,MAAU,gBACjC,OAAyB,aAAAC,EAAW,YAAAC,MAAgB,QAW7C,MAAMC,EAAU,CAAC,CACtB,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,SAAAC,EACA,oBAAAC,EACA,gBAAAC,EAAkB,EACpB,IAAoB,CAClB,KAAM,CAACC,EAAUC,CAAW,EAAIT,EAASO,CAAe,EACxD,OAAAR,EAAU,IAAM,CACVG,GAAS,GACXO,EAAY,EAAI,EAEbN,GACHM,EAAY,EAAI,CAEpB,EAAG,CAACP,EAAOC,CAAQ,CAAC,EAGlBT,EAAC,OAAgB,UAAWI,EAAG,sEAAsE,EACnG,UAAAJ,EAAC,OACC,UAAU,6BACV,QAAS,IAAM,CACbe,EAAY,CAACD,CAAQ,CACvB,EACA,KAAK,SACL,SAAU,EACV,UAAWE,GAAK,EACVA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MACjCA,EAAE,eAAe,CAErB,EAEA,UAAAjB,EAACE,EAAA,CACC,KAAMQ,EACN,GAAG,KACH,UAAWL,EACTO,EACI,+IACA,GACJ,mGACF,EACD,EACAC,EACCA,EAAoB,CAAE,SAAAE,CAAS,CAAC,EAEhCf,EAACI,EAAA,CACC,UAAWC,EACT,oEACAU,EAAW,aAAe,EAC5B,EACF,GAEJ,EACAf,EAAC,OACC,UAAWK,EACT,kHACAU,EAAW,kBAAoB,iBACjC,EAEA,SAAAf,EAAC,OAAI,UAAU,kBACZ,SAAAW,GAAQ,SAAS,GAAG,SAAS,yBAAyB,EACrDX,EAACG,EAAA,CACC,GAAG,MACH,UAAWE,EAAG,UAAU,EACxB,aAAW,OACX,eAAcM,EACd,KAAMA,GAAQ,SAAS,EACxB,EAEDX,EAACG,EAAA,CACC,GAAG,MACH,KAAMQ,GAAQ,SAAS,EACvB,UAAWN,EACT,4GACF,EACD,EAEL,EACF,IA5DQI,CA6DV,CAEJ",
6
+ "names": ["jsx", "jsxs", "Heading", "Text", "ChevronDownIcon", "cn", "useEffect", "useState", "FaqItem", "index", "question", "answer", "showDots", "itemRightIconRender", "defaultExpended", "expanded", "setExpanded", "e"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as k}from"react/jsx-runtime";import{Container as b,Heading as x,Tabs as p,TabsList as T,TabsTrigger as h,Text as q}from"@anker-in/headless-ui";import{classNames as v,useHeadlessContext as C,ROUNDED_BRANDS as N}from"@anker-in/lib";import{useMemo as o,useState as w}from"react";import{FaqItem as F}from"./faqItem/FaqItem";const _=({copy:a,id:m})=>{const{title:g,items:r,subTitle:l=""}=a||{},{brand:u}=C(),d=N.includes(u),s=o(()=>Array.from(new Set(r?.map?.(e=>e.category_name).filter(e=>!!e))),[r]),[i,f]=w(s[0]?.toString()||""),c=o(()=>r?s.length?r.filter(e=>e?.category_name===i):r:[],[r,s.length,i]);return k(b,{id:m,className:"bg-[#F5F5F7]",children:[g&&t(x,{as:"h2",size:"4",html:a?.title}),l&&t("div",{className:"mt-[8px] flex flex-row",children:t(q,{size:"4",as:"p",html:l,className:"flex-1"})}),t(p,{align:"left",shape:d?"rounded":"square",className:"mt-[24px]",value:i.toString(),onValueChange:e=>{f(e)},children:t(T,{children:s.map((e,n)=>t(h,{value:e?.toString()||"",children:e},n))})}),t("div",{className:v("mt-[24px] flex flex-col overflow-auto pt-0"),children:c?.map((e,n)=>t(F,{index:n,defaultExpended:r.length===1,question:e.question,answer:e.answer,showDots:!1},n))}),a.learnMore?.link&&a.learnMore?.label&&t("a",{href:a.learnMore?.link,target:"_blank",className:"mt-[24px] block w-full text-center text-[18px] font-bold text-brand hover:underline l:text-[16px]",children:a.learnMore?.label})]})};export{_ as CreditsFaq};
1
+ import{jsx as t,jsxs as k}from"react/jsx-runtime";import{Container as b,Heading as p,Tabs as x,TabsList as T,TabsTrigger as h,Text as q}from"@anker-in/headless-ui";import{classNames as v,useHeadlessContext as C}from"@anker-in/lib";import{useMemo as o,useState as N}from"react";import{FaqItem as w}from"./faqItem/FaqItem";import{ROUNDED_BRANDS as F}from"../../../constants";const D=({copy:a,id:m})=>{const{title:g,items:r,subTitle:l=""}=a||{},{brand:u}=C(),d=F.includes(u),s=o(()=>Array.from(new Set(r?.map?.(e=>e.category_name).filter(e=>!!e))),[r]),[i,f]=N(s[0]?.toString()||""),c=o(()=>r?s.length?r.filter(e=>e?.category_name===i):r:[],[r,s.length,i]);return k(b,{id:m,className:"bg-[#F5F5F7]",children:[g&&t(p,{as:"h2",size:"4",html:a?.title}),l&&t("div",{className:"mt-[8px] flex flex-row",children:t(q,{size:"4",as:"p",html:l,className:"flex-1"})}),t(x,{align:"left",shape:d?"rounded":"square",className:"mt-[24px]",value:i.toString(),onValueChange:e=>{f(e)},children:t(T,{children:s.map((e,n)=>t(h,{value:e?.toString()||"",children:e},n))})}),t("div",{className:v("mt-[24px] flex flex-col overflow-auto pt-0"),children:c?.map((e,n)=>t(w,{index:n,defaultExpended:r.length===1,question:e.question,answer:e.answer,showDots:!1},n))}),a.learnMore?.link&&a.learnMore?.label&&t("a",{href:a.learnMore?.link,target:"_blank",className:"mt-[24px] block w-full text-center text-[18px] font-bold text-brand hover:underline l:text-[16px]",children:a.learnMore?.label})]})};export{D as CreditsFaq};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsFaq/index.tsx"],
4
- "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'\nimport { useMemo, useState } from 'react'\n\nimport { FaqItem } from './faqItem/FaqItem'\n\nexport type CreditsFaqCopy = {\n title: string\n subTitle: string\n learnMore: {\n link: string\n label: string\n }\n items: {\n category_name: string\n question: string\n answer: string\n }[]\n}\nexport const CreditsFaq = ({ copy, id }: { copy: CreditsFaqCopy; id?: string }) => {\n const { title, items: faqList, subTitle = '' } = copy || {}\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const categoryList = useMemo(() => {\n return Array.from(new Set(faqList?.map?.(faq => faq.category_name).filter(item => !!item)))\n }, [faqList])\n const [activeTab, setActiveTab] = useState<string>(categoryList[0]?.toString() || '')\n\n const currentList = useMemo(() => {\n if (!faqList) return []\n if (categoryList.length) {\n return faqList.filter(item => item?.category_name === activeTab)\n }\n return faqList\n }, [faqList, categoryList.length, activeTab])\n\n return (\n <Container id={id} className=\"bg-[#F5F5F7]\">\n {title && <Heading as=\"h2\" size=\"4\" html={copy?.title} />}\n {subTitle && (\n <div className=\"mt-[8px] flex flex-row\">\n <Text size=\"4\" as=\"p\" html={subTitle} className=\"flex-1\" />\n </div>\n )}\n {/* faq-nav */}\n <Tabs\n align=\"left\"\n shape={rounded ? 'rounded' : 'square'}\n className=\"mt-[24px]\"\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(value)\n }}\n >\n <TabsList>\n {categoryList.map((item, index) => (\n <TabsTrigger key={index} value={item?.toString() || ''}>\n {item}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n <div className={cn('mt-[24px] flex flex-col overflow-auto pt-0')}>\n {currentList?.map((item, index) => {\n return (\n <FaqItem\n key={index}\n index={index}\n defaultExpended={faqList.length === 1}\n question={item.question}\n answer={item.answer}\n showDots={false}\n ></FaqItem>\n )\n })}\n </div>\n {copy.learnMore?.link && copy.learnMore?.label && (\n <a\n href={copy.learnMore?.link}\n target=\"_blank\"\n className=\"mt-[24px] block w-full text-center text-[18px] font-bold text-brand hover:underline l:text-[16px]\"\n >\n {copy.learnMore?.label}\n </a>\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "AAqCI,OACY,OAAAA,EADZ,QAAAC,MAAA,oBArCJ,OAAS,aAAAC,EAAW,WAAAC,EAAS,QAAAC,EAAM,YAAAC,EAAU,eAAAC,EAAa,QAAAC,MAAY,wBACtE,OAAS,cAAcC,EAAI,sBAAAC,EAAoB,kBAAAC,MAAsB,gBACrE,OAAS,WAAAC,EAAS,YAAAC,MAAgB,QAElC,OAAS,WAAAC,MAAe,oBAejB,MAAMC,EAAa,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAA6C,CACjF,KAAM,CAAE,MAAAC,EAAO,MAAOC,EAAS,SAAAC,EAAW,EAAG,EAAIJ,GAAQ,CAAC,EACpD,CAAE,MAAAK,CAAM,EAAIX,EAAmB,EAC/BY,EAAUX,EAAe,SAASU,CAAK,EACvCE,EAAeX,EAAQ,IACpB,MAAM,KAAK,IAAI,IAAIO,GAAS,MAAMK,GAAOA,EAAI,aAAa,EAAE,OAAOC,GAAQ,CAAC,CAACA,CAAI,CAAC,CAAC,EACzF,CAACN,CAAO,CAAC,EACN,CAACO,EAAWC,CAAY,EAAId,EAAiBU,EAAa,CAAC,GAAG,SAAS,GAAK,EAAE,EAE9EK,EAAchB,EAAQ,IACrBO,EACDI,EAAa,OACRJ,EAAQ,OAAOM,GAAQA,GAAM,gBAAkBC,CAAS,EAE1DP,EAJc,CAAC,EAKrB,CAACA,EAASI,EAAa,OAAQG,CAAS,CAAC,EAE5C,OACExB,EAACC,EAAA,CAAU,GAAIc,EAAI,UAAU,eAC1B,UAAAC,GAASjB,EAACG,EAAA,CAAQ,GAAG,KAAK,KAAK,IAAI,KAAMY,GAAM,MAAO,EACtDI,GACCnB,EAAC,OAAI,UAAU,yBACb,SAAAA,EAACO,EAAA,CAAK,KAAK,IAAI,GAAG,IAAI,KAAMY,EAAU,UAAU,SAAS,EAC3D,EAGFnB,EAACI,EAAA,CACC,MAAM,OACN,MAAOiB,EAAU,UAAY,SAC7B,UAAU,YACV,MAAOI,EAAU,SAAS,EAC1B,cAAeG,GAAS,CACtBF,EAAaE,CAAK,CACpB,EAEA,SAAA5B,EAACK,EAAA,CACE,SAAAiB,EAAa,IAAI,CAACE,EAAMK,IACvB7B,EAACM,EAAA,CAAwB,MAAOkB,GAAM,SAAS,GAAK,GACjD,SAAAA,GADeK,CAElB,CACD,EACH,EACF,EACA7B,EAAC,OAAI,UAAWQ,EAAG,4CAA4C,EAC5D,SAAAmB,GAAa,IAAI,CAACH,EAAMK,IAErB7B,EAACa,EAAA,CAEC,MAAOgB,EACP,gBAAiBX,EAAQ,SAAW,EACpC,SAAUM,EAAK,SACf,OAAQA,EAAK,OACb,SAAU,IALLK,CAMN,CAEJ,EACH,EACCd,EAAK,WAAW,MAAQA,EAAK,WAAW,OACvCf,EAAC,KACC,KAAMe,EAAK,WAAW,KACtB,OAAO,SACP,UAAU,oGAET,SAAAA,EAAK,WAAW,MACnB,GAEJ,CAEJ",
6
- "names": ["jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "Text", "cn", "useHeadlessContext", "ROUNDED_BRANDS", "useMemo", "useState", "FaqItem", "CreditsFaq", "copy", "id", "title", "faqList", "subTitle", "brand", "rounded", "categoryList", "faq", "item", "activeTab", "setActiveTab", "currentList", "value", "index"]
4
+ "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { useMemo, useState } from 'react'\n\nimport { FaqItem } from './faqItem/FaqItem'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport type CreditsFaqCopy = {\n title: string\n subTitle: string\n learnMore: {\n link: string\n label: string\n }\n items: {\n category_name: string\n question: string\n answer: string\n }[]\n}\nexport const CreditsFaq = ({ copy, id }: { copy: CreditsFaqCopy; id?: string }) => {\n const { title, items: faqList, subTitle = '' } = copy || {}\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const categoryList = useMemo(() => {\n return Array.from(new Set(faqList?.map?.(faq => faq.category_name).filter(item => !!item)))\n }, [faqList])\n const [activeTab, setActiveTab] = useState<string>(categoryList[0]?.toString() || '')\n\n const currentList = useMemo(() => {\n if (!faqList) return []\n if (categoryList.length) {\n return faqList.filter(item => item?.category_name === activeTab)\n }\n return faqList\n }, [faqList, categoryList.length, activeTab])\n\n return (\n <Container id={id} className=\"bg-[#F5F5F7]\">\n {title && <Heading as=\"h2\" size=\"4\" html={copy?.title} />}\n {subTitle && (\n <div className=\"mt-[8px] flex flex-row\">\n <Text size=\"4\" as=\"p\" html={subTitle} className=\"flex-1\" />\n </div>\n )}\n {/* faq-nav */}\n <Tabs\n align=\"left\"\n shape={rounded ? 'rounded' : 'square'}\n className=\"mt-[24px]\"\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(value)\n }}\n >\n <TabsList>\n {categoryList.map((item, index) => (\n <TabsTrigger key={index} value={item?.toString() || ''}>\n {item}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n <div className={cn('mt-[24px] flex flex-col overflow-auto pt-0')}>\n {currentList?.map((item, index) => {\n return (\n <FaqItem\n key={index}\n index={index}\n defaultExpended={faqList.length === 1}\n question={item.question}\n answer={item.answer}\n showDots={false}\n ></FaqItem>\n )\n })}\n </div>\n {copy.learnMore?.link && copy.learnMore?.label && (\n <a\n href={copy.learnMore?.link}\n target=\"_blank\"\n className=\"mt-[24px] block w-full text-center text-[18px] font-bold text-brand hover:underline l:text-[16px]\"\n >\n {copy.learnMore?.label}\n </a>\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "AAsCI,OACY,OAAAA,EADZ,QAAAC,MAAA,oBAtCJ,OAAS,aAAAC,EAAW,WAAAC,EAAS,QAAAC,EAAM,YAAAC,EAAU,eAAAC,EAAa,QAAAC,MAAY,wBACtE,OAAS,cAAcC,EAAI,sBAAAC,MAA0B,gBACrD,OAAS,WAAAC,EAAS,YAAAC,MAAgB,QAElC,OAAS,WAAAC,MAAe,oBACxB,OAAS,kBAAAC,MAAsB,qBAexB,MAAMC,EAAa,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAA6C,CACjF,KAAM,CAAE,MAAAC,EAAO,MAAOC,EAAS,SAAAC,EAAW,EAAG,EAAIJ,GAAQ,CAAC,EACpD,CAAE,MAAAK,CAAM,EAAIX,EAAmB,EAC/BY,EAAUR,EAAe,SAASO,CAAK,EACvCE,EAAeZ,EAAQ,IACpB,MAAM,KAAK,IAAI,IAAIQ,GAAS,MAAMK,GAAOA,EAAI,aAAa,EAAE,OAAOC,GAAQ,CAAC,CAACA,CAAI,CAAC,CAAC,EACzF,CAACN,CAAO,CAAC,EACN,CAACO,EAAWC,CAAY,EAAIf,EAAiBW,EAAa,CAAC,GAAG,SAAS,GAAK,EAAE,EAE9EK,EAAcjB,EAAQ,IACrBQ,EACDI,EAAa,OACRJ,EAAQ,OAAOM,GAAQA,GAAM,gBAAkBC,CAAS,EAE1DP,EAJc,CAAC,EAKrB,CAACA,EAASI,EAAa,OAAQG,CAAS,CAAC,EAE5C,OACExB,EAACC,EAAA,CAAU,GAAIc,EAAI,UAAU,eAC1B,UAAAC,GAASjB,EAACG,EAAA,CAAQ,GAAG,KAAK,KAAK,IAAI,KAAMY,GAAM,MAAO,EACtDI,GACCnB,EAAC,OAAI,UAAU,yBACb,SAAAA,EAACO,EAAA,CAAK,KAAK,IAAI,GAAG,IAAI,KAAMY,EAAU,UAAU,SAAS,EAC3D,EAGFnB,EAACI,EAAA,CACC,MAAM,OACN,MAAOiB,EAAU,UAAY,SAC7B,UAAU,YACV,MAAOI,EAAU,SAAS,EAC1B,cAAeG,GAAS,CACtBF,EAAaE,CAAK,CACpB,EAEA,SAAA5B,EAACK,EAAA,CACE,SAAAiB,EAAa,IAAI,CAACE,EAAMK,IACvB7B,EAACM,EAAA,CAAwB,MAAOkB,GAAM,SAAS,GAAK,GACjD,SAAAA,GADeK,CAElB,CACD,EACH,EACF,EACA7B,EAAC,OAAI,UAAWQ,EAAG,4CAA4C,EAC5D,SAAAmB,GAAa,IAAI,CAACH,EAAMK,IAErB7B,EAACY,EAAA,CAEC,MAAOiB,EACP,gBAAiBX,EAAQ,SAAW,EACpC,SAAUM,EAAK,SACf,OAAQA,EAAK,OACb,SAAU,IALLK,CAMN,CAEJ,EACH,EACCd,EAAK,WAAW,MAAQA,EAAK,WAAW,OACvCf,EAAC,KACC,KAAMe,EAAK,WAAW,KACtB,OAAO,SACP,UAAU,oGAET,SAAAA,EAAK,WAAW,MACnB,GAEJ,CAEJ",
6
+ "names": ["jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "Text", "cn", "useHeadlessContext", "useMemo", "useState", "FaqItem", "ROUNDED_BRANDS", "CreditsFaq", "copy", "id", "title", "faqList", "subTitle", "brand", "rounded", "categoryList", "faq", "item", "activeTab", "setActiveTab", "currentList", "value", "index"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Button as w,Container as y,Text as x}from"@anker-in/headless-ui";import{useCallback as k,useState as p}from"react";import{useCreditsContext as h}from"../context/provider";import{numberFormat as v}from"../context/utils";import M from"../modal/activitiesModal";import D from"../modal/MyRewardsModal";import{gaNormalClick as z,classNames as t,useHeadlessContext as B,ROUNDED_BRANDS as S}from"@anker-in/lib";function L({copy:l,id:b}){const[u,m]=p(!1),[g,c]=p(!1),[d,o]=p(!1),{creditInfo:n,pageCommon:s}=h(),{brand:N}=B(),r=S.includes(N),C=k(a=>{if(z({position:"info_card",label:a.text}),a.type)switch(a.type){case"activities":m(!0);break;case"rewards":c(!0);break}},[]);return i(y,{asChild:!0,id:b,className:"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]",children:[i("div",{className:t("mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]","l:flex-col l:items-start","min-l:px-[48px]","min-xl:px-[100px]",!r&&"rounded-none"),style:{background:"linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)",backdropFilter:"blur(8px)"},children:[i("div",{className:t("grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center"),children:[i("div",{className:"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]",children:[e("div",{className:t("mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]"),children:l.balanceLabel}),i("div",{className:"flex items-baseline",children:[e("div",{className:t("mr-[8px] text-[36px] font-extrabold","min-md:text-[44px]","min-xl:text-[56px]"),children:n?v(n.available_credit):0}),e("div",{className:"text-[16px]",children:s?.pointUnit})]})]}),i("div",{className:"w-fit md:flex-1",children:[i("div",{className:t("mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]"),children:[e(x,{className:"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]",html:l.comingSoonLabel}),l.comingSoonTips&&i("div",{className:"group relative ml-[4px] flex cursor-pointer items-start",children:[e(x,{as:"div",html:s?.infoIcon,className:"size-[18px] cursor-pointer [&_svg]:size-full",onClick:()=>{d?o(!1):(o(!0),setTimeout(()=>{o(!1)},5e3))}}),e("div",{className:t("absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]",d?"block":"hidden"),children:i("div",{className:t("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow",!r&&"rounded-none"),children:[e(x,{size:"2",html:l.comingSoonTips,className:"desktop:text-[18px]"}),e("div",{className:t("absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]",!r&&"rounded-none")})]})})]})]}),i("div",{className:"flex items-baseline ",children:[e("div",{className:t("mr-[8px] text-[36px] font-extrabold","min-l:text-[44px]","min-xl:text-[56px]"),children:n?v(n.pending_credit):0}),e("div",{className:"text-[16px]",children:s?.pointUnit})]})]})]}),e("div",{className:t("grid w-fit md:w-full l:mt-[32px] l:gap-[12px] min-l:gap-[16px] min-l:pl-[48px] md-l:grid-cols-2"),children:l.buttons?.map((a,f)=>e(w,{variant:f===0?"secondary":"primary",size:"lg",className:"min-w-[156px] laptop:min-w-[189px]",onClick:()=>{C(a)},children:a.text},f))}),s?.activitiesModal&&e(M,{isOpen:u,data:s?.activitiesModal,onClose:()=>{m(!1)}}),s?.rewardsModal&&e(D,{isOpen:g,data:s?.rewardsModal,onClose:()=>{c(!1)}})]}),d&&e("div",{role:"button",tabIndex:0,className:"fixed inset-0 z-10",onClick:()=>o(!1),onKeyDown:a=>a.key==="Escape"&&o(!1)})]})}export{L as CreditsInfoCard};
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Button as w,Container as y,Text as x}from"@anker-in/headless-ui";import{useCallback as k,useState as m}from"react";import{useCreditsContext as h}from"../context/provider";import{numberFormat as v}from"../context/utils";import M from"../modal/activitiesModal";import D from"../modal/MyRewardsModal";import{gaNormalClick as z,classNames as t,useHeadlessContext as B}from"@anker-in/lib";import{ROUNDED_BRANDS as S}from"../../../constants";function U({copy:o,id:b}){const[u,p]=m(!1),[g,c]=m(!1),[d,l]=m(!1),{creditInfo:n,pageCommon:s}=h(),{brand:N}=B(),r=S.includes(N),C=k(a=>{if(z({position:"info_card",label:a.text}),a.type)switch(a.type){case"activities":p(!0);break;case"rewards":c(!0);break}},[]);return i(y,{asChild:!0,id:b,className:"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]",children:[i("div",{className:t("mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]","l:flex-col l:items-start","min-l:px-[48px]","min-xl:px-[100px]",!r&&"rounded-none"),style:{background:"linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)",backdropFilter:"blur(8px)"},children:[i("div",{className:t("grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center"),children:[i("div",{className:"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]",children:[e("div",{className:t("mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]"),children:o.balanceLabel}),i("div",{className:"flex items-baseline",children:[e("div",{className:t("mr-[8px] text-[36px] font-extrabold text-brand-color-1","min-md:text-[44px]","min-xl:text-[56px]"),children:n?v(n.available_credit):0}),e("div",{className:"text-[16px]",children:s?.pointUnit})]})]}),i("div",{className:"w-fit md:flex-1",children:[i("div",{className:t("mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]"),children:[e(x,{className:"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]",html:o.comingSoonLabel}),o.comingSoonTips&&i("div",{className:"group relative ml-[4px] flex cursor-pointer items-start",children:[e(x,{as:"div",html:s?.infoIcon,className:"size-[18px] cursor-pointer [&_svg]:size-full",onClick:()=>{d?l(!1):(l(!0),setTimeout(()=>{l(!1)},5e3))}}),e("div",{className:t("absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]",d?"block":"hidden"),children:i("div",{className:t("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow",!r&&"rounded-none"),children:[e(x,{size:"2",html:o.comingSoonTips,className:"desktop:text-[18px]"}),e("div",{className:t("absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]",!r&&"rounded-none")})]})})]})]}),i("div",{className:"flex items-baseline ",children:[e("div",{className:t("mr-[8px] text-[36px] font-extrabold","min-l:text-[44px]","min-xl:text-[56px]"),children:n?v(n.pending_credit):0}),e("div",{className:"text-[16px]",children:s?.pointUnit})]})]})]}),e("div",{className:t("grid w-fit md:w-full l:mt-[32px] l:gap-[12px] min-l:gap-[16px] min-l:pl-[48px] md-l:grid-cols-2"),children:o.buttons?.map((a,f)=>e(w,{variant:f===0?"secondary":"primary",size:"lg",className:"min-w-[156px] laptop:min-w-[189px]",onClick:()=>{C(a)},children:a.text},f))}),s?.activitiesModal&&e(M,{isOpen:u,data:s?.activitiesModal,onClose:()=>{p(!1)}}),s?.rewardsModal&&e(D,{isOpen:g,data:s?.rewardsModal,onClose:()=>{c(!1)}})]}),d&&e("div",{role:"button",tabIndex:0,className:"fixed inset-0 z-10",onClick:()=>l(!1),onKeyDown:a=>a.key==="Escape"&&l(!1)})]})}export{U as CreditsInfoCard};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsInfoCard/index.tsx"],
4
- "sourcesContent": ["import { Button, Container, Text } from '@anker-in/headless-ui'\n\nimport { useCallback, useState } from 'react'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\nimport ActivitiesModal from '../modal/activitiesModal'\nimport MyRewardsModal from '../modal/MyRewardsModal'\nimport { gaNormalClick, classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'\n\ntype ButtonConfig = {\n text: string\n type: 'activities' | 'rewards'\n}\nexport type CreditsInfoCardCopy = {\n balanceLabel: string\n comingSoonLabel: string\n comingSoonTips: string\n buttons: ButtonConfig[]\n}\n\nexport function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?: string }) {\n const [openActivities, setOpenActivities] = useState(false)\n const [openRewards, setOpenRewards] = useState(false)\n const [hover, setHover] = useState<boolean>(false)\n const { creditInfo, pageCommon } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const handleButtonClick = useCallback((buttonConfig: ButtonConfig) => {\n gaNormalClick({ position: 'info_card', label: buttonConfig.text })\n\n if (buttonConfig.type) {\n switch (buttonConfig.type) {\n case 'activities':\n setOpenActivities(true)\n break\n case 'rewards':\n setOpenRewards(true)\n break\n }\n }\n }, [])\n\n return (\n <Container asChild id={id} className=\"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]\">\n <div\n className={cn(\n 'mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]',\n 'l:flex-col l:items-start',\n 'min-l:px-[48px]',\n 'min-xl:px-[100px]',\n !rounded && 'rounded-none'\n )}\n style={{\n background:\n 'linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)',\n backdropFilter: 'blur(8px)',\n }}\n >\n <div\n className={cn(\n 'grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center'\n )}\n >\n <div className=\"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]\">\n <div\n className={cn(\n 'mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]'\n )}\n >\n {copy.balanceLabel}\n </div>\n <div className=\"flex items-baseline\">\n <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-md:text-[44px]', 'min-xl:text-[56px]')}>\n {creditInfo ? numberFormat(creditInfo.available_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n <div className=\"w-fit md:flex-1\">\n <div className={cn('mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]')}>\n <Text className=\"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]\" html={copy.comingSoonLabel} />\n {copy.comingSoonTips && (\n <div className=\"group relative ml-[4px] flex cursor-pointer items-start\">\n <Text\n as=\"div\"\n html={pageCommon?.infoIcon}\n className=\"size-[18px] cursor-pointer [&_svg]:size-full\"\n onClick={() => {\n if (hover) {\n setHover(false)\n } else {\n setHover(true)\n setTimeout(() => {\n setHover(false)\n }, 5000)\n }\n }}\n />\n <div\n className={cn(\n 'absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]',\n hover ? 'block' : 'hidden'\n )}\n >\n <div\n className={cn(\n 'relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow',\n !rounded && 'rounded-none'\n )}\n >\n <Text size=\"2\" html={copy.comingSoonTips} className=\"desktop:text-[18px]\" />\n <div\n className={cn(\n 'absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]',\n !rounded && 'rounded-none'\n )}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n <div className=\"flex items-baseline \">\n <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-l:text-[44px]', 'min-xl:text-[56px]')}>\n {creditInfo ? numberFormat(creditInfo.pending_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n </div>\n <div\n className={cn(\n 'grid w-fit md:w-full l:mt-[32px] l:gap-[12px] min-l:gap-[16px] min-l:pl-[48px] md-l:grid-cols-2'\n )}\n >\n {copy.buttons?.map((item, index) => (\n <Button\n key={index}\n variant={index === 0 ? 'secondary' : 'primary'}\n size=\"lg\"\n className=\"min-w-[156px] laptop:min-w-[189px]\"\n onClick={() => {\n handleButtonClick(item)\n }}\n >\n {item.text}\n </Button>\n ))}\n </div>\n\n {pageCommon?.activitiesModal && (\n <ActivitiesModal\n isOpen={openActivities}\n data={pageCommon?.activitiesModal}\n onClose={() => {\n setOpenActivities(false)\n }}\n />\n )}\n {pageCommon?.rewardsModal && (\n <MyRewardsModal\n isOpen={openRewards}\n data={pageCommon?.rewardsModal}\n onClose={() => {\n setOpenRewards(false)\n }}\n ></MyRewardsModal>\n )}\n </div>\n {hover && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"fixed inset-0 z-10\"\n onClick={() => setHover(false)}\n onKeyDown={e => e.key === 'Escape' && setHover(false)}\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Button, Container, Text } from '@anker-in/headless-ui'\n\nimport { useCallback, useState } from 'react'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\nimport ActivitiesModal from '../modal/activitiesModal'\nimport MyRewardsModal from '../modal/MyRewardsModal'\nimport { gaNormalClick, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\ntype ButtonConfig = {\n text: string\n type: 'activities' | 'rewards'\n}\nexport type CreditsInfoCardCopy = {\n balanceLabel: string\n comingSoonLabel: string\n comingSoonTips: string\n buttons: ButtonConfig[]\n}\n\nexport function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?: string }) {\n const [openActivities, setOpenActivities] = useState(false)\n const [openRewards, setOpenRewards] = useState(false)\n const [hover, setHover] = useState<boolean>(false)\n const { creditInfo, pageCommon } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const handleButtonClick = useCallback((buttonConfig: ButtonConfig) => {\n gaNormalClick({ position: 'info_card', label: buttonConfig.text })\n\n if (buttonConfig.type) {\n switch (buttonConfig.type) {\n case 'activities':\n setOpenActivities(true)\n break\n case 'rewards':\n setOpenRewards(true)\n break\n }\n }\n }, [])\n\n return (\n <Container asChild id={id} className=\"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]\">\n <div\n className={cn(\n 'mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]',\n 'l:flex-col l:items-start',\n 'min-l:px-[48px]',\n 'min-xl:px-[100px]',\n !rounded && 'rounded-none'\n )}\n style={{\n background:\n 'linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)',\n backdropFilter: 'blur(8px)',\n }}\n >\n <div\n className={cn(\n 'grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center'\n )}\n >\n <div className=\"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]\">\n <div\n className={cn(\n 'mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]'\n )}\n >\n {copy.balanceLabel}\n </div>\n <div className=\"flex items-baseline\">\n <div className={cn('mr-[8px] text-[36px] font-extrabold text-brand-color-1', 'min-md:text-[44px]', 'min-xl:text-[56px]')}>\n {creditInfo ? numberFormat(creditInfo.available_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n <div className=\"w-fit md:flex-1\">\n <div className={cn('mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]')}>\n <Text className=\"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]\" html={copy.comingSoonLabel} />\n {copy.comingSoonTips && (\n <div className=\"group relative ml-[4px] flex cursor-pointer items-start\">\n <Text\n as=\"div\"\n html={pageCommon?.infoIcon}\n className=\"size-[18px] cursor-pointer [&_svg]:size-full\"\n onClick={() => {\n if (hover) {\n setHover(false)\n } else {\n setHover(true)\n setTimeout(() => {\n setHover(false)\n }, 5000)\n }\n }}\n />\n <div\n className={cn(\n 'absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]',\n hover ? 'block' : 'hidden'\n )}\n >\n <div\n className={cn(\n 'relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow',\n !rounded && 'rounded-none'\n )}\n >\n <Text size=\"2\" html={copy.comingSoonTips} className=\"desktop:text-[18px]\" />\n <div\n className={cn(\n 'absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]',\n !rounded && 'rounded-none'\n )}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n <div className=\"flex items-baseline \">\n <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-l:text-[44px]', 'min-xl:text-[56px]')}>\n {creditInfo ? numberFormat(creditInfo.pending_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n </div>\n <div\n className={cn(\n 'grid w-fit md:w-full l:mt-[32px] l:gap-[12px] min-l:gap-[16px] min-l:pl-[48px] md-l:grid-cols-2'\n )}\n >\n {copy.buttons?.map((item, index) => (\n <Button\n key={index}\n variant={index === 0 ? 'secondary' : 'primary'}\n size=\"lg\"\n className=\"min-w-[156px] laptop:min-w-[189px]\"\n onClick={() => {\n handleButtonClick(item)\n }}\n >\n {item.text}\n </Button>\n ))}\n </div>\n\n {pageCommon?.activitiesModal && (\n <ActivitiesModal\n isOpen={openActivities}\n data={pageCommon?.activitiesModal}\n onClose={() => {\n setOpenActivities(false)\n }}\n />\n )}\n {pageCommon?.rewardsModal && (\n <MyRewardsModal\n isOpen={openRewards}\n data={pageCommon?.rewardsModal}\n onClose={() => {\n setOpenRewards(false)\n }}\n ></MyRewardsModal>\n )}\n </div>\n {hover && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"fixed inset-0 z-10\"\n onClick={() => setHover(false)}\n onKeyDown={e => e.key === 'Escape' && setHover(false)}\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "AAkEY,cAAAA,EAOA,QAAAC,MAPA,oBAlEZ,OAAS,UAAAC,EAAQ,aAAAC,EAAW,QAAAC,MAAY,wBAExC,OAAS,eAAAC,EAAa,YAAAC,MAAgB,QACtC,OAAS,qBAAAC,MAAyB,sBAClC,OAAS,gBAAAC,MAAoB,mBAC7B,OAAOC,MAAqB,2BAC5B,OAAOC,MAAoB,0BAC3B,OAAS,iBAAAC,EAAe,cAAcC,EAAI,sBAAAC,MAA0B,gBACpE,OAAS,kBAAAC,MAAsB,qBAaxB,SAASC,EAAgB,CAAE,KAAAC,EAAM,GAAAC,CAAG,EAA+C,CACxF,KAAM,CAACC,EAAgBC,CAAiB,EAAIb,EAAS,EAAK,EACpD,CAACc,EAAaC,CAAc,EAAIf,EAAS,EAAK,EAC9C,CAACgB,EAAOC,CAAQ,EAAIjB,EAAkB,EAAK,EAC3C,CAAE,WAAAkB,EAAY,WAAAC,CAAW,EAAIlB,EAAkB,EAC/C,CAAE,MAAAmB,CAAM,EAAIb,EAAmB,EAC/Bc,EAAUb,EAAe,SAASY,CAAK,EAEvCE,EAAoBvB,EAAawB,GAA+B,CAGpE,GAFAlB,EAAc,CAAE,SAAU,YAAa,MAAOkB,EAAa,IAAK,CAAC,EAE7DA,EAAa,KACf,OAAQA,EAAa,KAAM,CACzB,IAAK,aACHV,EAAkB,EAAI,EACtB,MACF,IAAK,UACHE,EAAe,EAAI,EACnB,KACJ,CAEJ,EAAG,CAAC,CAAC,EAEL,OACEpB,EAACE,EAAA,CAAU,QAAO,GAAC,GAAIc,EAAI,UAAU,oEACnC,UAAAhB,EAAC,OACC,UAAWW,EACT,mGACA,2BACA,kBACA,oBACA,CAACe,GAAW,cACd,EACA,MAAO,CACL,WACE,gIACF,eAAgB,WAClB,EAEA,UAAA1B,EAAC,OACC,UAAWW,EACT,6GACF,EAEA,UAAAX,EAAC,OAAI,UAAU,gDACb,UAAAD,EAAC,OACC,UAAWY,EACT,6FACF,EAEC,SAAAI,EAAK,aACR,EACAf,EAAC,OAAI,UAAU,sBACb,UAAAD,EAAC,OAAI,UAAWY,EAAG,yDAA0D,qBAAsB,oBAAoB,EACpH,SAAAY,EAAahB,EAAagB,EAAW,gBAAgB,EAAI,EAC5D,EACAxB,EAAC,OAAI,UAAU,cAAe,SAAAyB,GAAY,UAAU,GACtD,GACF,EACAxB,EAAC,OAAI,UAAU,kBACb,UAAAA,EAAC,OAAI,UAAWW,EAAG,oEAAoE,EACrF,UAAAZ,EAACI,EAAA,CAAK,UAAU,0DAA0D,KAAMY,EAAK,gBAAiB,EACrGA,EAAK,gBACJf,EAAC,OAAI,UAAU,0DACb,UAAAD,EAACI,EAAA,CACC,GAAG,MACH,KAAMqB,GAAY,SAClB,UAAU,+CACV,QAAS,IAAM,CACTH,EACFC,EAAS,EAAK,GAEdA,EAAS,EAAI,EACb,WAAW,IAAM,CACfA,EAAS,EAAK,CAChB,EAAG,GAAI,EAEX,EACF,EACAvB,EAAC,OACC,UAAWY,EACT,oFACAU,EAAQ,QAAU,QACpB,EAEA,SAAArB,EAAC,OACC,UAAWW,EACT,0FACA,CAACe,GAAW,cACd,EAEA,UAAA3B,EAACI,EAAA,CAAK,KAAK,IAAI,KAAMY,EAAK,eAAgB,UAAU,sBAAsB,EAC1EhB,EAAC,OACC,UAAWY,EACT,mHACA,CAACe,GAAW,cACd,EACF,GACF,EACF,GACF,GAEJ,EACA1B,EAAC,OAAI,UAAU,uBACb,UAAAD,EAAC,OAAI,UAAWY,EAAG,sCAAuC,oBAAqB,oBAAoB,EAChG,SAAAY,EAAahB,EAAagB,EAAW,cAAc,EAAI,EAC1D,EACAxB,EAAC,OAAI,UAAU,cAAe,SAAAyB,GAAY,UAAU,GACtD,GACF,GACF,EACAzB,EAAC,OACC,UAAWY,EACT,iGACF,EAEC,SAAAI,EAAK,SAAS,IAAI,CAACc,EAAMC,IACxB/B,EAACE,EAAA,CAEC,QAAS6B,IAAU,EAAI,YAAc,UACrC,KAAK,KACL,UAAU,qCACV,QAAS,IAAM,CACbH,EAAkBE,CAAI,CACxB,EAEC,SAAAA,EAAK,MARDC,CASP,CACD,EACH,EAECN,GAAY,iBACXzB,EAACS,EAAA,CACC,OAAQS,EACR,KAAMO,GAAY,gBAClB,QAAS,IAAM,CACbN,EAAkB,EAAK,CACzB,EACF,EAEDM,GAAY,cACXzB,EAACU,EAAA,CACC,OAAQU,EACR,KAAMK,GAAY,aAClB,QAAS,IAAM,CACbJ,EAAe,EAAK,CACtB,EACD,GAEL,EACCC,GACCtB,EAAC,OACC,KAAK,SACL,SAAU,EACV,UAAU,qBACV,QAAS,IAAMuB,EAAS,EAAK,EAC7B,UAAWS,GAAKA,EAAE,MAAQ,UAAYT,EAAS,EAAK,EACtD,GAEJ,CAEJ",
6
6
  "names": ["jsx", "jsxs", "Button", "Container", "Text", "useCallback", "useState", "useCreditsContext", "numberFormat", "ActivitiesModal", "MyRewardsModal", "gaNormalClick", "cn", "useHeadlessContext", "ROUNDED_BRANDS", "CreditsInfoCard", "copy", "id", "openActivities", "setOpenActivities", "openRewards", "setOpenRewards", "hover", "setHover", "creditInfo", "pageCommon", "brand", "rounded", "handleButtonClick", "buttonConfig", "item", "index", "e"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as j,jsx as n,jsxs as u}from"react/jsx-runtime";import{Container as V,Heading as O,Tabs as U,TabsList as $,TabsTrigger as q}from"@anker-in/headless-ui";import{useMemo as d,useState as g,useEffect as A,useCallback as G}from"react";import D from"decimal.js";import J from"./MemberPriceItem";import K from"../creditsCash/RedeemableItem";import Q from"../context/hooks/useRedeemableList";import X from"../modal/rulesModal";import{useProductsByHandles as S}from"@anker-in/lib";import{classNames as x}from"@anker-in/lib";import{useCreditsContext as Y}from"../context/provider";import{FunctionDiscountType as I}from"../context/memberPriceConst";const ge=({copy:a,id:B})=>{const[b,W]=g(a.tabs[0]?.type||"memberPrice"),[P,N]=g(),[o,p]=g(1),[c,T]=g(9),{redeemableList:L}=Q(),{pageCommon:E,memberPriceDiscount:v}=Y();console.log("copy in CreditsMemberPrice",a);const M=[{namespace:"global",key:"transparentImg"}];A(()=>{const e=()=>{window.innerWidth>=1024?T(9):T(8)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),A(()=>{p(1)},[b,c]);const m=d(()=>!v||!a.memberPriceTab.memberPriceRuleId?null:v.find(e=>String(e.rule_id)===String(a.memberPriceTab.memberPriceRuleId))?.result_detail?.member_discounts?.find(e=>e.user_identity===1),[v,a.memberPriceTab.memberPriceRuleId]);console.log("targetRule in CreditsMemberPrice",m);const H=d(()=>m?m.main_products?.variants?.map(e=>e.handle)||[]:[],[m?.main_products.variants]),{data:h}=S({handles:H,metafieldIdentifiers:{variant:M}}),{data:w}=S({handles:a?.redeemTab?.list?.map(e=>e.products?.[0]?.handle)||[],metafieldIdentifiers:{variant:M}}),_=G(e=>{if(!m)return null;const r=m?.discount_conf;if(!r)return null;let t=new D(e);switch(r.discount_type){case I.Percentage:t=t.mul(100-r.discount_value).div(100);break;case I.FixedAmount:t=t.sub(r.discount_value);break;case I.FixedPrice:t=new D(r.discount_value);break}return{memberPrice:t.toNumber(),originalPrice:e}},[m]),C=d(()=>!m||!h?[]:m.main_products.variants.map(e=>{const r=h.find(s=>s.handle===e.handle);if(!r)return null;const t=r.variants?.find(s=>s.sku===e.sku)||r.variants?.[0];if(!t||!t.availableForSale)return null;const i=_(t.price.amount);return i?{product:r,productVariant:t,memberPrice:i.memberPrice,originalPrice:i.originalPrice}:null})?.filter(Boolean)||[],[m,h,_]),k=d(()=>w?.map(e=>{const r=a.redeemTab.list.find(s=>s.products?.[0]?.handle===e.handle),t=L.find(s=>s.id?.toString()===r?.redeemId?.toString()),i=e.variants?.find(s=>s.sku===r?.products?.[0]?.sku)||e.variants?.[0];return!t||!i||!i.availableForSale||t.is_limited&&t.remaining_inventory<=0?null:{product:e,productVariant:i,alpcData:{id:t?.id,consumeCredits:t?.consume_credits,remainingInventory:t?.remaining_inventory,isLimited:t?.is_limited,consumeType:t?.consume_type,title:t?.name,desc:t?.note},config:r}}).filter(Boolean),[w,a.redeemTab.list,L]),R=d(()=>{const e=C?.length||0,r=Math.ceil(e/c),t=(o-1)*c,i=t+c,s=C?.slice(t,i)||[];return{totalPages:r,currentItems:s,showPagination:r>1}},[C,o,c]),z=d(()=>{const e=k?.length||0,r=Math.ceil(e/c),t=(o-1)*c,i=t+c,s=k?.slice(t,i)||[];return{totalPages:r,currentItems:s,showPagination:r>1}},[k,o,c]),F=e=>{if(e<=1)return null;const t=(()=>{const s=[],f=[];for(let l=1;l<=e;l++)(l===1||l===e||l>=o-2&&l<=o+2)&&s.push(l);let y=0;for(const l of s)y&&l-y>1&&f.push("..."),f.push(l),y=l;return f})();return u("div",{className:"mt-[32px] flex items-center justify-center gap-[8px]",children:[n("button",{onClick:()=>p(i=>Math.max(1,i-1)),disabled:o===1,className:x("flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white",o===1&&"cursor-not-allowed opacity-50"),children:n("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:n("path",{d:"M10 12L6 8L10 4",stroke:o===1?"#767880":"#080A0F",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),t.map((i,s)=>i==="..."?n("div",{className:"flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white",children:u("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:[n("circle",{cx:"4.5",cy:"10",r:"1.25",fill:"#2A2C32"}),n("circle",{cx:"10",cy:"10",r:"1.25",fill:"#2A2C32"}),n("circle",{cx:"15.5",cy:"10",r:"1.25",fill:"#2A2C32"})]})},`ellipsis-${s}`):n("button",{onClick:()=>p(i),className:x("flex size-[32px] xl:size-[24px] pt-[4px] items-center justify-center overflow-hidden text-[16px] xl:text-[14px] font-bold leading-[1.4] tracking-[-0.28px]",o===i?"bg-[#080a0f] text-white":"bg-white text-[#080a0f]"),children:i},i)),n("button",{onClick:()=>p(i=>Math.min(e,i+1)),disabled:o===e,className:x("flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white",o===e&&"cursor-not-allowed opacity-50"),children:n("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:n("path",{d:"M6 4L10 8L6 12",stroke:o===e?"#767880":"#080A0F",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]})};return u(V,{id:B,className:x("bg-[#F5F5F5]"),children:[n(O,{as:"h2",size:"4",html:a.title,className:"mx:px-[16px]"}),n(U,{align:"left",className:"mt-[24px]",value:b,onValueChange:e=>W(e),children:n($,{children:a.tabs.map((e,r)=>n(q,{value:e.type,children:e.label},r))})}),u("div",{className:"relative mt-[24px]",children:[b==="memberPrice"&&u(j,{children:[n("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:R.currentItems?.map((e,r)=>n(J,{itemData:e,copy:a.memberPriceTab},r))}),F(R.totalPages)]}),b==="redeem"&&u(j,{children:[n("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:z.currentItems?.map((e,r)=>n(K,{copy:{title:a.title,...a.redeemTab},itemData:e,setRules:N,currencyCode:w?.[0]?.price.currencyCode||"USD"},r))}),F(z.totalPages)]})]}),P&&n(X,{overlayClassName:"md:px-[16px] md:items-center",className:"md:h-fit md:rounded-b-[16px]",isOpen:P.length>0,onClose:()=>N([]),titleClassName:"border-b-transparent h-[56px]",rules:P,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:E?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{ge as CreditsMemberPrice};
1
+ import{Fragment as V,jsx as s,jsxs as b}from"react/jsx-runtime";import{Container as G,Heading as J,Tabs as K,TabsList as Q,TabsTrigger as X}from"@anker-in/headless-ui";import{useMemo as c,useState as f,useEffect as H,useCallback as T,useRef as Y}from"react";import y from"decimal.js";import Z from"./MemberPriceItem";import $ from"../creditsCash/RedeemableItem";import j from"../context/hooks/useRedeemableList";import ee from"../modal/rulesModal";import{Pagination as z}from"./Pagination";import{useProductsByHandles as B}from"@anker-in/lib";import{classNames as te}from"@anker-in/lib";import{useCreditsContext as re}from"../context/provider";import{FunctionDiscountType as w}from"../context/memberPriceConst";const _e=({copy:a,id:O})=>{const[d,U]=f(a.tabs[0]?.type||"memberPrice"),[p,D]=f(),[l,P]=f(1),[m,u]=f(9),{redeemableList:k}=j(),{pageCommon:W,memberPriceDiscount:v}=re(),h=Y(null);console.log("copy in CreditsMemberPrice",a);const M=[{namespace:"global",key:"transparentImg"},{namespace:"__discountCodeApp",key:"data"}];H(()=>{const e=()=>{const t=window.innerWidth;t>=1440?u(12):t>=1024?u(9):t>=768?u(12):u(8)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),H(()=>{P(1)},[d,m]);const o=c(()=>!v||!a.memberPriceTab.memberPriceRuleId?null:v.find(e=>String(e.rule_id)===String(a.memberPriceTab.memberPriceRuleId))?.result_detail?.member_discounts?.find(e=>e.user_identity===1),[v,a.memberPriceTab.memberPriceRuleId]);console.log("targetRule in CreditsMemberPrice",o);const q=c(()=>o?o.main_products?.variants?.map(e=>e.handle)||[]:[],[o?.main_products.variants]),{data:C}=B({handles:q,metafieldIdentifiers:{variant:M}}),{data:_}=B({handles:a?.redeemTab?.list?.map(e=>e.products?.[0]?.handle)||[],metafieldIdentifiers:{variant:M}}),R=T(e=>{try{const t=e?.metafields?.__discountCodeApp?.data;if(!t)return 0;const r=t;if(!Array.isArray(r)||r.length===0)return 0;const n=new Date,i=r.find(g=>{const S=g.starts_at?new Date(g.starts_at):null,E=g.ends_at?new Date(g.ends_at):null;return!(S&&S>n||E&&E<n)});return i?.value_type==="fixed_amount"&&i?.fixed_value?parseFloat(i.fixed_value):0}catch(t){return console.error("Failed to get coupon discount:",t),0}},[]),N=T((e,t)=>{if(!o)return null;const r=o?.discount_conf;if(!r)return null;let n=new y(e);switch(r.discount_type){case w.Percentage:n=n.mul(100-r.discount_value).div(100);break;case w.FixedAmount:n=n.sub(r.discount_value);break;case w.FixedPrice:n=new y(r.discount_value);break}if(t){const i=R(t);i>0&&(n=n.sub(i))}return n.lessThan(0)&&(n=new y(0)),{memberPrice:n.toNumber(),originalPrice:e}},[o,R]),x=c(()=>!o||!C?[]:o.main_products.variants.map(e=>{const t=C.find(i=>i.handle===e.handle);if(!t)return null;const r=t.variants?.find(i=>i.sku===e.sku)||t.variants?.[0];if(!r||!r.availableForSale)return null;const n=N(r.price.amount,r);return n?{product:t,productVariant:r,memberPrice:n.memberPrice,originalPrice:n.originalPrice}:null})?.filter(Boolean)||[],[o,C,N]),I=c(()=>_?.map(e=>{const t=a.redeemTab.list.find(i=>i.products?.[0]?.handle===e.handle),r=k.find(i=>i.id?.toString()===t?.redeemId?.toString()),n=e.variants?.find(i=>i.sku===t?.products?.[0]?.sku)||e.variants?.[0];return!r||!n||!n.availableForSale||r.is_limited&&r.remaining_inventory<=0?null:{product:e,productVariant:n,alpcData:{id:r?.id,consumeCredits:r?.consume_credits,remainingInventory:r?.remaining_inventory,isLimited:r?.is_limited,consumeType:r?.consume_type,title:r?.name,desc:r?.note},config:t}}).filter(Boolean),[_,a.redeemTab.list,k]),L=c(()=>{const e=x?.length||0,t=Math.ceil(e/m),r=(l-1)*m,n=r+m,i=x?.slice(r,n)||[];return{totalPages:t,currentItems:i,showPagination:t>1}},[x,l,m]),F=c(()=>{const e=I?.length||0,t=Math.ceil(e/m),r=(l-1)*m,n=r+m,i=I?.slice(r,n)||[];return{totalPages:t,currentItems:i,showPagination:t>1}},[I,l,m]),A=T(e=>{if(P(e),h.current){const t=h.current.offsetTop;window.scrollTo({top:t-80,behavior:"smooth"})}},[P]);return b(G,{id:O,className:te("bg-[#F5F5F5]"),ref:h,children:[s(J,{as:"h2",size:"4",html:a.title,className:"mx:px-[16px]"}),s(K,{align:"left",className:"mt-[24px]",value:d,onValueChange:e=>U(e),children:s(Q,{children:a.tabs.map((e,t)=>s(X,{value:e.type,children:e.label},t))})}),b("div",{className:"relative mt-[24px]",children:[d==="memberPrice"&&b(V,{children:[s("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:L.currentItems?.map((e,t)=>s(Z,{itemData:e,copy:a.memberPriceTab},t))}),s(z,{currentPage:l,totalPages:L.totalPages,onPageChange:A})]}),d==="redeem"&&b(V,{children:[s("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:F.currentItems?.map((e,t)=>s($,{copy:{title:a.title,...a.redeemTab},itemData:e,setRules:D,currencyCode:_?.[0]?.price.currencyCode||"USD"},t))}),s(z,{currentPage:l,totalPages:F.totalPages,onPageChange:A})]})]}),p&&s(ee,{overlayClassName:"md:px-[16px] md:items-center",className:"md:h-fit md:rounded-b-[16px]",isOpen:p.length>0,onClose:()=>D([]),titleClassName:"border-b-transparent h-[56px]",rules:p,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:W?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{_e as CreditsMemberPrice};
2
2
  //# sourceMappingURL=CreditsMemberPrice.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx"],
4
- "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport { useMemo, useState, useEffect, useCallback } from 'react'\nimport Decimal from 'decimal.js'\n\nimport MemberPriceItem from './MemberPriceItem'\nimport RedeemableItem from '../creditsCash/RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/rulesModal'\nimport { useProductsByHandles } from '@anker-in/lib'\nimport { CreditsMemberPriceCopy, MemberPriceProduct } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { RedeemItem } from '../creditsCash/type'\nimport { FunctionDiscountType } from '../context/memberPriceConst'\n\nexport const CreditsMemberPrice = ({ copy, id }: { copy: CreditsMemberPriceCopy; id?: string }) => {\n const [activeTab, setActiveTab] = useState<'memberPrice' | 'redeem'>(copy.tabs[0]?.type || 'memberPrice')\n const [rules, setRules] = useState<string | string[]>()\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState(9) // \u9ED8\u8BA4 1024px \u4EE5\u4E0A\uFF1A3\u5217 \u00D7 3\u884C = 9\n const { redeemableList } = useRedeemableList()\n const { pageCommon, memberPriceDiscount } = useCreditsContext()\n\n console.log('copy in CreditsMemberPrice', copy)\n\n // \u5B9A\u4E49\u9700\u8981\u83B7\u53D6\u7684 metafield\uFF0C\u5305\u62EC\u900F\u660E\u56FE\n const variantMetafieldIdentifiers: any[] = [\n {\n namespace: 'global',\n key: 'transparentImg',\n },\n ]\n\n // \u6839\u636E\u5C4F\u5E55\u5C3A\u5BF8\u52A8\u6001\u8C03\u6574\u6BCF\u9875\u663E\u793A\u7684\u5546\u54C1\u6570\u91CF\n useEffect(() => {\n const updateItemsPerPage = () => {\n const width = window.innerWidth\n if (width >= 1024) {\n // 1024px \u4EE5\u4E0A\uFF1A3\u5217 \u00D7 3\u884C = 9\u4E2A\n setItemsPerPage(9)\n } else {\n // 1024px \u4EE5\u4E0B\uFF1A2\u5217 \u00D7 4\u884C = 8\u4E2A\n setItemsPerPage(8)\n }\n }\n\n updateItemsPerPage()\n window.addEventListener('resize', updateItemsPerPage)\n return () => window.removeEventListener('resize', updateItemsPerPage)\n }, [])\n\n // \u5F53\u5207\u6362 tab \u6216\u6BCF\u9875\u6570\u91CF\u53D8\u5316\u65F6\u91CD\u7F6E\u9875\u7801\n useEffect(() => {\n setCurrentPage(1)\n }, [activeTab, itemsPerPage])\n\n // \u6839\u636E\u914D\u7F6E\u7684 ruleId \u67E5\u627E\u5BF9\u5E94\u7684\u4F1A\u5458\u4EF7\u89C4\u5219\n const targetRule = useMemo(() => {\n if (!memberPriceDiscount || !copy.memberPriceTab.memberPriceRuleId) return null\n return memberPriceDiscount\n .find(rule => String(rule.rule_id) === String(copy.memberPriceTab.memberPriceRuleId))\n ?.result_detail?.member_discounts?.find(discount => discount.user_identity === 1)\n }, [memberPriceDiscount, copy.memberPriceTab.memberPriceRuleId])\n\n console.log('targetRule in CreditsMemberPrice', targetRule)\n\n const memberPriceHandles = useMemo(() => {\n if (!targetRule) return []\n\n return targetRule.main_products?.variants?.map(variant => variant.handle) || []\n }, [targetRule?.main_products.variants])\n\n // \u83B7\u53D6\u4F1A\u5458\u4EF7\u4EA7\u54C1\u6570\u636E\uFF08\u901A\u8FC7\u4ECE memberPriceDiscount \u63D0\u53D6\u7684 handles \u83B7\u53D6\u4EA7\u54C1\uFF09\n const { data: memberPriceProducts } = useProductsByHandles({\n handles: memberPriceHandles,\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u83B7\u53D6\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u6570\u636E\n const { data: redeemProducts } = useProductsByHandles({\n handles: copy?.redeemTab?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u7684\u8F85\u52A9\u51FD\u6570\uFF08\u4EC5\u4F7F\u7528\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF09\n const calculateMemberPrice = useCallback(\n (price: number) => {\n if (!targetRule) return null\n\n const discountConfig = targetRule?.discount_conf\n if (!discountConfig) return null\n\n // \u6839\u636E\u6298\u6263\u7C7B\u578B\u8BA1\u7B97\u4F1A\u5458\u4EF7\n let salePrice = new Decimal(price)\n switch (discountConfig.discount_type) {\n case FunctionDiscountType.Percentage:\n salePrice = salePrice.mul(100 - discountConfig.discount_value).div(100)\n break\n case FunctionDiscountType.FixedAmount:\n salePrice = salePrice.sub(discountConfig.discount_value)\n break\n case FunctionDiscountType.FixedPrice:\n salePrice = new Decimal(discountConfig.discount_value)\n break\n }\n\n return {\n memberPrice: salePrice.toNumber(),\n originalPrice: price,\n }\n },\n [targetRule]\n )\n\n // \u5904\u7406\u4F1A\u5458\u4EF7\u4EA7\u54C1\u5217\u8868\uFF08\u4EC5\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF09\n const memberPriceList = useMemo(() => {\n if (!targetRule || !memberPriceProducts) return []\n\n return (\n (targetRule.main_products.variants\n .map(variant => {\n const product = memberPriceProducts.find(p => p.handle === variant.handle)\n if (!product) return null\n\n const productVariant = product.variants?.find(v => v.sku === variant.sku) || product.variants?.[0]\n if (!productVariant || !productVariant.availableForSale) return null\n\n const priceResult = calculateMemberPrice(productVariant.price.amount)\n if (!priceResult) return null\n\n return {\n product,\n productVariant,\n memberPrice: priceResult.memberPrice,\n originalPrice: priceResult.originalPrice,\n }\n })\n ?.filter(Boolean) as unknown as MemberPriceProduct[]) || []\n )\n }, [targetRule, memberPriceProducts, calculateMemberPrice])\n\n // \u5904\u7406\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u5217\u8868\uFF08\u590D\u7528 creditsCash \u7684\u903B\u8F91\uFF0C\u8FC7\u6EE4\u7F3A\u8D27\u5546\u54C1\uFF09\n const redeemList = useMemo(() => {\n return redeemProducts\n ?.map((product: Product) => {\n const config = copy.redeemTab.list.find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n\n // \u8FC7\u6EE4\u6761\u4EF6\uFF1A\n // 1. \u5FC5\u987B\u6709 alpcData \u548C productVariant\n // 2. \u5546\u54C1\u4E0D\u80FD\u7F3A\u8D27\n // 3. \u5982\u679C\u6709\u5E93\u5B58\u9650\u5236\uFF0C\u5219\u5E93\u5B58\u5FC5\u987B\u5927\u4E8E 0\n if (!alpcData || !productVariant) return null\n if (!productVariant.availableForSale) return null\n if (alpcData.is_limited && alpcData.remaining_inventory <= 0) return null\n\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [redeemProducts, copy.redeemTab.list, redeemableList])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u5206\u9875\n const memberPricePagination = useMemo(() => {\n const totalItems = memberPriceList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = memberPriceList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [memberPriceList, currentPage, itemsPerPage])\n\n // \u8BA1\u7B97\u79EF\u5206\u5151\u6362\u5206\u9875\n const redeemPagination = useMemo(() => {\n const totalItems = redeemList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = redeemList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [redeemList, currentPage, itemsPerPage])\n\n // \u5206\u9875\u5BFC\u822A\u7EC4\u4EF6 - \u6309\u7167 Figma \u8BBE\u8BA1\n const renderPagination = (totalPages: number) => {\n if (totalPages <= 1) return null\n\n // \u8BA1\u7B97\u8981\u663E\u793A\u7684\u9875\u7801\n const getPageNumbers = () => {\n const delta = 2 // \u5F53\u524D\u9875\u524D\u540E\u663E\u793A\u7684\u9875\u7801\u6570\u91CF\n const range = []\n const rangeWithDots = []\n\n for (let i = 1; i <= totalPages; i++) {\n if (i === 1 || i === totalPages || (i >= currentPage - delta && i <= currentPage + delta)) {\n range.push(i)\n }\n }\n\n let prev = 0\n for (const i of range) {\n if (prev && i - prev > 1) {\n rangeWithDots.push('...')\n }\n rangeWithDots.push(i)\n prev = i\n }\n\n return rangeWithDots\n }\n\n const pages = getPageNumbers()\n\n return (\n <div className=\"mt-[32px] flex items-center justify-center gap-[8px]\">\n {/* \u4E0A\u4E00\u9875\u6309\u94AE */}\n <button\n onClick={() => setCurrentPage(prev => Math.max(1, prev - 1))}\n disabled={currentPage === 1}\n className={cn(\n 'flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white',\n currentPage === 1 && 'cursor-not-allowed opacity-50'\n )}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M10 12L6 8L10 4\"\n stroke={currentPage === 1 ? '#767880' : '#080A0F'}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {/* \u9875\u7801\u6309\u94AE */}\n {pages.map((page, index) => {\n if (page === '...') {\n return (\n <div\n key={`ellipsis-${index}`}\n className=\"flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"4.5\" cy=\"10\" r=\"1.25\" fill=\"#2A2C32\" />\n <circle cx=\"10\" cy=\"10\" r=\"1.25\" fill=\"#2A2C32\" />\n <circle cx=\"15.5\" cy=\"10\" r=\"1.25\" fill=\"#2A2C32\" />\n </svg>\n </div>\n )\n }\n\n const isActive = currentPage === page\n return (\n <button\n key={page}\n onClick={() => setCurrentPage(page as number)}\n className={cn(\n 'flex size-[32px] xl:size-[24px] pt-[4px] items-center justify-center overflow-hidden text-[16px] xl:text-[14px] font-bold leading-[1.4] tracking-[-0.28px]',\n isActive ? 'bg-[#080a0f] text-white' : 'bg-white text-[#080a0f]'\n )}\n >\n {page}\n </button>\n )\n })}\n\n {/* \u4E0B\u4E00\u9875\u6309\u94AE */}\n <button\n onClick={() => setCurrentPage(prev => Math.min(totalPages, prev + 1))}\n disabled={currentPage === totalPages}\n className={cn(\n 'flex size-[32px] xl:size-[24px] items-center justify-center overflow-hidden bg-white',\n currentPage === totalPages && 'cursor-not-allowed opacity-50'\n )}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M6 4L10 8L6 12\"\n stroke={currentPage === totalPages ? '#767880' : '#080A0F'}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n )\n }\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} className=\"mx:px-[16px]\" />\n\n <Tabs\n align=\"left\"\n className=\"mt-[24px]\"\n value={activeTab}\n onValueChange={value => setActiveTab(value as 'memberPrice' | 'redeem')}\n >\n <TabsList>\n {copy.tabs.map((tab, index) => (\n <TabsTrigger key={index} value={tab.type}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n\n {/* Tab \u5185\u5BB9 */}\n <div className=\"relative mt-[24px]\">\n {/* \u4F1A\u5458\u4EF7 Tab */}\n {activeTab === 'memberPrice' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {memberPricePagination.currentItems?.map((item, index: number) => (\n <MemberPriceItem key={index} itemData={item} copy={copy.memberPriceTab} />\n ))}\n </div>\n {renderPagination(memberPricePagination.totalPages)}\n </>\n )}\n\n {/* \u79EF\u5206\u5151\u6362 Tab */}\n {activeTab === 'redeem' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {redeemPagination.currentItems?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={{\n title: copy.title,\n ...copy.redeemTab,\n }}\n itemData={item}\n setRules={setRules}\n currencyCode={redeemProducts?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n {renderPagination(redeemPagination.totalPages)}\n </>\n )}\n </div>\n\n {/* Rules Modal */}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className=\"md:h-fit md:rounded-b-[16px]\"\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["Fragment", "jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "useMemo", "useState", "useEffect", "useCallback", "Decimal", "MemberPriceItem", "RedeemableItem", "useRedeemableList", "RulesModal", "useProductsByHandles", "cn", "useCreditsContext", "FunctionDiscountType", "CreditsMemberPrice", "copy", "id", "activeTab", "setActiveTab", "rules", "setRules", "currentPage", "setCurrentPage", "itemsPerPage", "setItemsPerPage", "redeemableList", "pageCommon", "memberPriceDiscount", "variantMetafieldIdentifiers", "updateItemsPerPage", "targetRule", "rule", "discount", "memberPriceHandles", "variant", "memberPriceProducts", "redeemProducts", "item", "calculateMemberPrice", "price", "discountConfig", "salePrice", "memberPriceList", "product", "p", "productVariant", "v", "priceResult", "redeemList", "config", "alpcData", "memberPricePagination", "totalItems", "totalPages", "startIndex", "endIndex", "currentItems", "redeemPagination", "renderPagination", "pages", "range", "rangeWithDots", "i", "prev", "page", "index", "value", "tab"]
4
+ "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport { useMemo, useState, useEffect, useCallback, useRef } from 'react'\nimport Decimal from 'decimal.js'\n\nimport MemberPriceItem from './MemberPriceItem'\nimport RedeemableItem from '../creditsCash/RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/rulesModal'\nimport { Pagination } from './Pagination'\nimport { useProductsByHandles } from '@anker-in/lib'\nimport { CreditsMemberPriceCopy, MemberPriceProduct } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { RedeemItem } from '../creditsCash/type'\nimport { FunctionDiscountType } from '../context/memberPriceConst'\n\nexport const CreditsMemberPrice = ({ copy, id }: { copy: CreditsMemberPriceCopy; id?: string }) => {\n const [activeTab, setActiveTab] = useState<'memberPrice' | 'redeem'>(copy.tabs[0]?.type || 'memberPrice')\n const [rules, setRules] = useState<string | string[]>()\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState(9) // \u9ED8\u8BA4 1024px \u4EE5\u4E0A\uFF1A3\u5217 \u00D7 3\u884C = 9\n const { redeemableList } = useRedeemableList()\n const { pageCommon, memberPriceDiscount } = useCreditsContext()\n const containerRef = useRef<HTMLDivElement>(null)\n\n console.log('copy in CreditsMemberPrice', copy)\n\n // \u5B9A\u4E49\u9700\u8981\u83B7\u53D6\u7684 metafield\uFF0C\u5305\u62EC\u900F\u660E\u56FE\u548C\u4F18\u60E0\u5238\u4FE1\u606F\n const variantMetafieldIdentifiers: any[] = [\n {\n namespace: 'global',\n key: 'transparentImg',\n },\n {\n namespace: '__discountCodeApp',\n key: 'data',\n },\n ]\n\n // \u6839\u636E\u5C4F\u5E55\u5C3A\u5BF8\u52A8\u6001\u8C03\u6574\u6BCF\u9875\u663E\u793A\u7684\u5546\u54C1\u6570\u91CF\n useEffect(() => {\n const updateItemsPerPage = () => {\n const width = window.innerWidth\n if (width >= 1440) {\n // 1920px \u4EE5\u4E0A\uFF1A4\u5217 \u00D7 3\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else if (width >= 1024) {\n // 1024px - 1919px\uFF1A3\u5217 \u00D7 3\u884C = 9\u4E2A\n setItemsPerPage(9)\n } else if (width >= 768) {\n // 1024px \u4EE5\u4E0B\uFF1A3\u5217 \u00D7 4\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else {\n // 768px \u4EE5\u4E0B\uFF1A2\u5217 \u00D7 4\u884C = 8\u4E2A\n setItemsPerPage(8)\n }\n }\n\n updateItemsPerPage()\n window.addEventListener('resize', updateItemsPerPage)\n return () => window.removeEventListener('resize', updateItemsPerPage)\n }, [])\n\n // \u5F53\u5207\u6362 tab \u6216\u6BCF\u9875\u6570\u91CF\u53D8\u5316\u65F6\u91CD\u7F6E\u9875\u7801\n useEffect(() => {\n setCurrentPage(1)\n }, [activeTab, itemsPerPage])\n\n // \u6839\u636E\u914D\u7F6E\u7684 ruleId \u67E5\u627E\u5BF9\u5E94\u7684\u4F1A\u5458\u4EF7\u89C4\u5219\n const targetRule = useMemo(() => {\n if (!memberPriceDiscount || !copy.memberPriceTab.memberPriceRuleId) return null\n return memberPriceDiscount\n .find(rule => String(rule.rule_id) === String(copy.memberPriceTab.memberPriceRuleId))\n ?.result_detail?.member_discounts?.find(discount => discount.user_identity === 1)\n }, [memberPriceDiscount, copy.memberPriceTab.memberPriceRuleId])\n\n console.log('targetRule in CreditsMemberPrice', targetRule)\n\n const memberPriceHandles = useMemo(() => {\n if (!targetRule) return []\n\n return targetRule.main_products?.variants?.map(variant => variant.handle) || []\n }, [targetRule?.main_products.variants])\n\n // \u83B7\u53D6\u4F1A\u5458\u4EF7\u4EA7\u54C1\u6570\u636E\uFF08\u901A\u8FC7\u4ECE memberPriceDiscount \u63D0\u53D6\u7684 handles \u83B7\u53D6\u4EA7\u54C1\uFF09\n const { data: memberPriceProducts } = useProductsByHandles({\n handles: memberPriceHandles,\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u83B7\u53D6\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u6570\u636E\n const { data: redeemProducts } = useProductsByHandles({\n handles: copy?.redeemTab?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u4ECE variant metafields \u4E2D\u83B7\u53D6\u6709\u6548\u7684 coupon \u6298\u6263\u91D1\u989D\n const getCouponDiscount = useCallback((variant: any) => {\n try {\n const discountData = variant?.metafields?.__discountCodeApp?.data\n if (!discountData) return 0\n\n // discountData \u5DF2\u7ECF\u662F\u5BF9\u8C61\uFF0C\u4E0D\u9700\u8981 JSON.parse\n const discounts = discountData\n if (!Array.isArray(discounts) || discounts.length === 0) return 0\n\n // \u83B7\u53D6\u7B2C\u4E00\u4E2A\u6709\u6548\u7684 coupon\uFF08\u68C0\u67E5\u65F6\u95F4\u8303\u56F4\uFF09\n const now = new Date()\n const validDiscount = discounts.find((discount: any) => {\n const startsAt = discount.starts_at ? new Date(discount.starts_at) : null\n const endsAt = discount.ends_at ? new Date(discount.ends_at) : null\n\n // \u68C0\u67E5 coupon \u662F\u5426\u5728\u6709\u6548\u671F\u5185\n if (startsAt && startsAt > now) return false\n if (endsAt && endsAt < now) return false\n\n return true\n })\n\n // \u8FD4\u56DE\u6298\u6263\u91D1\u989D\uFF08fixed_amount \u7C7B\u578B\uFF09\n if (validDiscount?.value_type === 'fixed_amount' && validDiscount?.fixed_value) {\n return parseFloat(validDiscount.fixed_value)\n }\n\n return 0\n } catch (error) {\n console.error('Failed to get coupon discount:', error)\n return 0\n }\n }, [])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u7684\u8F85\u52A9\u51FD\u6570\uFF08\u4EC5\u4F7F\u7528\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF0C\u5E76\u53E0\u52A0 coupon \u6298\u6263\uFF09\n const calculateMemberPrice = useCallback(\n (price: number, variant?: any) => {\n if (!targetRule) return null\n\n const discountConfig = targetRule?.discount_conf\n if (!discountConfig) return null\n\n // \u6839\u636E\u6298\u6263\u7C7B\u578B\u8BA1\u7B97\u4F1A\u5458\u4EF7\n let salePrice = new Decimal(price)\n switch (discountConfig.discount_type) {\n case FunctionDiscountType.Percentage:\n salePrice = salePrice.mul(100 - discountConfig.discount_value).div(100)\n break\n case FunctionDiscountType.FixedAmount:\n salePrice = salePrice.sub(discountConfig.discount_value)\n break\n case FunctionDiscountType.FixedPrice:\n salePrice = new Decimal(discountConfig.discount_value)\n break\n }\n\n // \u53E0\u52A0 coupon \u6298\u6263\n if (variant) {\n const couponDiscount = getCouponDiscount(variant)\n if (couponDiscount > 0) {\n salePrice = salePrice.sub(couponDiscount)\n }\n }\n\n // \u786E\u4FDD\u4EF7\u683C\u4E0D\u4E3A\u8D1F\u6570\n if (salePrice.lessThan(0)) {\n salePrice = new Decimal(0)\n }\n\n return {\n memberPrice: salePrice.toNumber(),\n originalPrice: price,\n }\n },\n [targetRule, getCouponDiscount]\n )\n\n // \u5904\u7406\u4F1A\u5458\u4EF7\u4EA7\u54C1\u5217\u8868\uFF08\u4EC5\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF09\n const memberPriceList = useMemo(() => {\n if (!targetRule || !memberPriceProducts) return []\n\n return (\n (targetRule.main_products.variants\n .map(variant => {\n const product = memberPriceProducts.find(p => p.handle === variant.handle)\n if (!product) return null\n\n const productVariant = product.variants?.find(v => v.sku === variant.sku) || product.variants?.[0]\n if (!productVariant || !productVariant.availableForSale) return null\n\n const priceResult = calculateMemberPrice(productVariant.price.amount, productVariant)\n if (!priceResult) return null\n\n return {\n product,\n productVariant,\n memberPrice: priceResult.memberPrice,\n originalPrice: priceResult.originalPrice,\n }\n })\n ?.filter(Boolean) as unknown as MemberPriceProduct[]) || []\n )\n }, [targetRule, memberPriceProducts, calculateMemberPrice])\n\n // \u5904\u7406\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u5217\u8868\uFF08\u590D\u7528 creditsCash \u7684\u903B\u8F91\uFF0C\u8FC7\u6EE4\u7F3A\u8D27\u5546\u54C1\uFF09\n const redeemList = useMemo(() => {\n return redeemProducts\n ?.map((product: Product) => {\n const config = copy.redeemTab.list.find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n\n // \u8FC7\u6EE4\u6761\u4EF6\uFF1A\n // 1. \u5FC5\u987B\u6709 alpcData \u548C productVariant\n // 2. \u5546\u54C1\u4E0D\u80FD\u7F3A\u8D27\n // 3. \u5982\u679C\u6709\u5E93\u5B58\u9650\u5236\uFF0C\u5219\u5E93\u5B58\u5FC5\u987B\u5927\u4E8E 0\n if (!alpcData || !productVariant) return null\n if (!productVariant.availableForSale) return null\n if (alpcData.is_limited && alpcData.remaining_inventory <= 0) return null\n\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [redeemProducts, copy.redeemTab.list, redeemableList])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u5206\u9875\n const memberPricePagination = useMemo(() => {\n const totalItems = memberPriceList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = memberPriceList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [memberPriceList, currentPage, itemsPerPage])\n\n // \u8BA1\u7B97\u79EF\u5206\u5151\u6362\u5206\u9875\n const redeemPagination = useMemo(() => {\n const totalItems = redeemList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = redeemList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [redeemList, currentPage, itemsPerPage])\n\n // \u5904\u7406\u9875\u9762\u5207\u6362\uFF0C\u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n const handlePageChange = useCallback(\n (page: number) => {\n setCurrentPage(page)\n // \u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n if (containerRef.current) {\n const top = containerRef.current.offsetTop\n window.scrollTo({\n top: top - 80, // \u51CF\u53BB 80px \u7684\u504F\u79FB\u91CF\uFF0C\u907F\u514D\u88AB\u56FA\u5B9A\u5934\u90E8\u906E\u6321\n behavior: 'smooth',\n })\n }\n },\n [setCurrentPage]\n )\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')} ref={containerRef}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} className=\"mx:px-[16px]\" />\n\n <Tabs\n align=\"left\"\n className=\"mt-[24px]\"\n value={activeTab}\n onValueChange={value => setActiveTab(value as 'memberPrice' | 'redeem')}\n >\n <TabsList>\n {copy.tabs.map((tab, index) => (\n <TabsTrigger key={index} value={tab.type}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n\n {/* Tab \u5185\u5BB9 */}\n <div className=\"relative mt-[24px]\">\n {/* \u4F1A\u5458\u4EF7 Tab */}\n {activeTab === 'memberPrice' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {memberPricePagination.currentItems?.map((item, index: number) => (\n <MemberPriceItem key={index} itemData={item} copy={copy.memberPriceTab} />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={memberPricePagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n\n {/* \u79EF\u5206\u5151\u6362 Tab */}\n {activeTab === 'redeem' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {redeemPagination.currentItems?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={{\n title: copy.title,\n ...copy.redeemTab,\n }}\n itemData={item}\n setRules={setRules}\n currencyCode={redeemProducts?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={redeemPagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </div>\n\n {/* Rules Modal */}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className=\"md:h-fit md:rounded-b-[16px]\"\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "useMemo", "useState", "useEffect", "useCallback", "useRef", "Decimal", "MemberPriceItem", "RedeemableItem", "useRedeemableList", "RulesModal", "Pagination", "useProductsByHandles", "cn", "useCreditsContext", "FunctionDiscountType", "CreditsMemberPrice", "copy", "id", "activeTab", "setActiveTab", "rules", "setRules", "currentPage", "setCurrentPage", "itemsPerPage", "setItemsPerPage", "redeemableList", "pageCommon", "memberPriceDiscount", "containerRef", "variantMetafieldIdentifiers", "updateItemsPerPage", "width", "targetRule", "rule", "discount", "memberPriceHandles", "variant", "memberPriceProducts", "redeemProducts", "item", "getCouponDiscount", "discountData", "discounts", "now", "validDiscount", "startsAt", "endsAt", "error", "calculateMemberPrice", "price", "discountConfig", "salePrice", "couponDiscount", "memberPriceList", "product", "p", "productVariant", "v", "priceResult", "redeemList", "config", "alpcData", "memberPricePagination", "totalItems", "totalPages", "startIndex", "endIndex", "currentItems", "redeemPagination", "handlePageChange", "page", "top", "value", "tab", "index"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as l}from"react/jsx-runtime";import{Button as d,Text as a,Picture as m}from"@anker-in/headless-ui";import{useMemo as v}from"react";import{formatPrice as x}from"../context/utils";import{classNames as o,ROUNDED_BRANDS as P,useHeadlessContext as h,useBuyNow as C}from"@anker-in/lib";import{useCreditsContext as w}from"../context/provider";function y({itemData:e,copy:r,className:p}){const{brand:i,locale:n}=h(),{profile:u}=w(),b=P.includes(i),{trigger:g,isMutating:c}=C({},{throwOnError:!0}),s=v(()=>e.productVariant?.availableForSale,[e.productVariant?.availableForSale]),f=()=>{window.location.href=`/products/${e.product.handle}`},N=()=>{g({customAttributes:[{key:"_member_type",value:String(u?.memberType||0)}],lineItems:[{variant:e.productVariant,quantity:1}]})};return l("div",{className:o("relative flex flex-col items-center bg-[#EAEAEC] p-[16px] md:rounded-[12px]",!b&&"rounded-none md:rounded-none",p),children:[r.memberPriceImg&&t(m,{className:"absolute left-[24px] top-[16px] h-[24px] w-auto",imgClassName:"!h-full object-contain",source:r.memberPriceImg.url,alt:r.memberPriceImg.alt||"Member Price"}),t("a",{href:`/products/${e.product.handle}`,className:o("relative mx-auto size-[138px]"),children:t(m,{className:"mx-auto size-full",imgClassName:"object-contain",source:e?.productVariant?.metafields?.global?.transparentImg||e?.config?.image?.url||e?.productVariant?.image?.url})}),l("div",{className:o("mt-[4px] w-full"),children:[t(a,{html:e?.product?.title,title:e?.product?.title,className:"line-clamp-2 text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]"}),l("div",{className:"mt-[16px] flex flex-col gap-[8px]",children:[t(a,{html:r.memberPriceLabel,className:o("text-brand-color-0 text-[16px] l-xl:text-[14px] l:text-[12px] w-fit font-bold leading-[1.4] tracking-[-0.28px]",i==="ankersolix"&&"leading-none bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent"),as:"p"}),l("div",{className:"flex items-center gap-[4px]",children:[t(a,{html:x({amount:e.memberPrice,currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:n}),className:"text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]",as:"span"}),t(a,{html:x({amount:e.originalPrice,currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:n}),className:"text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through",as:"span"})]}),l("div",{className:"flex w-full gap-[8px] md:flex-col",children:[t(d,{variant:"secondary",className:"flex-1 md:w-full",size:"lg",onClick:f,disabled:!s,children:r.learnMoreText}),t(d,{variant:"primary",className:"flex-1 md:w-full",size:"lg",onClick:N,disabled:!s||c,loading:c,children:r.shopNowText})]})]})]})]})}var T=y;export{T as default};
1
+ import{jsx as r,jsxs as o}from"react/jsx-runtime";import{Button as h,Text as d,Picture as I,Badge as M}from"@anker-in/headless-ui";import{useMemo as p,useState as z}from"react";import{formatPrice as A,extractVariantId as w}from"../context/utils";import{classNames as s,useHeadlessContext as L,useBuyNow as E}from"@anker-in/lib";import{useCreditsContext as F}from"../context/provider";import{ROUNDED_BRANDS as O}from"../../../constants";function U({itemData:e,copy:a,className:P}){const{brand:x,locale:m}=L(),{profile:i,openSignUpPopup:_,cartConfig:c}=F(),T=O.includes(x),{trigger:V,isMutating:f}=E({},{throwOnError:!0}),[g,b]=z(!1),v=p(()=>e.productVariant?.availableForSale,[e.productVariant?.availableForSale]),k=p(()=>!!i,[i]),n=p(()=>{try{const t=e.productVariant?.metafields?.__discountCodeApp?.data;if(!t)return;const u=t;if(!Array.isArray(u)||u.length===0)return;const y=new Date;return u.find(l=>{const C=l.starts_at?new Date(l.starts_at):null,N=l.ends_at?new Date(l.ends_at):null;return!(C&&C>y||N&&N<y)})?.title}catch(t){console.error("Failed to get discount code:",t);return}},[e.productVariant?.metafields]),S=async()=>{if(!c?.addToCart){console.warn("cartConfig.addToCart is required");return}try{b(!0);const t=[];n&&t.push({key:"_member_price",value:JSON.stringify({code:n})}),await c.addToCart({variantList:[{variant:e.productVariant,quantity:1,attributes:t.length>0?t:void 0}],cartAttributes:{_member_type:String(i?.memberType||0)},discountCodes:n?[n]:void 0})}catch(t){console.error("Add to cart failed:",t)}finally{b(!1)}},B=()=>{if(!k){_();return}const t=[];n&&t.push({key:"_member_price",value:JSON.stringify({code:n})}),V({customAttributes:[{key:"_member_type",value:String(i?.memberType||0)}],lineItems:[{variant:e.productVariant,quantity:1,attributes:t.length>0?t:void 0}]})};return o("div",{className:s("relative flex flex-col items-center bg-[#EAEAEC] p-[24px] l:p-[8px] rounded-[16px] md-xl:p-[16px] md:rounded-[12px]",!T&&"rounded-none md:rounded-none",a.badgeLabel&&"pt-[48px] l:pt-[44px]",P),children:[a.badgeLabel&&r(M,{className:"absolute left-[24px] !bg-gradient-brand l:left-[16px] top-[16px] z-10",size:"lg",variant:"promotional",promotionalType:"regular-member",children:a.badgeLabel}),r("a",{href:w(e.productVariant?.id)?`/products/${e.product.handle}?variant=${w(e.productVariant?.id)}`:`/products/${e.product.handle}`,className:s("relative mx-auto size-[138px]"),children:r(I,{className:"mx-auto size-full",imgClassName:"object-contain",source:e?.productVariant?.metafields?.global?.transparentImg||e?.config?.image?.url||e?.productVariant?.image?.url})}),o("div",{className:s("mt-[10px] xl:mt-[8px] w-full"),children:[r(d,{html:e?.product?.title,title:e?.product?.title,className:"line-clamp-2 text-[24px] min-h-[58px] l-xxl:min-h-[48px] l:min-h-[38px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]"}),o("div",{className:"mt-[24px] l:mt-[12px] flex flex-col gap-[8px] l:gap-0",children:[r(d,{html:a.memberPriceLabel,className:s("text-brand-color-0 text-[16px] l-xl:text-[14px] l:text-[12px] w-fit font-bold leading-[1.4] tracking-[-0.28px]",x==="ankersolix"&&"leading-none bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent"),as:"p"}),o("div",{className:"flex items-center gap-[4px]",children:[r(d,{html:A({amount:e.memberPrice,currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:m}),className:"text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]",as:"span"}),r(d,{html:A({amount:e.originalPrice,currencyCode:e?.productVariant?.price.currencyCode||"USD",locale:m}),className:"text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#4A4C56] line-through",as:"span"})]}),o("div",{className:"flex w-full mt-[8px] gap-[8px] l:flex-col",children:[r(h,{variant:"secondary",className:"flex-1 md:w-full",size:"lg",onClick:S,disabled:!v||!c?.addToCart||g,loading:g,children:a.addToCart}),r(h,{variant:"primary",className:"flex-1 md:w-full",size:"lg",onClick:B,disabled:!v||f,loading:f,children:a.shopNowText})]})]})]})]})}var X=U;export{X as default};
2
2
  //# sourceMappingURL=MemberPriceItem.js.map