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

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 (216) hide show
  1. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.d.ts +1 -0
  2. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js +2 -0
  3. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js.map +7 -0
  4. package/dist/cjs/components/credits/context/hooks/useSubscriptions.d.ts +9 -0
  5. package/dist/cjs/components/credits/context/hooks/useSubscriptions.js +2 -0
  6. package/dist/cjs/components/credits/context/hooks/useSubscriptions.js.map +7 -0
  7. package/dist/cjs/components/credits/context/utils.d.ts +4 -0
  8. package/dist/cjs/components/credits/context/utils.js +1 -1
  9. package/dist/cjs/components/credits/context/utils.js.map +3 -3
  10. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  11. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
  12. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js +2 -0
  13. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js.map +7 -0
  14. package/dist/cjs/components/credits/creditsBenefits/index.js +3 -3
  15. package/dist/cjs/components/credits/creditsBenefits/index.js.map +2 -2
  16. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
  17. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  18. package/dist/cjs/components/credits/creditsFaq/index.js +1 -1
  19. package/dist/cjs/components/credits/creditsFaq/index.js.map +3 -3
  20. package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
  21. package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
  22. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  23. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
  24. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
  25. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
  26. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.d.ts +7 -0
  27. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.js +2 -0
  28. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.js.map +7 -0
  29. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  30. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +3 -3
  31. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  32. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +3 -3
  33. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  34. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
  35. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  36. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  37. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  38. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  39. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  40. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +3 -3
  41. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  42. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  43. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  44. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  45. package/dist/cjs/components/credits/modal/MyRewardsModal.js +1 -1
  46. package/dist/cjs/components/credits/modal/MyRewardsModal.js.map +3 -3
  47. package/dist/cjs/components/credits/modal/activitiesModal.js +1 -1
  48. package/dist/cjs/components/credits/modal/activitiesModal.js.map +3 -3
  49. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  50. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  51. package/dist/cjs/components/credits/modal/modalContainer.js +1 -1
  52. package/dist/cjs/components/credits/modal/modalContainer.js.map +3 -3
  53. package/dist/cjs/components/credits/modal/subscribeModal.js +1 -1
  54. package/dist/cjs/components/credits/modal/subscribeModal.js.map +3 -3
  55. package/dist/cjs/components/credits/modal/tip.js +1 -1
  56. package/dist/cjs/components/credits/modal/tip.js.map +3 -3
  57. package/dist/cjs/components/index.d.ts +2 -2
  58. package/dist/cjs/components/index.js +1 -1
  59. package/dist/cjs/components/index.js.map +2 -2
  60. package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
  61. package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
  62. package/dist/cjs/components/registration/modalContainer.js +1 -1
  63. package/dist/cjs/components/registration/modalContainer.js.map +3 -3
  64. package/dist/cjs/constants.d.ts +1 -0
  65. package/dist/cjs/constants.js +2 -0
  66. package/dist/cjs/constants.js.map +7 -0
  67. package/dist/cjs/helpers/fetchResponse.d.ts +14 -0
  68. package/dist/cjs/helpers/fetchResponse.js +2 -0
  69. package/dist/cjs/helpers/fetchResponse.js.map +7 -0
  70. package/dist/cjs/helpers/fetcher.d.ts +2 -0
  71. package/dist/cjs/helpers/fetcher.js +2 -0
  72. package/dist/cjs/helpers/fetcher.js.map +7 -0
  73. package/dist/cjs/helpers/index.d.ts +2 -0
  74. package/dist/cjs/helpers/index.js +2 -0
  75. package/dist/cjs/helpers/index.js.map +7 -0
  76. package/dist/cjs/helpers/track.d.ts +19 -0
  77. package/dist/cjs/helpers/track.js +2 -0
  78. package/dist/cjs/helpers/track.js.map +7 -0
  79. package/dist/cjs/helpers/utils.d.ts +3 -0
  80. package/dist/cjs/helpers/utils.js +2 -0
  81. package/dist/cjs/helpers/utils.js.map +7 -0
  82. package/dist/cjs/index.d.ts +3 -2
  83. package/dist/cjs/index.js +1 -1
  84. package/dist/cjs/index.js.map +2 -2
  85. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.d.ts +1 -0
  86. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js +2 -0
  87. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js.map +7 -0
  88. package/dist/esm/components/credits/context/hooks/useSubscriptions.d.ts +9 -0
  89. package/dist/esm/components/credits/context/hooks/useSubscriptions.js +2 -0
  90. package/dist/esm/components/credits/context/hooks/useSubscriptions.js.map +7 -0
  91. package/dist/esm/components/credits/context/utils.d.ts +4 -0
  92. package/dist/esm/components/credits/context/utils.js +1 -1
  93. package/dist/esm/components/credits/context/utils.js.map +3 -3
  94. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  95. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
  96. package/dist/esm/components/credits/creditsBenefits/benefitItem.js +2 -0
  97. package/dist/esm/components/credits/creditsBenefits/benefitItem.js.map +7 -0
  98. package/dist/esm/components/credits/creditsBenefits/index.js +3 -3
  99. package/dist/esm/components/credits/creditsBenefits/index.js.map +2 -2
  100. package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
  101. package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  102. package/dist/esm/components/credits/creditsFaq/index.js +1 -1
  103. package/dist/esm/components/credits/creditsFaq/index.js.map +3 -3
  104. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  105. package/dist/esm/components/credits/creditsInfoCard/index.js.map +2 -2
  106. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  107. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
  108. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
  109. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
  110. package/dist/esm/components/credits/creditsMemberPrice/Pagination.d.ts +7 -0
  111. package/dist/esm/components/credits/creditsMemberPrice/Pagination.js +2 -0
  112. package/dist/esm/components/credits/creditsMemberPrice/Pagination.js.map +7 -0
  113. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  114. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +2 -2
  115. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  116. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +2 -2
  117. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  118. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +2 -2
  119. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  120. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  121. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  122. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  123. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  124. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +2 -2
  125. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  126. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  127. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  128. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  129. package/dist/esm/components/credits/modal/MyRewardsModal.js +1 -1
  130. package/dist/esm/components/credits/modal/MyRewardsModal.js.map +2 -2
  131. package/dist/esm/components/credits/modal/activitiesModal.js +1 -1
  132. package/dist/esm/components/credits/modal/activitiesModal.js.map +3 -3
  133. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  134. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  135. package/dist/esm/components/credits/modal/modalContainer.js +1 -1
  136. package/dist/esm/components/credits/modal/modalContainer.js.map +3 -3
  137. package/dist/esm/components/credits/modal/subscribeModal.js +1 -1
  138. package/dist/esm/components/credits/modal/subscribeModal.js.map +3 -3
  139. package/dist/esm/components/credits/modal/tip.js +1 -1
  140. package/dist/esm/components/credits/modal/tip.js.map +3 -3
  141. package/dist/esm/components/index.d.ts +2 -2
  142. package/dist/esm/components/index.js +1 -1
  143. package/dist/esm/components/index.js.map +2 -2
  144. package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
  145. package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
  146. package/dist/esm/components/registration/modalContainer.js +1 -1
  147. package/dist/esm/components/registration/modalContainer.js.map +3 -3
  148. package/dist/esm/constants.d.ts +1 -0
  149. package/dist/esm/constants.js +2 -0
  150. package/dist/esm/constants.js.map +7 -0
  151. package/dist/esm/helpers/fetchResponse.d.ts +14 -0
  152. package/dist/esm/helpers/fetchResponse.js +2 -0
  153. package/dist/esm/helpers/fetchResponse.js.map +7 -0
  154. package/dist/esm/helpers/fetcher.d.ts +2 -0
  155. package/dist/esm/helpers/fetcher.js +2 -0
  156. package/dist/esm/helpers/fetcher.js.map +7 -0
  157. package/dist/esm/helpers/index.d.ts +2 -0
  158. package/dist/esm/helpers/index.js +2 -0
  159. package/dist/esm/helpers/index.js.map +7 -0
  160. package/dist/esm/helpers/track.d.ts +19 -0
  161. package/dist/esm/helpers/track.js +2 -0
  162. package/dist/esm/helpers/track.js.map +7 -0
  163. package/dist/esm/helpers/utils.d.ts +3 -0
  164. package/dist/esm/helpers/utils.js +2 -0
  165. package/dist/esm/helpers/utils.js.map +7 -0
  166. package/dist/esm/index.d.ts +3 -2
  167. package/dist/esm/index.js +1 -1
  168. package/dist/esm/index.js.map +2 -2
  169. package/package.json +3 -3
  170. package/src/components/credits/context/utils.ts +9 -0
  171. package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +21 -18
  172. package/src/components/credits/creditsBenefits/BenefitItem.tsx +3 -2
  173. package/src/components/credits/creditsBenefits/index.tsx +1 -1
  174. package/src/components/credits/creditsCash/RedeemableItem.tsx +9 -4
  175. package/src/components/credits/creditsFaq/index.tsx +2 -1
  176. package/src/components/credits/creditsInfoCard/index.tsx +2 -1
  177. package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +37 -112
  178. package/src/components/credits/creditsMemberPrice/MemberPriceItem.tsx +32 -9
  179. package/src/components/credits/creditsMemberPrice/Pagination.tsx +113 -0
  180. package/src/components/credits/creditsRedeemList/AddressForm/CountrySelect.tsx +2 -1
  181. package/src/components/credits/creditsRedeemList/AddressForm/StateSelect.tsx +2 -1
  182. package/src/components/credits/creditsRedeemList/AddressForm/index.tsx +2 -1
  183. package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +2 -1
  184. package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +2 -1
  185. package/src/components/credits/creditsRedeemList/RedeemProductModal/Success.tsx +2 -1
  186. package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +2 -1
  187. package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +14 -3
  188. package/src/components/credits/modal/MyRewardsModal.tsx +2 -1
  189. package/src/components/credits/modal/activitiesModal.tsx +2 -1
  190. package/src/components/credits/modal/creditsUploadReceiptModal.tsx +2 -1
  191. package/src/components/credits/modal/modalContainer.tsx +2 -1
  192. package/src/components/credits/modal/subscribeModal.tsx +2 -1
  193. package/src/components/credits/modal/tip.tsx +2 -1
  194. package/src/components/index.ts +2 -2
  195. package/src/components/registration/authCodeActivate/index.tsx +1 -1
  196. package/src/components/registration/modalContainer.tsx +2 -1
  197. package/src/constants.ts +1 -0
  198. package/src/index.ts +3 -2
  199. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js +0 -2
  200. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js.map +0 -7
  201. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js +0 -2
  202. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js.map +0 -7
  203. /package/dist/cjs/components/credits/creditsBenefits/{BenefitItem.d.ts → benefitItem.d.ts} +0 -0
  204. /package/dist/cjs/components/credits/creditsBenefits/{IconInfo.d.ts → iconInfo.d.ts} +0 -0
  205. /package/dist/cjs/components/credits/creditsBenefits/{IconInfo.js → iconInfo.js} +0 -0
  206. /package/dist/cjs/components/credits/creditsBenefits/{IconInfo.js.map → iconInfo.js.map} +0 -0
  207. /package/dist/cjs/templates/{Credits.d.ts → credits.d.ts} +0 -0
  208. /package/dist/cjs/templates/{Credits.js → credits.js} +0 -0
  209. /package/dist/cjs/templates/{Credits.js.map → credits.js.map} +0 -0
  210. /package/dist/esm/components/credits/creditsBenefits/{BenefitItem.d.ts → benefitItem.d.ts} +0 -0
  211. /package/dist/esm/components/credits/creditsBenefits/{IconInfo.d.ts → iconInfo.d.ts} +0 -0
  212. /package/dist/esm/components/credits/creditsBenefits/{IconInfo.js → iconInfo.js} +0 -0
  213. /package/dist/esm/components/credits/creditsBenefits/{IconInfo.js.map → iconInfo.js.map} +0 -0
  214. /package/dist/esm/templates/{Credits.d.ts → credits.d.ts} +0 -0
  215. /package/dist/esm/templates/{Credits.js → credits.js} +0 -0
  216. /package/dist/esm/templates/{Credits.js.map → credits.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx"],
4
- "sourcesContent": ["import { Button, Container, Heading, Picture, Text } from '@anker-in/headless-ui'\nimport { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'\nimport { motion } from 'framer-motion'\nimport { useMemo, useState } from 'react'\n\nimport { TaskType, type CreditsAnkersolixTaskProps } from './type'\nimport { useActions } from '../creditsWaysToGetCredits/useActions'\nimport { useCreditsContext } from '../context/provider'\nimport { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'\nimport { useRegistration } from '../../registration'\nimport { CreditsUploadReceiptModal } from '../modal/creditsUploadReceiptModal'\nimport { CreditsSubscribeModal } from '../modal/subscribeModal'\n\nexport const CreditsAnkersolixTask = ({ copy, classNames, id }: CreditsAnkersolixTaskProps & { id?: string }) => {\n const [showMore, setShowMore] = useState(false)\n const { profile } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const isLogin = !!profile\n\n const [isUploadReceiptModalOpen, setIsUploadReceiptModalOpen] = useState(false)\n const [isSubscribeModalOpen, setIsSubscribeModalOpen] = useState(false)\n const [isSubscribeSuccess, setIsSubscribeSuccess] = useState(false)\n const [isUploadReceiptSuccess, setIsUploadReceiptSuccess] = useState(false)\n\n const { actions } = useActions({\n copy,\n subscribe: {\n openSubscribePopup: () => setIsSubscribeModalOpen(true),\n isSuccess: isSubscribeSuccess,\n },\n uploadReceipt: {\n openUploadReceiptPopup: () => setIsUploadReceiptModalOpen(true),\n isSuccess: isUploadReceiptSuccess,\n },\n })\n const list = useMemo(() => {\n const list = copy.list\n .map(item => {\n if (!actions[item.id as keyof typeof actions]) {\n return undefined\n }\n const { finished, notLogin, notFinished, completed } = actions[item.id as keyof typeof actions]\n let buttonLabel = ''\n let handleClick = undefined\n let link = undefined\n if (!isLogin) {\n buttonLabel = notLogin.buttonLabel\n handleClick = notLogin.handleClick\n } else if (finished) {\n buttonLabel = completed.buttonLabel\n handleClick = undefined\n } else {\n buttonLabel = notFinished.buttonLabel\n handleClick = notFinished.handleClick\n link = (notFinished as { link: string }).link\n }\n return {\n ...item,\n buttonLabel,\n handleClick,\n finished,\n link,\n }\n })\n .filter(Boolean) as {\n title: string\n credits: string\n id: TaskType\n buttonLabel: string\n finished: boolean\n link: string\n handleClick: (() => void) | undefined\n }[]\n\n // \u767B\u5F55\u540E\uFF0C\u4FDD\u7559\u539F\u987A\u5E8F\uFF0C\u5C06\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u653E\u5728\u6700\u540E\n if (isLogin) {\n return list.sort((a, b) => {\n if (a?.finished && !b?.finished) {\n return 1 // a\u5DF2\u5B8C\u6210\uFF0Cb\u672A\u5B8C\u6210\uFF0Ca\u6392\u5728\u540E\u9762\n }\n if (!a?.finished && b?.finished) {\n return -1 // a\u672A\u5B8C\u6210\uFF0Cb\u5DF2\u5B8C\u6210\uFF0Ca\u6392\u5728\u524D\u9762\n }\n return 0 // \u90FD\u5DF2\u5B8C\u6210\u6216\u90FD\u672A\u5B8C\u6210\uFF0C\u4FDD\u6301\u539F\u987A\u5E8F\n })\n } else {\n return list\n }\n }, [actions, copy.list, isLogin])\n\n // \u53EA\u6709\u5927\u4E8E3\u4E2A\u4EFB\u52A1\u65F6\u624D\u663E\u793A\u8499\u5C42\n const shouldShowMask = list.length > 3\n\n return (\n <Container id={id} className=\"[&>div]:l:!px-0 bg-[#F5F5F7]\">\n <Heading as=\"h2\" size=\"4\" html={copy.title} className='md:px-[16px]'/>\n <div\n className={cn(\n 'mt-[24px] p-[32px] md-l:p-[32px] md:p-[16px] relative overflow-hidden',\n rounded ? 'rounded-[8px]' : '',\n !rounded && 'l:rounded-none'\n )}\n style={{\n background: 'linear-gradient(180deg, rgba(255, 241, 214, 0) 39.51%, #F4CA81 119.53%)',\n }}\n >\n {/* \u5F84\u5411\u6E10\u53D8\u80CC\u666F\u5C42 - \u4F7F\u7528\u4F2A\u5143\u7D20\u6A21\u62DF */}\n <div\n className=\"absolute inset-0 pointer-events-none -z-10\"\n style={{\n background: 'radial-gradient(ellipse 130% 205% at 45% -20%, #FFF6EA 0%, #FFFFFF 73%, #FFF1D6 100%)',\n }}\n />\n {/* \u526F\u6807\u9898\u548C\u88C5\u9970\u56FE\u90E8\u5206 */}\n <div className=\"flex items-center justify-between h-[560px] md:h-auto md:flex-col md:items-start l:h-auto l:mb-[16px] l:flex-col-reverse l:items-start\">\n <div className=\"flex flex-col gap-[8px]\">\n <Heading\n as=\"h3\"\n size={4}\n html={copy?.subtitle}\n className=\"text-[32px] font-bold text-[#080a0f] tracking-[-1.28px] leading-[1.2] xl:text-[24px]\"\n />\n <div className=\"flex items-center gap-[8px]\">\n <p\n className=\"text-[48px] font-bold tracking-[-1.92px] leading-none bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-43% to-[#00db84] bg-clip-text text-transparent xl-xxl:text-[40px] l-xl:text-[32px] l:text-[24px]\"\n dangerouslySetInnerHTML={{ __html: copy.equalCredits }}\n />\n </div>\n </div>\n {copy.mainImage?.url && (\n <Picture className=\"w-full max-w-[50%] md:max-w-full md:mt-[24px] l:max-w-full l:mt-[24px]\" source={copy.mainImage.url} />\n )}\n </div>\n\n {/* \u5361\u7247\u5217\u8868 */}\n <div className=\"relative\">\n <motion.div\n className={cn(\n 'grid grid-cols-3 gap-[16px] overflow-hidden md:grid-cols-1 md-l:grid-cols-2 min-md:!h-auto'\n )}\n initial={{ height: shouldShowMask ? 512 : 'auto' }}\n animate={{ height: showMore || !shouldShowMask ? 'auto' : 512 }}\n transition={{ duration: 0.3 }}\n onAnimationComplete={() => {\n if (!showMore && shouldShowMask && window.screen.width < 768) {\n const section = document.getElementById(id || 'ankersolix-task')\n if (section) {\n section.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }\n }\n }}\n >\n {list.map(item => (\n <div\n key={item.id}\n className={cn(\n 'flex min-h-[241px] xl-xxl:min-h-[192px] l:min-h-[160px] l-xl:min-h-[170px] flex-col justify-between bg-white p-[32px] md:p-[16px] l:p-[24px]',\n rounded ? '' : ''\n )}\n >\n <div>\n <Heading\n as=\"h4\"\n html={item.title}\n size={2}\n className=\"text-[24px] font-bold text-[#080a0f] tracking-[-0.96px] leading-[1.2] text-pretty md:text-[18px] l:text-[20px]\"\n />\n <div className=\"mt-[8px] flex items-center gap-[4px]\">\n <Picture\n className=\"size-[24px] [&_path]:size-full\"\n source=\"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/20250902-153351.png?v=1756798450\"\n />\n <Text\n as=\"p\"\n html={item.credits}\n size={2}\n className=\"text-[18px] font-bold text-[#080a0f] tracking-[-0.36px] leading-[1.4] md:text-[16px]\"\n />\n </div>\n </div>\n\n {item.handleClick &&\n !(item.id === TaskType.UploadReceipt && isUploadReceiptSuccess) &&\n !(item.id === TaskType.Activate && authCodeActivate.isActivateSuccess) &&\n !(item.id === TaskType.Subscribe && isSubscribeSuccess) ? (\n <Button\n as={item.link ? 'a' : 'button'}\n {...(item.link && { href: item.link })}\n {...(item.handleClick && { onClick: item.handleClick })}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[24px] w-fit bg-[#080a0f] text-white text-[16px] font-bold tracking-[-0.64px] leading-[1.2]\"\n >\n {item.buttonLabel}\n </Button>\n ) : (\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[24px] w-fit bg-[#080a0f] text-white text-[16px] font-bold tracking-[-0.64px] leading-[1.2]\"\n disabled\n >\n {item.buttonLabel}\n </Button>\n )}\n </div>\n ))}\n {!showMore && shouldShowMask && (\n <div\n className=\"absolute inset-0 pointer-events-none min-md:hidden\"\n style={{ background: 'linear-gradient(180deg, rgba(244, 202, 129, 0) 66.37%, #f4ca81 100%)' }}\n ></div>\n )}\n </motion.div>\n {shouldShowMask && (\n <>\n {showMore ? (\n <button\n className=\"mx-auto mt-[12px] block w-fit min-md:hidden\"\n onClick={() => {\n setShowMore(false)\n }}\n >\n <ChevronUpIcon className=\"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]\"></ChevronUpIcon>\n </button>\n ) : (\n <>\n <div className=\"absolute bottom-0 flex w-full translate-y-1/2 justify-center min-md:hidden\">\n <button className=\"w-fit\" onClick={() => setShowMore(!showMore)}>\n <ChevronDownIcon className=\"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]\"></ChevronDownIcon>\n </button>\n </div>\n </>\n )}\n </>\n )}\n </div>\n </div>\n {copy.receipt && (\n <CreditsUploadReceiptModal\n isOpen={isUploadReceiptModalOpen}\n onClose={() => {\n setIsUploadReceiptModalOpen(false)\n }}\n copy={copy.receipt}\n onSuccess={() => {\n setIsUploadReceiptSuccess(true)\n }}\n />\n )}\n {copy.subscribe && (\n <CreditsSubscribeModal\n copy={copy.subscribe}\n onSuccess={() => {\n setIsSubscribeSuccess(true)\n setTimeout(() => {\n setIsSubscribeModalOpen(false)\n }, 3000)\n }}\n isOpen={isSubscribeModalOpen}\n onClose={() => {\n setIsSubscribeModalOpen(false)\n }}\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["Fragment", "jsx", "jsxs", "Button", "Container", "Heading", "Picture", "Text", "ChevronDownIcon", "ChevronUpIcon", "motion", "useMemo", "useState", "TaskType", "useActions", "useCreditsContext", "cn", "useHeadlessContext", "ROUNDED_BRANDS", "useRegistration", "CreditsUploadReceiptModal", "CreditsSubscribeModal", "CreditsAnkersolixTask", "copy", "classNames", "id", "showMore", "setShowMore", "profile", "authCodeActivate", "brand", "rounded", "isLogin", "isUploadReceiptModalOpen", "setIsUploadReceiptModalOpen", "isSubscribeModalOpen", "setIsSubscribeModalOpen", "isSubscribeSuccess", "setIsSubscribeSuccess", "isUploadReceiptSuccess", "setIsUploadReceiptSuccess", "actions", "list", "item", "finished", "notLogin", "notFinished", "completed", "buttonLabel", "handleClick", "link", "a", "b", "shouldShowMask", "section"]
4
+ "sourcesContent": ["import { Button, Container, Heading, Picture, Text } from '@anker-in/headless-ui'\nimport { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'\nimport { motion } from 'framer-motion'\nimport { useMemo, useState } from 'react'\n\nimport { TaskType, type CreditsAnkersolixTaskProps } from './type'\nimport { useActions } from '../creditsWaysToGetCredits/useActions'\nimport { useCreditsContext } from '../context/provider'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { useRegistration } from '../../registration'\nimport { CreditsUploadReceiptModal } from '../modal/creditsUploadReceiptModal'\nimport { CreditsSubscribeModal } from '../modal/subscribeModal'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport const CreditsAnkersolixTask = ({ copy, classNames, id }: CreditsAnkersolixTaskProps & { id?: string }) => {\n const [showMore, setShowMore] = useState(false)\n const { profile } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const isLogin = !!profile\n\n const [isUploadReceiptModalOpen, setIsUploadReceiptModalOpen] = useState(false)\n const [isSubscribeModalOpen, setIsSubscribeModalOpen] = useState(false)\n const [isSubscribeSuccess, setIsSubscribeSuccess] = useState(false)\n const [isUploadReceiptSuccess, setIsUploadReceiptSuccess] = useState(false)\n\n const { actions } = useActions({\n copy,\n subscribe: {\n openSubscribePopup: () => setIsSubscribeModalOpen(true),\n isSuccess: isSubscribeSuccess,\n },\n uploadReceipt: {\n openUploadReceiptPopup: () => setIsUploadReceiptModalOpen(true),\n isSuccess: isUploadReceiptSuccess,\n },\n })\n const list = useMemo(() => {\n const list = copy.list\n .map(item => {\n if (!actions[item.id as keyof typeof actions]) {\n return undefined\n }\n const { finished, notLogin, notFinished, completed } = actions[item.id as keyof typeof actions]\n let buttonLabel = ''\n let handleClick = undefined\n let link = undefined\n if (!isLogin) {\n buttonLabel = notLogin.buttonLabel\n handleClick = notLogin.handleClick\n } else if (finished) {\n buttonLabel = completed.buttonLabel\n handleClick = undefined\n } else {\n buttonLabel = notFinished.buttonLabel\n handleClick = notFinished.handleClick\n link = (notFinished as { link: string }).link\n }\n return {\n ...item,\n buttonLabel,\n handleClick,\n finished,\n link,\n }\n })\n .filter(Boolean) as {\n title: string\n credits: string\n id: TaskType\n buttonLabel: string\n finished: boolean\n link: string\n handleClick: (() => void) | undefined\n }[]\n\n // \u767B\u5F55\u540E\uFF0C\u4FDD\u7559\u539F\u987A\u5E8F\uFF0C\u5C06\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u653E\u5728\u6700\u540E\n if (isLogin) {\n return list.sort((a, b) => {\n if (a?.finished && !b?.finished) {\n return 1 // a\u5DF2\u5B8C\u6210\uFF0Cb\u672A\u5B8C\u6210\uFF0Ca\u6392\u5728\u540E\u9762\n }\n if (!a?.finished && b?.finished) {\n return -1 // a\u672A\u5B8C\u6210\uFF0Cb\u5DF2\u5B8C\u6210\uFF0Ca\u6392\u5728\u524D\u9762\n }\n return 0 // \u90FD\u5DF2\u5B8C\u6210\u6216\u90FD\u672A\u5B8C\u6210\uFF0C\u4FDD\u6301\u539F\u987A\u5E8F\n })\n } else {\n return list\n }\n }, [actions, copy.list, isLogin])\n\n // \u53EA\u6709\u5927\u4E8E3\u4E2A\u4EFB\u52A1\u65F6\u624D\u663E\u793A\u8499\u5C42\n const shouldShowMask = list.length > 3\n\n return (\n <Container id={id} className=\"bg-[#F5F5F7]\">\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n <div\n className={cn(\n 'mt-[24px] p-[32px] md-l:p-[32px] md:p-[16px] relative overflow-hidden',\n rounded ? 'rounded-[8px]' : '',\n !rounded && 'l:rounded-none'\n )}\n style={{\n background: 'linear-gradient(180deg, rgba(255, 241, 214, 0) 39.51%, #F4CA81 119.53%)',\n }}\n >\n {/* \u5F84\u5411\u6E10\u53D8\u80CC\u666F\u5C42 - \u4F7F\u7528\u4F2A\u5143\u7D20\u6A21\u62DF */}\n <div\n className=\"absolute inset-0 pointer-events-none -z-10\"\n style={{\n background: 'radial-gradient(ellipse 130% 205% at 45% -20%, #FFF6EA 0%, #FFFFFF 73%, #FFF1D6 100%)',\n }}\n />\n {/* \u526F\u6807\u9898\u548C\u88C5\u9970\u56FE\u90E8\u5206 */}\n <div className=\"flex items-center justify-between xl-xxl:h-[448px] l-xl:h-[336px] h-[560px] l:h-auto md:flex-col md:items-start l:h-auto l:mb-[16px] l:flex-col-reverse l:items-start\">\n <div className=\"flex flex-col gap-[8px] l:mt-[8px]\">\n <Heading\n as=\"h3\"\n size={4}\n html={copy?.subtitle}\n className=\"text-[32px] font-bold text-[#080a0f] tracking-[-1.28px] leading-[1.2] xl:text-[24px]\"\n />\n <div className=\"flex items-center gap-[8px]\">\n <p\n className=\"text-[48px] font-bold tracking-[-1.92px] leading-none bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-43% to-[#00db84] bg-clip-text text-transparent xl-xxl:text-[40px] l-xl:text-[32px] l:text-[24px]\"\n dangerouslySetInnerHTML={{ __html: copy.equalCredits }}\n />\n </div>\n </div>\n {copy.mainImage?.url && (\n <Picture\n className=\"h-full object-contain l:mx-auto md:h-auto md:w-full md-l:h-[302px]\"\n imgClassName=\"!h-full !object-contain\"\n source={copy.mainImage.url}\n />\n )}\n </div>\n\n {/* \u5361\u7247\u5217\u8868 */}\n <div className=\"relative mt-[24px]\">\n <motion.div\n className={cn('grid grid-cols-3 gap-[16px] overflow-hidden md:grid-cols-1 md-l:grid-cols-2 min-md:!h-auto')}\n initial={{ height: shouldShowMask ? 512 : 'auto' }}\n animate={{ height: showMore || !shouldShowMask ? 'auto' : 512 }}\n transition={{ duration: 0.3 }}\n onAnimationComplete={() => {\n if (!showMore && shouldShowMask && window.screen.width < 768) {\n const section = document.getElementById(id || 'ankersolix-task')\n if (section) {\n section.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }\n }\n }}\n >\n {list.map(item => (\n <div\n key={item.id}\n className={cn(\n 'flex min-h-[241px] xl-xxl:min-h-[192px] l:min-h-[160px] l-xl:min-h-[170px] flex-col justify-between bg-white p-[32px] xl:p-[16px]',\n rounded ? 'rounded-[16px]' : ''\n )}\n >\n <div>\n <Text\n as=\"p\"\n html={item.title}\n size={2}\n className=\"text-pretty text-[24px] font-bold xxl:text-[20px]\"\n />\n <div className=\"mt-[8px] l:mt-[4px] flex items-center\">\n <Picture\n className=\"size-[24px] xxl:size-[18px] [&_path]:size-full\"\n source=\"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/20250902-153351.png?v=1756798450\"\n />\n <Text\n as=\"p\"\n html={item.credits}\n size={2}\n className=\"ml-[4px] mt-[6px] text-[18px] xxl:text-[14px]\"\n />\n </div>\n </div>\n\n {item.handleClick &&\n !(item.id === TaskType.UploadReceipt && isUploadReceiptSuccess) &&\n !(item.id === TaskType.Activate && authCodeActivate.isActivateSuccess) &&\n !(item.id === TaskType.Subscribe && isSubscribeSuccess) ? (\n <Button\n as={item.link ? 'a' : 'button'}\n {...(item.link && { href: item.link })}\n {...(item.handleClick && { onClick: item.handleClick })}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[24px] w-fit bg-[#080a0f] text-white text-[16px] font-bold tracking-[-0.64px] leading-[1.2]\"\n >\n {item.buttonLabel}\n </Button>\n ) : (\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[24px] w-fit bg-[#080a0f] text-white text-[16px] font-bold tracking-[-0.64px] leading-[1.2]\"\n disabled\n >\n {item.buttonLabel}\n </Button>\n )}\n </div>\n ))}\n {!showMore && shouldShowMask && (\n <div\n className=\"absolute inset-0 pointer-events-none min-md:hidden\"\n style={{ background: 'linear-gradient(180deg, rgba(244, 202, 129, 0) 66.37%, #f4ca81 100%)' }}\n ></div>\n )}\n </motion.div>\n {shouldShowMask && (\n <>\n {showMore ? (\n <button\n className=\"mx-auto mt-[12px] block w-fit min-md:hidden\"\n onClick={() => {\n setShowMore(false)\n }}\n >\n <ChevronUpIcon className=\"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]\"></ChevronUpIcon>\n </button>\n ) : (\n <>\n <div className=\"absolute bottom-0 flex w-full translate-y-1/2 justify-center min-md:hidden\">\n <button className=\"w-fit\" onClick={() => setShowMore(!showMore)}>\n <ChevronDownIcon className=\"size-[40px] rounded-full bg-[#FFFFFF33] p-[8px]\"></ChevronDownIcon>\n </button>\n </div>\n </>\n )}\n </>\n )}\n </div>\n </div>\n {copy.receipt && (\n <CreditsUploadReceiptModal\n isOpen={isUploadReceiptModalOpen}\n onClose={() => {\n setIsUploadReceiptModalOpen(false)\n }}\n copy={copy.receipt}\n onSuccess={() => {\n setIsUploadReceiptSuccess(true)\n }}\n />\n )}\n {copy.subscribe && (\n <CreditsSubscribeModal\n copy={copy.subscribe}\n onSuccess={() => {\n setIsSubscribeSuccess(true)\n setTimeout(() => {\n setIsSubscribeModalOpen(false)\n }, 3000)\n }}\n isOpen={isSubscribeModalOpen}\n onClose={() => {\n setIsSubscribeModalOpen(false)\n }}\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "Button", "Container", "Heading", "Picture", "Text", "ChevronDownIcon", "ChevronUpIcon", "motion", "useMemo", "useState", "TaskType", "useActions", "useCreditsContext", "cn", "useHeadlessContext", "useRegistration", "CreditsUploadReceiptModal", "CreditsSubscribeModal", "ROUNDED_BRANDS", "CreditsAnkersolixTask", "copy", "classNames", "id", "showMore", "setShowMore", "profile", "authCodeActivate", "brand", "rounded", "isLogin", "isUploadReceiptModalOpen", "setIsUploadReceiptModalOpen", "isSubscribeModalOpen", "setIsSubscribeModalOpen", "isSubscribeSuccess", "setIsSubscribeSuccess", "isUploadReceiptSuccess", "setIsUploadReceiptSuccess", "actions", "list", "item", "finished", "notLogin", "notFinished", "completed", "buttonLabel", "handleClick", "link", "a", "b", "shouldShowMask", "section"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{jsx as t,jsxs as i}from"react/jsx-runtime";import{Heading as u,Picture as g,Text as r}from"@anker-in/headless-ui";import{classNames as n,useHeadlessContext as v}from"@anker-in/lib";import F from"./IconInfo";import{ROUNDED_BRANDS as N}from"../../../constants";const h=({item:e,handleClick:x,isNoteActive:m,index:p,bigIcon:c,cardBgColor:l,cardBorderColor:d})=>{const{brand:b}=v(),s=N.includes(b),f=c?"mb-[16px] size-[64px] xl-xxl:size-[54px] xl:size-[48px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0":"mb-[16px] size-[31px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0";console.log("cardBgColor in BenefitItem",l);const o={};return l?o.background=l:o.background="linear-gradient(119.61deg, #FAFAFA 38.58%, #FFFFFF 63.73%, #F9FCFF 89.37%)",d&&(o.borderColor=d),t("div",{className:n("relative flex-1 flex flex-col rounded-[16px] border border-white px-[24px] pb-[26px] pt-[24px] md:min-h-[180px] md:p-[16px]",!s&&"rounded-none"),style:o,children:i("div",{className:"flex flex-col",children:[t(g,{className:f,alt:e.icon?.alt,source:e.icon?.url}),i("div",{className:"flex items-center",children:[t(u,{html:e.text,size:"2",className:"break-all md-l:line-clamp-3"}),e.note&&i("div",{role:"button",tabIndex:0,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&a.preventDefault()},className:"relative mb-1 ml-[4px]",onClick:()=>x({item:e,index:p}),children:[t(F,{}),t("div",{className:n("absolute -bottom-[12px] left-[32px] z-10 w-[356px] -translate-x-full translate-y-full md:w-[276px]",m?"block":"hidden"),children:i("div",{className:n("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow",!s&&"rounded-none"),children:[t(r,{as:"p",size:"2",html:e.note,className:"desktop:text-[18px]"}),t("div",{className:n("absolute -top-[10px] right-[9px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]",!s&&"rounded-none")})]})})]})]}),e.tag&&t(r,{as:"div",html:e.tag,className:"mt-[2px] text-[16px] font-bold text-[#6D6D6F]"})]})})};var z=h;export{z as default};
2
+ //# sourceMappingURL=BenefitItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/creditsBenefits/BenefitItem.tsx"],
4
+ "sourcesContent": ["import { Heading, Picture, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport IconInfo from './IconInfo'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport interface BenefitItemCopy {\n icon: {\n alt: string\n url: string\n }\n text: string\n note?: string\n tag?: string\n}\nconst BenefitItem = ({\n item,\n handleClick,\n isNoteActive,\n index,\n bigIcon,\n cardBgColor,\n cardBorderColor,\n}: {\n item: BenefitItemCopy\n handleClick: ({ item, index }: { item: BenefitItemCopy; index: number }) => void\n isNoteActive: boolean\n index: number\n bigIcon?: boolean\n cardBgColor?: string\n cardBorderColor?: string\n}) => {\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n // \u6839\u636E bigIcon \u8BBE\u7F6E\u4E0D\u540C\u5C4F\u5E55\u4E0B\u7684\u56FE\u6807\u5927\u5C0F\n // \u5C3A\u5BF8\uFF1A\u22651921px=64px, 1441-1920px=54px, \u22641440px=48px\n const iconSizeClass = bigIcon\n ? 'mb-[16px] size-[64px] xl-xxl:size-[54px] xl:size-[48px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0'\n : 'mb-[16px] size-[31px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0'\n\n console.log('cardBgColor in BenefitItem', cardBgColor)\n // \u80CC\u666F\u8272\u548C\u8FB9\u6846\u8272\u5904\u7406\n const cardStyle: React.CSSProperties = {}\n if (cardBgColor) {\n cardStyle.background = cardBgColor\n } else {\n cardStyle.background = 'linear-gradient(119.61deg, #FAFAFA 38.58%, #FFFFFF 63.73%, #F9FCFF 89.37%)'\n }\n if (cardBorderColor) {\n cardStyle.borderColor = cardBorderColor\n }\n\n return (\n <div\n className={cn(\n 'relative flex-1 flex flex-col rounded-[16px] border border-white px-[24px] pb-[26px] pt-[24px] md:min-h-[180px] md:p-[16px]',\n !rounded && 'rounded-none'\n )}\n style={cardStyle}\n >\n <div className=\"flex flex-col\">\n <Picture className={iconSizeClass} alt={item.icon?.alt} source={item.icon?.url} />\n <div className=\"flex items-center\">\n <Heading html={item.text} size=\"2\" className=\"break-all md-l:line-clamp-3\" />\n {item.note && (\n <div\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n className=\"relative mb-1 ml-[4px]\"\n onClick={() => handleClick({ item, index })}\n >\n <IconInfo />\n <div\n className={cn(\n 'absolute -bottom-[12px] left-[32px] z-10 w-[356px] -translate-x-full translate-y-full md:w-[276px]',\n isNoteActive ? '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 as=\"p\" size=\"2\" html={item.note} className=\"desktop:text-[18px]\" />\n <div\n className={cn(\n 'absolute -top-[10px] right-[9px] 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 {item.tag && <Text as=\"div\" html={item.tag} className=\"mt-[2px] text-[16px] font-bold text-[#6D6D6F]\" />}\n </div>\n </div>\n )\n}\n\nexport default BenefitItem\n"],
5
+ "mappings": "AA6DQ,cAAAA,EAsBQ,QAAAC,MAtBR,oBA7DR,OAAS,WAAAC,EAAS,WAAAC,EAAS,QAAAC,MAAY,wBACvC,OAAS,cAAcC,EAAI,sBAAAC,MAA0B,gBACrD,OAAOC,MAAc,aACrB,OAAS,kBAAAC,MAAsB,qBAW/B,MAAMC,EAAc,CAAC,CACnB,KAAAC,EACA,YAAAC,EACA,aAAAC,EACA,MAAAC,EACA,QAAAC,EACA,YAAAC,EACA,gBAAAC,CACF,IAQM,CACJ,KAAM,CAAE,MAAAC,CAAM,EAAIX,EAAmB,EAC/BY,EAAUV,EAAe,SAASS,CAAK,EAIvCE,EAAgBL,EAClB,+GACA,6EAEJ,QAAQ,IAAI,6BAA8BC,CAAW,EAErD,MAAMK,EAAiC,CAAC,EACxC,OAAIL,EACFK,EAAU,WAAaL,EAEvBK,EAAU,WAAa,6EAErBJ,IACFI,EAAU,YAAcJ,GAIxBhB,EAAC,OACC,UAAWK,EACT,8HACA,CAACa,GAAW,cACd,EACA,MAAOE,EAEP,SAAAnB,EAAC,OAAI,UAAU,gBACb,UAAAD,EAACG,EAAA,CAAQ,UAAWgB,EAAe,IAAKT,EAAK,MAAM,IAAK,OAAQA,EAAK,MAAM,IAAK,EAChFT,EAAC,OAAI,UAAU,oBACb,UAAAD,EAACE,EAAA,CAAQ,KAAMQ,EAAK,KAAM,KAAK,IAAI,UAAU,8BAA8B,EAC1EA,EAAK,MACJT,EAAC,OACC,KAAK,SACL,SAAU,EACV,UAAWoB,GAAK,EACVA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MACjCA,EAAE,eAAe,CAErB,EACA,UAAU,yBACV,QAAS,IAAMV,EAAY,CAAE,KAAAD,EAAM,MAAAG,CAAM,CAAC,EAE1C,UAAAb,EAACO,EAAA,EAAS,EACVP,EAAC,OACC,UAAWK,EACT,qGACAO,EAAe,QAAU,QAC3B,EAEA,SAAAX,EAAC,OACC,UAAWI,EACT,0FACA,CAACa,GAAW,cACd,EAEA,UAAAlB,EAACI,EAAA,CAAK,GAAG,IAAI,KAAK,IAAI,KAAMM,EAAK,KAAM,UAAU,sBAAsB,EACvEV,EAAC,OACC,UAAWK,EACT,mHACA,CAACa,GAAW,cACd,EACF,GACF,EACF,GACF,GAEJ,EACCR,EAAK,KAAOV,EAACI,EAAA,CAAK,GAAG,MAAM,KAAMM,EAAK,IAAK,UAAU,gDAAgD,GACxG,EACF,CAEJ,EAEA,IAAOY,EAAQb",
6
+ "names": ["jsx", "jsxs", "Heading", "Picture", "Text", "cn", "useHeadlessContext", "IconInfo", "ROUNDED_BRANDS", "BenefitItem", "item", "handleClick", "isNoteActive", "index", "bigIcon", "cardBgColor", "cardBorderColor", "brand", "rounded", "iconSizeClass", "cardStyle", "e", "BenefitItem_default"]
7
+ }
@@ -1,4 +1,4 @@
1
- import{jsx as r,jsxs as a}from"react/jsx-runtime";import"swiper/css";import"swiper/css/grid";import"swiper/css/pagination";import{Container as c,Heading as g}from"@anker-in/headless-ui";import{useState as u}from"react";import{Grid as f,Pagination as b}from"swiper/modules";import{Swiper as C,SwiperSlide as v}from"swiper/react";import s from"./BenefitItem";import{useCreditsContext as B}from"../context/provider";import{gaTrack as w,classNames as x}from"@anker-in/lib";const G=({copy:i,id:d})=>{const[o,n]=u(null),{profile:m,gtm:p}=B(),l=({item:t,index:e})=>{w({event:"ga4Event",event_name:"lp_button",member_active_status:m?.activated?"active":"not active",event_parameters:{page_group:p.pageGroup,position:i.title,button_name:t.text,info:""}}),o===e?n(null):(n(e),setTimeout(()=>{n(null)},5e3))};return a(c,{id:d,className:"!z-[30] bg-[#F5F5F7]",children:[r(g,{as:"h2",size:"4",html:i?.title}),r("div",{className:"mt-[24px] grid grid-cols-4 xl:grid-cols-3 gap-[16px] l:hidden items-stretch",children:i.benefits.map((t,e)=>r(s,{item:t,handleClick:l,isNoteActive:o===e,index:e,bigIcon:i.bigIcon,cardBgColor:i.cardBgColor,cardBorderColor:i.cardBorderColor},e))}),a("div",{className:"mt-[24px] hidden l:block",children:[r(C,{spaceBetween:16,slidesPerView:2,slidesPerGroup:2,grid:{rows:2,fill:"row"},breakpoints:{768:{slidesPerView:3,slidesPerGroup:3}},wrapperClass:"!items-stretch",modules:[f,b],pagination:{clickable:!0,el:"#benefits-pagination",renderBullet(t,e){return`<div class='${e} !flex justify-center size-[8px] rounded-full bg-[#D9D9D9] cursor-pointer items-center'>
2
- </div>`}},children:i.benefits.map((t,e)=>r(v,{className:x("!h-auto !flex",o===e&&"!z-[100]"),children:r(s,{item:t,handleClick:l,isNoteActive:o===e,index:e,bigIcon:i.bigIcon,cardBgColor:i.cardBgColor,cardBorderColor:i.cardBorderColor})},e))}),r("div",{id:"benefits-pagination",className:`mx-auto mt-[12px] grid !w-fit grid-flow-col [&_.swiper-pagination-bullet-active>div]:!bg-[#151515]
3
- [&_.swiper-pagination-bullet]:cursor-pointer [&_.swiper-pagination-bullet]:rounded-full`})]}),o&&r("div",{role:"button",tabIndex:0,className:"fixed inset-0 z-10",onClick:()=>n(null),onKeyDown:t=>t.key==="Escape"&&n(null)})]})};export{G as CreditsBenefits};
1
+ import{jsx as r,jsxs as a}from"react/jsx-runtime";import"swiper/css";import"swiper/css/grid";import"swiper/css/pagination";import{Container as c,Heading as g}from"@anker-in/headless-ui";import{useState as u}from"react";import{Grid as f,Pagination as b}from"swiper/modules";import{Swiper as C,SwiperSlide as v}from"swiper/react";import s from"./BenefitItem";import{useCreditsContext as B}from"../context/provider";import{gaTrack as w,classNames as x}from"@anker-in/lib";const G=({copy:t,id:d})=>{const[o,n]=u(null),{profile:m,gtm:p}=B(),l=({item:i,index:e})=>{w({event:"ga4Event",event_name:"lp_button",member_active_status:m?.activated?"active":"not active",event_parameters:{page_group:p.pageGroup,position:t.title,button_name:i.text,info:""}}),o===e?n(null):(n(e),setTimeout(()=>{n(null)},5e3))};return a(c,{id:d,className:"!z-[30] bg-[#F5F5F7]",children:[r(g,{as:"h2",size:"4",html:t?.title}),r("div",{className:"mt-[24px] grid grid-cols-4 gap-[16px] l:hidden items-stretch",children:t.benefits.map((i,e)=>r(s,{item:i,handleClick:l,isNoteActive:o===e,index:e,bigIcon:t.bigIcon,cardBgColor:t.cardBgColor,cardBorderColor:t.cardBorderColor},e))}),a("div",{className:"mt-[24px] hidden l:block",children:[r(C,{spaceBetween:16,slidesPerView:2,slidesPerGroup:2,grid:{rows:2,fill:"row"},breakpoints:{768:{slidesPerView:3,slidesPerGroup:3}},wrapperClass:"!items-stretch",modules:[f,b],pagination:{clickable:!0,el:"#benefits-pagination",renderBullet(i,e){return`<div class='${e} !flex justify-center size-[8px] rounded-full bg-[#D9D9D9] cursor-pointer items-center'>
2
+ </div>`}},children:t.benefits.map((i,e)=>r(v,{className:x("!h-auto !flex",o===e&&"!z-[100]"),children:r(s,{item:i,handleClick:l,isNoteActive:o===e,index:e,bigIcon:t.bigIcon,cardBgColor:t.cardBgColor,cardBorderColor:t.cardBorderColor})},e))}),r("div",{id:"benefits-pagination",className:`mx-auto mt-[12px] grid !w-fit grid-flow-col [&_.swiper-pagination-bullet-active>div]:!bg-[#151515]
3
+ [&_.swiper-pagination-bullet]:cursor-pointer [&_.swiper-pagination-bullet]:rounded-full`})]}),o&&r("div",{role:"button",tabIndex:0,className:"fixed inset-0 z-10",onClick:()=>n(null),onKeyDown:i=>i.key==="Escape"&&n(null)})]})};export{G as CreditsBenefits};
4
4
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsBenefits/index.tsx"],
4
- "sourcesContent": ["import 'swiper/css'\nimport 'swiper/css/grid'\nimport 'swiper/css/pagination'\n\nimport { Container, Heading } from '@anker-in/headless-ui'\nimport { useState } from 'react'\nimport { Grid, Pagination } from 'swiper/modules'\nimport { Swiper, SwiperSlide } from 'swiper/react'\n\nimport BenefitItem, { type BenefitItemCopy } from './BenefitItem'\nimport { useCreditsContext } from '../context/provider'\nimport { gaTrack, classNames as cn } from '@anker-in/lib'\n\nexport type CreditsBenefitsCopy = {\n title: string\n benefits: BenefitItemCopy[]\n bigIcon?: boolean\n cardBgColor?: string\n cardBorderColor?: string\n}\n\nexport const CreditsBenefits = ({ copy, id }: { copy: CreditsBenefitsCopy; id?: string }) => {\n const [activeNoteIndex, setActiveNoteIndex] = useState<number | null>(null)\n const { profile, gtm } = useCreditsContext()\n const handleClick = ({ item, index }: { item: BenefitItemCopy; index: number }) => {\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: gtm.pageGroup,\n position: copy.title,\n button_name: item.text,\n info: '',\n },\n })\n if (activeNoteIndex === index) {\n setActiveNoteIndex(null)\n } else {\n setActiveNoteIndex(index)\n setTimeout(() => {\n setActiveNoteIndex(null)\n }, 5000)\n }\n }\n\n return (\n <Container id={id} className=\"!z-[30] bg-[#F5F5F7]\">\n <Heading as=\"h2\" size=\"4\" html={copy?.title} />\n <div className=\"mt-[24px] grid grid-cols-4 xl:grid-cols-3 gap-[16px] l:hidden items-stretch\">\n {copy.benefits.map((item, index) => (\n <BenefitItem\n key={index}\n item={item}\n handleClick={handleClick}\n isNoteActive={activeNoteIndex === index}\n index={index}\n bigIcon={copy.bigIcon}\n cardBgColor={copy.cardBgColor}\n cardBorderColor={copy.cardBorderColor}\n />\n ))}\n </div>\n <div className=\"mt-[24px] hidden l:block\">\n <Swiper\n spaceBetween={16}\n slidesPerView={2}\n slidesPerGroup={2}\n grid={{\n rows: 2,\n fill: 'row',\n }}\n breakpoints={{\n 768: {\n slidesPerView: 3,\n slidesPerGroup: 3,\n },\n }}\n wrapperClass=\"!items-stretch\"\n modules={[Grid, Pagination]}\n pagination={{\n clickable: true,\n el: '#benefits-pagination',\n renderBullet(index, className) {\n return `<div class='${className} !flex justify-center size-[8px] rounded-full bg-[#D9D9D9] cursor-pointer items-center'>\n </div>`\n },\n }}\n >\n {copy.benefits.map((item, index) => (\n <SwiperSlide key={index} className={cn('!h-auto !flex', activeNoteIndex === index && '!z-[100]')}>\n <BenefitItem\n item={item}\n handleClick={handleClick}\n isNoteActive={activeNoteIndex === index}\n index={index}\n bigIcon={copy.bigIcon}\n cardBgColor={copy.cardBgColor}\n cardBorderColor={copy.cardBorderColor}\n />\n </SwiperSlide>\n ))}\n </Swiper>\n <div\n id=\"benefits-pagination\"\n className=\"mx-auto mt-[12px] grid !w-fit grid-flow-col [&_.swiper-pagination-bullet-active>div]:!bg-[#151515] \n [&_.swiper-pagination-bullet]:cursor-pointer [&_.swiper-pagination-bullet]:rounded-full\"\n ></div>\n </div>\n\n {activeNoteIndex && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"fixed inset-0 z-10\"\n onClick={() => setActiveNoteIndex(null)}\n onKeyDown={e => e.key === 'Escape' && setActiveNoteIndex(null)}\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "AAgDM,cAAAA,EAeA,QAAAC,MAfA,oBAhDN,MAAO,aACP,MAAO,kBACP,MAAO,wBAEP,OAAS,aAAAC,EAAW,WAAAC,MAAe,wBACnC,OAAS,YAAAC,MAAgB,QACzB,OAAS,QAAAC,EAAM,cAAAC,MAAkB,iBACjC,OAAS,UAAAC,EAAQ,eAAAC,MAAmB,eAEpC,OAAOC,MAA2C,gBAClD,OAAS,qBAAAC,MAAyB,sBAClC,OAAS,WAAAC,EAAS,cAAcC,MAAU,gBAUnC,MAAMC,EAAkB,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAAkD,CAC3F,KAAM,CAACC,EAAiBC,CAAkB,EAAIb,EAAwB,IAAI,EACpE,CAAE,QAAAc,EAAS,IAAAC,CAAI,EAAIT,EAAkB,EACrCU,EAAc,CAAC,CAAE,KAAAC,EAAM,MAAAC,CAAM,IAAgD,CACjFX,EAAQ,CACN,MAAO,WACP,WAAY,YACZ,qBAAsBO,GAAS,UAAY,SAAW,aACtD,iBAAkB,CAChB,WAAYC,EAAI,UAChB,SAAUL,EAAK,MACf,YAAaO,EAAK,KAClB,KAAM,EACR,CACF,CAAC,EACGL,IAAoBM,EACtBL,EAAmB,IAAI,GAEvBA,EAAmBK,CAAK,EACxB,WAAW,IAAM,CACfL,EAAmB,IAAI,CACzB,EAAG,GAAI,EAEX,EAEA,OACEhB,EAACC,EAAA,CAAU,GAAIa,EAAI,UAAU,uBAC3B,UAAAf,EAACG,EAAA,CAAQ,GAAG,KAAK,KAAK,IAAI,KAAMW,GAAM,MAAO,EAC7Cd,EAAC,OAAI,UAAU,8EACZ,SAAAc,EAAK,SAAS,IAAI,CAACO,EAAMC,IACxBtB,EAACS,EAAA,CAEC,KAAMY,EACN,YAAaD,EACb,aAAcJ,IAAoBM,EAClC,MAAOA,EACP,QAASR,EAAK,QACd,YAAaA,EAAK,YAClB,gBAAiBA,EAAK,iBAPjBQ,CAQP,CACD,EACH,EACArB,EAAC,OAAI,UAAU,2BACb,UAAAD,EAACO,EAAA,CACC,aAAc,GACd,cAAe,EACf,eAAgB,EAChB,KAAM,CACJ,KAAM,EACN,KAAM,KACR,EACA,YAAa,CACX,IAAK,CACH,cAAe,EACf,eAAgB,CAClB,CACF,EACA,aAAa,iBACb,QAAS,CAACF,EAAMC,CAAU,EAC1B,WAAY,CACV,UAAW,GACX,GAAI,uBACJ,aAAagB,EAAOC,EAAW,CAC7B,MAAO,eAAeA,CAAS;AAAA,qBAEjC,CACF,EAEC,SAAAT,EAAK,SAAS,IAAI,CAACO,EAAMC,IACxBtB,EAACQ,EAAA,CAAwB,UAAWI,EAAG,gBAAiBI,IAAoBM,GAAS,UAAU,EAC7F,SAAAtB,EAACS,EAAA,CACC,KAAMY,EACN,YAAaD,EACb,aAAcJ,IAAoBM,EAClC,MAAOA,EACP,QAASR,EAAK,QACd,YAAaA,EAAK,YAClB,gBAAiBA,EAAK,gBACxB,GATgBQ,CAUlB,CACD,EACH,EACAtB,EAAC,OACC,GAAG,sBACH,UAAU;AAAA,mGAEX,GACH,EAECgB,GACChB,EAAC,OACC,KAAK,SACL,SAAU,EACV,UAAU,qBACV,QAAS,IAAMiB,EAAmB,IAAI,EACtC,UAAWO,GAAKA,EAAE,MAAQ,UAAYP,EAAmB,IAAI,EAC/D,GAEJ,CAEJ",
4
+ "sourcesContent": ["import 'swiper/css'\nimport 'swiper/css/grid'\nimport 'swiper/css/pagination'\n\nimport { Container, Heading } from '@anker-in/headless-ui'\nimport { useState } from 'react'\nimport { Grid, Pagination } from 'swiper/modules'\nimport { Swiper, SwiperSlide } from 'swiper/react'\n\nimport BenefitItem, { type BenefitItemCopy } from './BenefitItem'\nimport { useCreditsContext } from '../context/provider'\nimport { gaTrack, classNames as cn } from '@anker-in/lib'\n\nexport type CreditsBenefitsCopy = {\n title: string\n benefits: BenefitItemCopy[]\n bigIcon?: boolean\n cardBgColor?: string\n cardBorderColor?: string\n}\n\nexport const CreditsBenefits = ({ copy, id }: { copy: CreditsBenefitsCopy; id?: string }) => {\n const [activeNoteIndex, setActiveNoteIndex] = useState<number | null>(null)\n const { profile, gtm } = useCreditsContext()\n const handleClick = ({ item, index }: { item: BenefitItemCopy; index: number }) => {\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: gtm.pageGroup,\n position: copy.title,\n button_name: item.text,\n info: '',\n },\n })\n if (activeNoteIndex === index) {\n setActiveNoteIndex(null)\n } else {\n setActiveNoteIndex(index)\n setTimeout(() => {\n setActiveNoteIndex(null)\n }, 5000)\n }\n }\n\n return (\n <Container id={id} className=\"!z-[30] bg-[#F5F5F7]\">\n <Heading as=\"h2\" size=\"4\" html={copy?.title} />\n <div className=\"mt-[24px] grid grid-cols-4 gap-[16px] l:hidden items-stretch\">\n {copy.benefits.map((item, index) => (\n <BenefitItem\n key={index}\n item={item}\n handleClick={handleClick}\n isNoteActive={activeNoteIndex === index}\n index={index}\n bigIcon={copy.bigIcon}\n cardBgColor={copy.cardBgColor}\n cardBorderColor={copy.cardBorderColor}\n />\n ))}\n </div>\n <div className=\"mt-[24px] hidden l:block\">\n <Swiper\n spaceBetween={16}\n slidesPerView={2}\n slidesPerGroup={2}\n grid={{\n rows: 2,\n fill: 'row',\n }}\n breakpoints={{\n 768: {\n slidesPerView: 3,\n slidesPerGroup: 3,\n },\n }}\n wrapperClass=\"!items-stretch\"\n modules={[Grid, Pagination]}\n pagination={{\n clickable: true,\n el: '#benefits-pagination',\n renderBullet(index, className) {\n return `<div class='${className} !flex justify-center size-[8px] rounded-full bg-[#D9D9D9] cursor-pointer items-center'>\n </div>`\n },\n }}\n >\n {copy.benefits.map((item, index) => (\n <SwiperSlide key={index} className={cn('!h-auto !flex', activeNoteIndex === index && '!z-[100]')}>\n <BenefitItem\n item={item}\n handleClick={handleClick}\n isNoteActive={activeNoteIndex === index}\n index={index}\n bigIcon={copy.bigIcon}\n cardBgColor={copy.cardBgColor}\n cardBorderColor={copy.cardBorderColor}\n />\n </SwiperSlide>\n ))}\n </Swiper>\n <div\n id=\"benefits-pagination\"\n className=\"mx-auto mt-[12px] grid !w-fit grid-flow-col [&_.swiper-pagination-bullet-active>div]:!bg-[#151515] \n [&_.swiper-pagination-bullet]:cursor-pointer [&_.swiper-pagination-bullet]:rounded-full\"\n ></div>\n </div>\n\n {activeNoteIndex && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"fixed inset-0 z-10\"\n onClick={() => setActiveNoteIndex(null)}\n onKeyDown={e => e.key === 'Escape' && setActiveNoteIndex(null)}\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "AAgDM,cAAAA,EAeA,QAAAC,MAfA,oBAhDN,MAAO,aACP,MAAO,kBACP,MAAO,wBAEP,OAAS,aAAAC,EAAW,WAAAC,MAAe,wBACnC,OAAS,YAAAC,MAAgB,QACzB,OAAS,QAAAC,EAAM,cAAAC,MAAkB,iBACjC,OAAS,UAAAC,EAAQ,eAAAC,MAAmB,eAEpC,OAAOC,MAA2C,gBAClD,OAAS,qBAAAC,MAAyB,sBAClC,OAAS,WAAAC,EAAS,cAAcC,MAAU,gBAUnC,MAAMC,EAAkB,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAAkD,CAC3F,KAAM,CAACC,EAAiBC,CAAkB,EAAIb,EAAwB,IAAI,EACpE,CAAE,QAAAc,EAAS,IAAAC,CAAI,EAAIT,EAAkB,EACrCU,EAAc,CAAC,CAAE,KAAAC,EAAM,MAAAC,CAAM,IAAgD,CACjFX,EAAQ,CACN,MAAO,WACP,WAAY,YACZ,qBAAsBO,GAAS,UAAY,SAAW,aACtD,iBAAkB,CAChB,WAAYC,EAAI,UAChB,SAAUL,EAAK,MACf,YAAaO,EAAK,KAClB,KAAM,EACR,CACF,CAAC,EACGL,IAAoBM,EACtBL,EAAmB,IAAI,GAEvBA,EAAmBK,CAAK,EACxB,WAAW,IAAM,CACfL,EAAmB,IAAI,CACzB,EAAG,GAAI,EAEX,EAEA,OACEhB,EAACC,EAAA,CAAU,GAAIa,EAAI,UAAU,uBAC3B,UAAAf,EAACG,EAAA,CAAQ,GAAG,KAAK,KAAK,IAAI,KAAMW,GAAM,MAAO,EAC7Cd,EAAC,OAAI,UAAU,+DACZ,SAAAc,EAAK,SAAS,IAAI,CAACO,EAAMC,IACxBtB,EAACS,EAAA,CAEC,KAAMY,EACN,YAAaD,EACb,aAAcJ,IAAoBM,EAClC,MAAOA,EACP,QAASR,EAAK,QACd,YAAaA,EAAK,YAClB,gBAAiBA,EAAK,iBAPjBQ,CAQP,CACD,EACH,EACArB,EAAC,OAAI,UAAU,2BACb,UAAAD,EAACO,EAAA,CACC,aAAc,GACd,cAAe,EACf,eAAgB,EAChB,KAAM,CACJ,KAAM,EACN,KAAM,KACR,EACA,YAAa,CACX,IAAK,CACH,cAAe,EACf,eAAgB,CAClB,CACF,EACA,aAAa,iBACb,QAAS,CAACF,EAAMC,CAAU,EAC1B,WAAY,CACV,UAAW,GACX,GAAI,uBACJ,aAAagB,EAAOC,EAAW,CAC7B,MAAO,eAAeA,CAAS;AAAA,qBAEjC,CACF,EAEC,SAAAT,EAAK,SAAS,IAAI,CAACO,EAAMC,IACxBtB,EAACQ,EAAA,CAAwB,UAAWI,EAAG,gBAAiBI,IAAoBM,GAAS,UAAU,EAC7F,SAAAtB,EAACS,EAAA,CACC,KAAMY,EACN,YAAaD,EACb,aAAcJ,IAAoBM,EAClC,MAAOA,EACP,QAASR,EAAK,QACd,YAAaA,EAAK,YAClB,gBAAiBA,EAAK,gBACxB,GATgBQ,CAUlB,CACD,EACH,EACAtB,EAAC,OACC,GAAG,sBACH,UAAU;AAAA,mGAEX,GACH,EAECgB,GACChB,EAAC,OACC,KAAK,SACL,SAAU,EACV,UAAU,qBACV,QAAS,IAAMiB,EAAmB,IAAI,EACtC,UAAWO,GAAKA,EAAE,MAAQ,UAAYP,EAAmB,IAAI,EAC/D,GAEJ,CAEJ",
6
6
  "names": ["jsx", "jsxs", "Container", "Heading", "useState", "Grid", "Pagination", "Swiper", "SwiperSlide", "BenefitItem", "useCreditsContext", "gaTrack", "cn", "CreditsBenefits", "copy", "id", "activeNoteIndex", "setActiveNoteIndex", "profile", "gtm", "handleClick", "item", "index", "className", "e"]
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}from"@anker-in/headless-ui";import{useMemo as c,useState as A}from"react";import{useCreditsContext as B}from"../context/provider";import{useRedeemAndBuy as L}from"../context/hooks/useRedeemAndBuy";import{formatPrice as N,numberFormat as $,extractVariantId as _}from"../context/utils";import{gaTrack as y,classNames as a,useHeadlessContext as O}from"@anker-in/lib";import{useRegistration as P}from"../../../components/registration";import{ROUNDED_BRANDS as U}from"../../../constants";function T({copy:r,itemData:e,setRules:S,className:V}){const{creditInfo:x,profile:n,openSignUpPopup:w,pageCommon:s,gtm:{pageGroup:m}}=B(),{authCodeActivate:f}=P(),{brand:R,locale:v}=O(),g=U.includes(R),[b,h]=A(null),{trigger:I,isMutating:k}=L({},{onError:o=>{h(o.message)}}),l=c(()=>!!n,[n?.activated]),p=c(()=>l&&n?.activated&&e.alpcData?.consumeCredits>Number(x?.available_credit||0),[l,n?.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]),E=()=>{h(null),l?!n?.activated&&!f.isActivateSuccess?f.open():(I({productVariant:e?.productVariant,redeemId:e?.config?.redeemId}),y({event:"ga4Event",event_name:"lp_button",member_active_status:n?.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?l?r.btnRedeem:r.unlockRewards:r?.soldOut||"Sold Out",[l,e.productVariant?.availableForSale,r.btnRedeem,r.unlockRewards,r?.soldOut]);return i("div",{className:a("flex flex-col items-center rounded-[16px] bg-[#EAEAEC] md:rounded-[12px] p-[24px] l:p-[8px] md-xl:p-[16px]",!g&&"rounded-none md:rounded-none",V),children:[t("a",{href:_(e.productVariant?.id)?`/products/${e.product.handle}?variant=${_(e.productVariant?.id)}`:`/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:()=>{S(e?.config?.rules?.split("<br>")),y({event:"ga4Event",event_name:"lp_button",member_active_status:n?.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:`${$(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(F,{disabled:z,variant:"primary",size:"lg",className:"mt-[8px] md:px-[10px] l:w-full",loading:k,onClick:()=>{E()},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 Z=T;export{Z 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 } 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 '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 className\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-[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": "AAgIQ,cAAAA,EA8CA,QAAAC,MA9CA,oBAhIR,OAAS,UAAAC,EAAQ,QAAAC,EAAM,WAAAC,MAAe,wBACtC,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,OACEjB,EAAC,OACC,UAAWY,EACT,6GACA,CAACiB,GAAW,+BACZT,CACF,EAEA,UAAArB,EAAC,KACC,KACEW,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,SAAAb,EAACI,EAAA,CACC,UAAU,wBACV,aAAa,wBACb,OACEe,GAAU,QAAQ,OAAO,KACzBA,GAAU,gBAAgB,YAAY,QAAQ,gBAC9CA,GAAU,gBAAgB,OAAO,IAEpC,EACH,EACAlB,EAAC,OAAI,UAAWY,EAAG,6BAA6B,EAC9C,UAAAb,EAACG,EAAA,CACC,KAAMgB,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,GAChDnB,EAAC,UACC,KAAK,SACL,QAAS,IAAM,CACboB,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,EAGFxB,EAAC,OAAI,UAAU,oFACb,UAAAD,EAACI,EAAA,CACC,UAAU,gEACV,OAAO,6FACT,EACAJ,EAACG,EAAA,CACC,KAAM,GAAGO,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,EACA7B,EAACG,EAAA,CACC,KAAMM,EAAY,CAChB,OAAQU,GAAU,gBAAgB,MAAM,OACxC,aAAcA,GAAU,gBAAgB,MAAM,cAAgB,MAC9D,OAAQU,CACV,CAAC,EACD,UAAU,0HACV,GAAG,IACL,GACF,EAEA5B,EAAC,OAAI,UAAU,wBACb,UAAAD,EAACE,EAAA,CACC,SAAUmC,EACV,QAAQ,UACR,KAAK,KACL,UAAU,iCACV,QAASH,EACT,QAAS,IAAM,CACbI,EAAa,CACf,EACA,MAAOF,EAAqBX,EAAW,oBAAsBc,EAE5D,SAAAA,EACH,EACAvC,EAAC,OACC,UAAWa,EACT,qJACAuB,EAAqB,QAAU,QACjC,EAEA,SAAAnC,EAAC,OACC,UAAWY,EACT,mHACA,CAACiB,GAAW,cACd,EAEA,UAAA9B,EAACG,EAAA,CAAK,GAAG,IAAI,KAAK,IAAI,KAAMsB,GAAY,oBAAqB,UAAU,cAAc,EACrFzB,EAAC,OAAI,UAAU,mHAAmH,GACpI,EACF,GACF,GACF,EACC+B,GAAS/B,EAAC,OAAI,UAAU,sCAAuC,SAAA+B,EAAM,GACxE,CAEJ,CAEA,IAAOU,EAAQxB",
6
+ "names": ["jsx", "jsxs", "Button", "Text", "Picture", "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
  }
@@ -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:l,id:b}){const[u,p]=m(!1),[g,c]=m(!1),[d,o]=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: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:()=>{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:()=>o(!1),onKeyDown:a=>a.key==="Escape"&&o(!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', '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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",
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 H,jsx as s,jsxs as b}from"react/jsx-runtime";import{Container as O,Heading as U,Tabs as W,TabsList as q,TabsTrigger as G}from"@anker-in/headless-ui";import{useMemo as c,useState as g,useEffect as L,useCallback as D,useRef as J}from"react";import F from"decimal.js";import K from"./MemberPriceItem";import Q from"../creditsCash/RedeemableItem";import X from"../context/hooks/useRedeemableList";import Y from"../modal/rulesModal";import{Pagination as S}from"./Pagination";import{useProductsByHandles as E}from"@anker-in/lib";import{classNames as Z}from"@anker-in/lib";import{useCreditsContext as $}from"../context/provider";import{FunctionDiscountType as T}from"../context/memberPriceConst";const fe=({copy:n,id:z})=>{const[d,B]=g(n.tabs[0]?.type||"memberPrice"),[P,_]=g(),[l,p]=g(1),[o,u]=g(9),{redeemableList:w}=X(),{pageCommon:V,memberPriceDiscount:f}=$(),v=J(null);console.log("copy in CreditsMemberPrice",n);const M=[{namespace:"global",key:"transparentImg"}];L(()=>{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)},[]),L(()=>{p(1)},[d,o]);const m=c(()=>!f||!n.memberPriceTab.memberPriceRuleId?null:f.find(e=>String(e.rule_id)===String(n.memberPriceTab.memberPriceRuleId))?.result_detail?.member_discounts?.find(e=>e.user_identity===1),[f,n.memberPriceTab.memberPriceRuleId]);console.log("targetRule in CreditsMemberPrice",m);const A=c(()=>m?m.main_products?.variants?.map(e=>e.handle)||[]:[],[m?.main_products.variants]),{data:h}=E({handles:A,metafieldIdentifiers:{variant:M}}),{data:C}=E({handles:n?.redeemTab?.list?.map(e=>e.products?.[0]?.handle)||[],metafieldIdentifiers:{variant:M}}),R=D(e=>{if(!m)return null;const t=m?.discount_conf;if(!t)return null;let r=new F(e);switch(t.discount_type){case T.Percentage:r=r.mul(100-t.discount_value).div(100);break;case T.FixedAmount:r=r.sub(t.discount_value);break;case T.FixedPrice:r=new F(t.discount_value);break}return{memberPrice:r.toNumber(),originalPrice:e}},[m]),x=c(()=>!m||!h?[]:m.main_products.variants.map(e=>{const t=h.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 a=R(r.price.amount);return a?{product:t,productVariant:r,memberPrice:a.memberPrice,originalPrice:a.originalPrice}:null})?.filter(Boolean)||[],[m,h,R]),I=c(()=>C?.map(e=>{const t=n.redeemTab.list.find(i=>i.products?.[0]?.handle===e.handle),r=w.find(i=>i.id?.toString()===t?.redeemId?.toString()),a=e.variants?.find(i=>i.sku===t?.products?.[0]?.sku)||e.variants?.[0];return!r||!a||!a.availableForSale||r.is_limited&&r.remaining_inventory<=0?null:{product:e,productVariant:a,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),[C,n.redeemTab.list,w]),k=c(()=>{const e=x?.length||0,t=Math.ceil(e/o),r=(l-1)*o,a=r+o,i=x?.slice(r,a)||[];return{totalPages:t,currentItems:i,showPagination:t>1}},[x,l,o]),y=c(()=>{const e=I?.length||0,t=Math.ceil(e/o),r=(l-1)*o,a=r+o,i=I?.slice(r,a)||[];return{totalPages:t,currentItems:i,showPagination:t>1}},[I,l,o]),N=D(e=>{if(p(e),v.current){const t=v.current.offsetTop;window.scrollTo({top:t-80,behavior:"smooth"})}},[p]);return b(O,{id:z,className:Z("bg-[#F5F5F5]"),ref:v,children:[s(U,{as:"h2",size:"4",html:n.title,className:"mx:px-[16px]"}),s(W,{align:"left",className:"mt-[24px]",value:d,onValueChange:e=>B(e),children:s(q,{children:n.tabs.map((e,t)=>s(G,{value:e.type,children:e.label},t))})}),b("div",{className:"relative mt-[24px]",children:[d==="memberPrice"&&b(H,{children:[s("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:k.currentItems?.map((e,t)=>s(K,{itemData:e,copy:n.memberPriceTab},t))}),s(S,{currentPage:l,totalPages:k.totalPages,onPageChange:N})]}),d==="redeem"&&b(H,{children:[s("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:y.currentItems?.map((e,t)=>s(Q,{copy:{title:n.title,...n.redeemTab},itemData:e,setRules:_,currencyCode:C?.[0]?.price.currencyCode||"USD"},t))}),s(S,{currentPage:l,totalPages:y.totalPages,onPageChange:N})]})]}),P&&s(Y,{overlayClassName:"md:px-[16px] md:items-center",className:"md:h-fit md:rounded-b-[16px]",isOpen:P.length>0,onClose:()=>_([]),titleClassName:"border-b-transparent h-[56px]",rules:P,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:V?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};export{fe as CreditsMemberPrice};
2
2
  //# sourceMappingURL=CreditsMemberPrice.js.map