@anker-in/campaign-ui 0.2.0-beta.1 → 0.2.0-beta.11

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 (166) hide show
  1. package/dist/cjs/components/credits/context/provider.d.ts +2 -2
  2. package/dist/cjs/components/credits/context/provider.js +1 -1
  3. package/dist/cjs/components/credits/context/provider.js.map +3 -3
  4. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js +1 -1
  5. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js.map +3 -3
  6. package/dist/cjs/components/credits/creditsBenefits/index.js +3 -3
  7. package/dist/cjs/components/credits/creditsBenefits/index.js.map +3 -3
  8. package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
  9. package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +3 -3
  10. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
  11. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  12. package/dist/cjs/components/credits/creditsCash/type.d.ts +0 -2
  13. package/dist/cjs/components/credits/creditsCash/type.js +1 -1
  14. package/dist/cjs/components/credits/creditsCash/type.js.map +1 -1
  15. package/dist/cjs/components/credits/creditsFaq/index.js +1 -1
  16. package/dist/cjs/components/credits/creditsFaq/index.js.map +3 -3
  17. package/dist/cjs/components/credits/creditsInfoCard/index.d.ts +0 -2
  18. package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
  19. package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
  20. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  21. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +3 -3
  22. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  23. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +3 -3
  24. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  25. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js.map +2 -2
  26. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  27. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +2 -2
  28. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  29. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  30. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  31. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
  32. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  33. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +3 -3
  34. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  35. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +2 -2
  36. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  37. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  38. package/dist/cjs/components/credits/creditsWaysToGetCredits/useActions.js +1 -1
  39. package/dist/cjs/components/credits/creditsWaysToGetCredits/useActions.js.map +2 -2
  40. package/dist/cjs/components/credits/modal/MyRewardsModal.js +1 -1
  41. package/dist/cjs/components/credits/modal/MyRewardsModal.js.map +2 -2
  42. package/dist/cjs/components/credits/modal/activitiesModal.js +1 -1
  43. package/dist/cjs/components/credits/modal/activitiesModal.js.map +2 -2
  44. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  45. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  46. package/dist/cjs/components/credits/modal/modalContainer.js +1 -1
  47. package/dist/cjs/components/credits/modal/modalContainer.js.map +3 -3
  48. package/dist/cjs/components/credits/modal/subscribeModal.js +1 -1
  49. package/dist/cjs/components/credits/modal/subscribeModal.js.map +3 -3
  50. package/dist/cjs/components/credits/modal/tip.js +1 -1
  51. package/dist/cjs/components/credits/modal/tip.js.map +3 -3
  52. package/dist/cjs/components/credits/type.d.ts +4 -2
  53. package/dist/cjs/components/credits/type.js +1 -1
  54. package/dist/cjs/components/credits/type.js.map +1 -1
  55. package/dist/cjs/components/registration/authCodeActivate/Message.js +1 -1
  56. package/dist/cjs/components/registration/authCodeActivate/Message.js.map +2 -2
  57. package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
  58. package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
  59. package/dist/cjs/components/registration/authCodeActivate/type.d.ts +0 -1
  60. package/dist/cjs/components/registration/authCodeActivate/type.js.map +1 -1
  61. package/dist/cjs/components/registration/context/provider.d.ts +2 -0
  62. package/dist/cjs/components/registration/context/provider.js +1 -1
  63. package/dist/cjs/components/registration/context/provider.js.map +3 -3
  64. package/dist/cjs/components/registration/modalContainer.d.ts +1 -2
  65. package/dist/cjs/components/registration/modalContainer.js +1 -1
  66. package/dist/cjs/components/registration/modalContainer.js.map +3 -3
  67. package/dist/cjs/templates/credits.d.ts +9 -8
  68. package/dist/cjs/templates/credits.js +1 -1
  69. package/dist/cjs/templates/credits.js.map +3 -3
  70. package/dist/esm/components/credits/context/provider.d.ts +2 -2
  71. package/dist/esm/components/credits/context/provider.js +1 -1
  72. package/dist/esm/components/credits/context/provider.js.map +3 -3
  73. package/dist/esm/components/credits/creditsBenefits/benefitItem.js +1 -1
  74. package/dist/esm/components/credits/creditsBenefits/benefitItem.js.map +3 -3
  75. package/dist/esm/components/credits/creditsBenefits/index.js +3 -3
  76. package/dist/esm/components/credits/creditsBenefits/index.js.map +3 -3
  77. package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
  78. package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +3 -3
  79. package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
  80. package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  81. package/dist/esm/components/credits/creditsCash/type.d.ts +0 -2
  82. package/dist/esm/components/credits/creditsFaq/index.js +1 -1
  83. package/dist/esm/components/credits/creditsFaq/index.js.map +3 -3
  84. package/dist/esm/components/credits/creditsInfoCard/index.d.ts +0 -2
  85. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  86. package/dist/esm/components/credits/creditsInfoCard/index.js.map +3 -3
  87. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  88. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +3 -3
  89. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  90. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +3 -3
  91. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  92. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
  93. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  94. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  95. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  96. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  97. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  98. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +3 -3
  99. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  100. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +3 -3
  101. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  102. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  103. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  104. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  105. package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.js +1 -1
  106. package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.js.map +2 -2
  107. package/dist/esm/components/credits/modal/MyRewardsModal.js +1 -1
  108. package/dist/esm/components/credits/modal/MyRewardsModal.js.map +3 -3
  109. package/dist/esm/components/credits/modal/activitiesModal.js +1 -1
  110. package/dist/esm/components/credits/modal/activitiesModal.js.map +3 -3
  111. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  112. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  113. package/dist/esm/components/credits/modal/modalContainer.js +1 -1
  114. package/dist/esm/components/credits/modal/modalContainer.js.map +3 -3
  115. package/dist/esm/components/credits/modal/subscribeModal.js +1 -1
  116. package/dist/esm/components/credits/modal/subscribeModal.js.map +3 -3
  117. package/dist/esm/components/credits/modal/tip.js +1 -1
  118. package/dist/esm/components/credits/modal/tip.js.map +3 -3
  119. package/dist/esm/components/credits/type.d.ts +4 -2
  120. package/dist/esm/components/registration/authCodeActivate/Message.js +1 -1
  121. package/dist/esm/components/registration/authCodeActivate/Message.js.map +2 -2
  122. package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
  123. package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
  124. package/dist/esm/components/registration/authCodeActivate/type.d.ts +0 -1
  125. package/dist/esm/components/registration/context/provider.d.ts +2 -0
  126. package/dist/esm/components/registration/context/provider.js +1 -1
  127. package/dist/esm/components/registration/context/provider.js.map +3 -3
  128. package/dist/esm/components/registration/modalContainer.d.ts +1 -2
  129. package/dist/esm/components/registration/modalContainer.js +1 -1
  130. package/dist/esm/components/registration/modalContainer.js.map +3 -3
  131. package/dist/esm/templates/credits.d.ts +9 -8
  132. package/dist/esm/templates/credits.js +1 -1
  133. package/dist/esm/templates/credits.js.map +3 -3
  134. package/package.json +3 -3
  135. package/src/components/credits/context/provider.tsx +1 -4
  136. package/src/components/credits/creditsBenefits/benefitItem.tsx +2 -5
  137. package/src/components/credits/creditsBenefits/index.tsx +1 -4
  138. package/src/components/credits/creditsCash/CreditsCash.tsx +4 -7
  139. package/src/components/credits/creditsCash/RedeemableItem.tsx +5 -4
  140. package/src/components/credits/creditsCash/type.ts +0 -2
  141. package/src/components/credits/creditsFaq/index.tsx +2 -3
  142. package/src/components/credits/creditsInfoCard/index.tsx +10 -12
  143. package/src/components/credits/creditsRedeemList/AddressForm/CountrySelect.tsx +3 -4
  144. package/src/components/credits/creditsRedeemList/AddressForm/StateSelect.tsx +2 -3
  145. package/src/components/credits/creditsRedeemList/AddressForm/index.tsx +2 -3
  146. package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +2 -4
  147. package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +2 -3
  148. package/src/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.tsx +6 -4
  149. package/src/components/credits/creditsRedeemList/RedeemProductModal/Success.tsx +2 -3
  150. package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +2 -3
  151. package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +5 -3
  152. package/src/components/credits/creditsWaysToGetCredits/useActions.ts +4 -1
  153. package/src/components/credits/modal/MyRewardsModal.tsx +2 -3
  154. package/src/components/credits/modal/activitiesModal.tsx +2 -3
  155. package/src/components/credits/modal/creditsUploadReceiptModal.tsx +2 -3
  156. package/src/components/credits/modal/modalContainer.tsx +2 -3
  157. package/src/components/credits/modal/subscribeModal.tsx +9 -32
  158. package/src/components/credits/modal/tip.tsx +2 -3
  159. package/src/components/credits/type.ts +4 -2
  160. package/src/components/registration/authCodeActivate/Message.tsx +1 -1
  161. package/src/components/registration/authCodeActivate/index.tsx +141 -109
  162. package/src/components/registration/authCodeActivate/type.ts +0 -1
  163. package/src/components/registration/context/provider.tsx +9 -0
  164. package/src/components/registration/modalContainer.tsx +9 -7
  165. package/src/templates/credits.tsx +41 -31
  166. package/src/components/credits/const.ts +0 -1
@@ -8,20 +8,21 @@ import { CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysTo
8
8
  import { CreditsRedeemListCopy } from '../components/credits/creditsRedeemList';
9
9
  import { CreditsCashCopy } from '../components/credits/creditsCash';
10
10
  import { CreditsFaqCopy } from '../components/credits/creditsFaq';
11
+ import { AuthCodeActivateCopy } from 'src/components/registration/authCodeActivate/type';
11
12
  export declare enum ComponentKey {
12
- Banner = "banner",
13
- InfoCard = "infoCard",
14
- Benefits = "benefits",
15
- WaysToGetCredits = "waysToGetCredits",
16
- RedeemList = "redeemList",
17
- SpendCreditsLikeCash = "spendCreditsLikeCash",
18
- Faqs = "faqs"
13
+ Banner = "creditsBanner",
14
+ InfoCard = "creditsInfoCard",
15
+ Benefits = "creditsBenefits",
16
+ WaysToGetCredits = "creditsWaysToGetCredits",
17
+ RedeemList = "creditsRedeemList",
18
+ SpendCreditsLikeCash = "creditsCash",
19
+ Faqs = "creditsFaq"
19
20
  }
20
21
  export type CreditsTemplateProps = {
21
22
  headlessConfig: HeadlessConfig;
22
23
  siteConfig: {
23
24
  registrationsSettings: {
24
- authCodeActivate: any;
25
+ authCodeActivate: AuthCodeActivateCopy;
25
26
  };
26
27
  taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>;
27
28
  };
@@ -1,2 +1,2 @@
1
- import{Fragment as L,jsx as o,jsxs as v}from"react/jsx-runtime";import{classNames as C,HeadlessProvider as m}from"@anker-in/lib";import{RegistrationProvider as f}from"../components/registration/context/provider";import{CreditsProvider as y}from"../components/credits/context/provider";import{CreditsBanner as c}from"../components/credits/creditsBanner";import{CreditsInfoCard as l}from"../components/credits/creditsInfoCard";import{CreditsBenefits as g}from"../components/credits/creditsBenefits";import{CreditsWaysToGetCredits as P}from"../components/credits/creditsWaysToGetCredits";import{CreditsRedeemList as T}from"../components/credits/creditsRedeemList";import{CreditsCash as u}from"../components/credits/creditsCash";import{CreditsFaq as h}from"../components/credits/creditsFaq";var I=(e=>(e.Banner="banner",e.InfoCard="infoCard",e.Benefits="benefits",e.WaysToGetCredits="waysToGetCredits",e.RedeemList="redeemList",e.SpendCreditsLikeCash="spendCreditsLikeCash",e.Faqs="faqs",e))(I||{});const O=({headlessConfig:d,siteConfig:s,userContext:r,pageConfig:i,registrationContext:t,gtm:n})=>o(m,{headlessConfig:d,children:o(f,{copy:s.registrationsSettings,email:r?.profile?.email,children:o(y,{profile:r?.profile,removeProfile:r?.removeProfile,isLoadingProfile:r?.isLoadingProfile,openSignInPopup:t.openSignInPopup,openSignUpPopup:t.openSignUpPopup,creditInfo:r?.creditInfo,taskIdToTypeMapping:s.taskIdToTypeMapping,customer:r?.customer,fetchCreditInfo:r?.fetchCreditInfo,customerLoading:r?.customerLoading,gtm:n,pageCommon:i.common,children:o("div",{className:C("bg-[#f5f5f7] leading-[1.2]"),children:i.order.map(p=>{const e=i.components?.[p];return e?v(L,{children:[a=>{switch(a){case"banner":return o(c,{copy:e});case"infoCard":return o(l,{copy:e});case"benefits":return o(g,{copy:e});case"waysToGetCredits":return o(P,{copy:e});case"redeemList":return o(T,{copy:e});case"spendCreditsLikeCash":return o(u,{copy:e});case"faqs":return o(h,{copy:e});default:return null}},o("div",{className:"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16"})]}):null})})})})});export{I as ComponentKey,O as CreditsTemplate};
1
+ import{Fragment as v,jsx as o,jsxs as u}from"react/jsx-runtime";import{classNames as a,HeadlessProvider as C}from"@anker-in/lib";import{RegistrationProvider as m}from"../components/registration/context/provider";import{CreditsProvider as f}from"../components/credits/context/provider";import{CreditsBanner as y}from"../components/credits/creditsBanner";import{CreditsInfoCard as c}from"../components/credits/creditsInfoCard";import{CreditsBenefits as l}from"../components/credits/creditsBenefits";import{CreditsWaysToGetCredits as g}from"../components/credits/creditsWaysToGetCredits";import{CreditsRedeemList as T}from"../components/credits/creditsRedeemList";import{CreditsCash as P}from"../components/credits/creditsCash";import{CreditsFaq as h}from"../components/credits/creditsFaq";var I=(e=>(e.Banner="creditsBanner",e.InfoCard="creditsInfoCard",e.Benefits="creditsBenefits",e.WaysToGetCredits="creditsWaysToGetCredits",e.RedeemList="creditsRedeemList",e.SpendCreditsLikeCash="creditsCash",e.Faqs="creditsFaq",e))(I||{});const O=({headlessConfig:s,siteConfig:d,userContext:t,pageConfig:r,registrationContext:n,gtm:p})=>o(C,{headlessConfig:s,children:o(m,{copy:d.registrationsSettings,email:t?.profile?.email,children:o(f,{profile:t?.profile,removeProfile:t?.removeProfile,isLoadingProfile:t?.isLoadingProfile,openSignInPopup:n.openSignInPopup,openSignUpPopup:n.openSignUpPopup,creditInfo:t?.creditInfo,taskIdToTypeMapping:d.taskIdToTypeMapping,customer:t?.customer,fetchCreditInfo:t?.fetchCreditInfo,customerLoading:t?.customerLoading,gtm:p,pageCommon:r.common,children:o("div",{className:a("bg-[#f5f5f7] leading-[1.2]"),children:r.order.map(i=>{const e=r.components?.[i];return e?u(v,{children:[i==="creditsBanner"&&o(y,{copy:e}),i==="creditsInfoCard"&&t?.profile&&o(c,{copy:e}),i==="creditsBenefits"&&o(l,{copy:e}),i==="creditsWaysToGetCredits"&&o(g,{copy:e,classNames:s.brand==="anker"?{subtitle:"text-white",equalCreditsText:"bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent"}:{subtitle:"text-[#D1D1D1]",equalCreditsText:"text-[#F6EAD0]"}}),i==="creditsRedeemList"&&o(T,{copy:e}),i==="creditsCash"&&o(P,{copy:e}),i==="creditsFaq"&&o(h,{copy:e}),i!=="creditsBanner"&&o("div",{className:"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16"})]}):null})})})})});export{I as ComponentKey,O as CreditsTemplate};
2
2
  //# sourceMappingURL=credits.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/templates/credits.tsx"],
4
- "sourcesContent": ["import { classNames, HeadlessConfig, HeadlessProvider } from '@anker-in/lib'\nimport { RegistrationProvider } from '../components/registration/context/provider'\n\nimport { DTC_TASK_TYPE } from '../components/credits/context/const'\nimport { CreditsProvider } from '../components/credits/context/provider'\nimport { CreditsPageCommon } from '../components/credits/type'\n\nimport { CreditsBanner, CreditsBannerCopy } from '../components/credits/creditsBanner'\nimport { CreditsInfoCard, CreditsInfoCardCopy } from '../components/credits/creditsInfoCard'\nimport { CreditsBenefits, CreditsBenefitsCopy } from '../components/credits/creditsBenefits'\nimport { CreditsWaysToGetCredits, CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysToGetCredits'\nimport { CreditsRedeemList, CreditsRedeemListCopy } from '../components/credits/creditsRedeemList'\nimport { CreditsCash, CreditsCashCopy } from '../components/credits/creditsCash'\nimport { CreditsFaq, CreditsFaqCopy } from '../components/credits/creditsFaq'\n\nexport enum ComponentKey {\n Banner = 'banner',\n InfoCard = 'infoCard',\n Benefits = 'benefits',\n WaysToGetCredits = 'waysToGetCredits',\n RedeemList = 'redeemList',\n SpendCreditsLikeCash = 'spendCreditsLikeCash',\n Faqs = 'faqs',\n}\nexport type CreditsTemplateProps = {\n headlessConfig: HeadlessConfig\n siteConfig: {\n registrationsSettings: {\n authCodeActivate: any\n }\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n }\n pageConfig: {\n order: ComponentKey[]\n common: CreditsPageCommon\n components: {\n [ComponentKey.Banner]?: CreditsBannerCopy\n [ComponentKey.InfoCard]?: CreditsInfoCardCopy\n [ComponentKey.Benefits]?: CreditsBenefitsCopy\n [ComponentKey.WaysToGetCredits]?: CreditsWaysToGetCreditsCopy\n [ComponentKey.RedeemList]?: CreditsRedeemListCopy\n [ComponentKey.SpendCreditsLikeCash]?: CreditsCashCopy\n [ComponentKey.Faqs]?: CreditsFaqCopy\n }\n }\n userContext: {\n profile: any\n removeProfile: () => void\n isLoadingProfile: boolean\n creditInfo: any\n customer: any\n customerLoading: boolean\n fetchCreditInfo: () => void\n }\n registrationContext: {\n openSignUpPopup: () => void\n openSignInPopup: () => void\n }\n gtm: {\n pageGroup: string\n }\n}\n\nexport const CreditsTemplate = ({\n headlessConfig,\n siteConfig,\n userContext,\n pageConfig,\n registrationContext,\n gtm,\n}: CreditsTemplateProps) => {\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider copy={siteConfig.registrationsSettings} email={userContext?.profile?.email}>\n <CreditsProvider\n profile={userContext?.profile}\n removeProfile={userContext?.removeProfile}\n isLoadingProfile={userContext?.isLoadingProfile}\n openSignInPopup={registrationContext.openSignInPopup}\n openSignUpPopup={registrationContext.openSignUpPopup}\n creditInfo={userContext?.creditInfo}\n taskIdToTypeMapping={siteConfig.taskIdToTypeMapping}\n customer={userContext?.customer}\n fetchCreditInfo={userContext?.fetchCreditInfo}\n customerLoading={userContext?.customerLoading}\n gtm={gtm}\n pageCommon={pageConfig.common}\n >\n <div className={classNames('bg-[#f5f5f7] leading-[1.2]')}>\n {pageConfig.order.map(item => {\n const componentCopy = pageConfig.components?.[item]\n if (!componentCopy) return null\n return (\n <>\n {(item: ComponentKey) => {\n switch (item) {\n case 'banner':\n return <CreditsBanner copy={componentCopy as CreditsBannerCopy} />\n case 'infoCard':\n return <CreditsInfoCard copy={componentCopy as CreditsInfoCardCopy} />\n case 'benefits':\n return <CreditsBenefits copy={componentCopy as CreditsBenefitsCopy} />\n case 'waysToGetCredits':\n return <CreditsWaysToGetCredits copy={componentCopy as CreditsWaysToGetCreditsCopy} />\n case 'redeemList':\n return <CreditsRedeemList copy={componentCopy as CreditsRedeemListCopy} />\n case 'spendCreditsLikeCash':\n return <CreditsCash copy={componentCopy as CreditsCashCopy} />\n case 'faqs':\n return <CreditsFaq copy={componentCopy as CreditsFaqCopy} />\n default:\n return null\n }\n }}\n <div className=\"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16\" />\n </>\n )\n })}\n </div>\n </CreditsProvider>\n </RegistrationProvider>\n </HeadlessProvider>\n )\n}\n"],
5
- "mappings": "AA6FgB,mBAAAA,EAIe,OAAAC,EAJf,QAAAC,MAAA,oBA7FhB,OAAS,cAAAC,EAA4B,oBAAAC,MAAwB,gBAC7D,OAAS,wBAAAC,MAA4B,8CAGrC,OAAS,mBAAAC,MAAuB,yCAGhC,OAAS,iBAAAC,MAAwC,sCACjD,OAAS,mBAAAC,MAA4C,wCACrD,OAAS,mBAAAC,MAA4C,wCACrD,OAAS,2BAAAC,MAA4D,gDACrE,OAAS,qBAAAC,MAAgD,0CACzD,OAAS,eAAAC,MAAoC,oCAC7C,OAAS,cAAAC,MAAkC,mCAEpC,IAAKC,OACVA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,iBAAmB,mBACnBA,EAAA,WAAa,aACbA,EAAA,qBAAuB,uBACvBA,EAAA,KAAO,OAPGA,OAAA,IAgDL,MAAMC,EAAkB,CAAC,CAC9B,eAAAC,EACA,WAAAC,EACA,YAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,IAAAC,CACF,IAEIpB,EAACG,EAAA,CAAiB,eAAgBY,EAChC,SAAAf,EAACI,EAAA,CAAqB,KAAMY,EAAW,sBAAuB,MAAOC,GAAa,SAAS,MACzF,SAAAjB,EAACK,EAAA,CACC,QAASY,GAAa,QACtB,cAAeA,GAAa,cAC5B,iBAAkBA,GAAa,iBAC/B,gBAAiBE,EAAoB,gBACrC,gBAAiBA,EAAoB,gBACrC,WAAYF,GAAa,WACzB,oBAAqBD,EAAW,oBAChC,SAAUC,GAAa,SACvB,gBAAiBA,GAAa,gBAC9B,gBAAiBA,GAAa,gBAC9B,IAAKG,EACL,WAAYF,EAAW,OAEvB,SAAAlB,EAAC,OAAI,UAAWE,EAAW,4BAA4B,EACpD,SAAAgB,EAAW,MAAM,IAAIG,GAAQ,CAC5B,MAAMC,EAAgBJ,EAAW,aAAaG,CAAI,EAClD,OAAKC,EAEHrB,EAAAF,EAAA,CACG,UAACsB,GAAuB,CACvB,OAAQA,EAAM,CACZ,IAAK,SACH,OAAOrB,EAACM,EAAA,CAAc,KAAMgB,EAAoC,EAClE,IAAK,WACH,OAAOtB,EAACO,EAAA,CAAgB,KAAMe,EAAsC,EACtE,IAAK,WACH,OAAOtB,EAACQ,EAAA,CAAgB,KAAMc,EAAsC,EACtE,IAAK,mBACH,OAAOtB,EAACS,EAAA,CAAwB,KAAMa,EAA8C,EACtF,IAAK,aACH,OAAOtB,EAACU,EAAA,CAAkB,KAAMY,EAAwC,EAC1E,IAAK,uBACH,OAAOtB,EAACW,EAAA,CAAY,KAAMW,EAAkC,EAC9D,IAAK,OACH,OAAOtB,EAACY,EAAA,CAAW,KAAMU,EAAiC,EAC5D,QACE,OAAO,IACX,CACF,EACAtB,EAAC,OAAI,UAAU,qEAAqE,GACtF,EAxByB,IA0B7B,CAAC,EACH,EACF,EACF,EACF",
6
- "names": ["Fragment", "jsx", "jsxs", "classNames", "HeadlessProvider", "RegistrationProvider", "CreditsProvider", "CreditsBanner", "CreditsInfoCard", "CreditsBenefits", "CreditsWaysToGetCredits", "CreditsRedeemList", "CreditsCash", "CreditsFaq", "ComponentKey", "CreditsTemplate", "headlessConfig", "siteConfig", "userContext", "pageConfig", "registrationContext", "gtm", "item", "componentCopy"]
4
+ "sourcesContent": ["import { classNames, HeadlessConfig, HeadlessProvider } from '@anker-in/lib'\nimport { RegistrationProvider } from '../components/registration/context/provider'\n\nimport { DTC_TASK_TYPE } from '../components/credits/context/const'\nimport { CreditsProvider } from '../components/credits/context/provider'\nimport { CreditsPageCommon } from '../components/credits/type'\n\nimport { CreditsBanner, CreditsBannerCopy } from '../components/credits/creditsBanner'\nimport { CreditsInfoCard, CreditsInfoCardCopy } from '../components/credits/creditsInfoCard'\nimport { CreditsBenefits, CreditsBenefitsCopy } from '../components/credits/creditsBenefits'\nimport { CreditsWaysToGetCredits, CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysToGetCredits'\nimport { CreditsRedeemList, CreditsRedeemListCopy } from '../components/credits/creditsRedeemList'\nimport { CreditsCash, CreditsCashCopy } from '../components/credits/creditsCash'\nimport { CreditsFaq, CreditsFaqCopy } from '../components/credits/creditsFaq'\nimport { AuthCodeActivateCopy } from 'src/components/registration/authCodeActivate/type'\n\nexport enum ComponentKey {\n Banner = 'creditsBanner',\n InfoCard = 'creditsInfoCard',\n Benefits = 'creditsBenefits',\n WaysToGetCredits = 'creditsWaysToGetCredits',\n RedeemList = 'creditsRedeemList',\n SpendCreditsLikeCash = 'creditsCash',\n Faqs = 'creditsFaq',\n}\nexport type CreditsTemplateProps = {\n headlessConfig: HeadlessConfig\n siteConfig: {\n registrationsSettings: {\n authCodeActivate: AuthCodeActivateCopy\n }\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n }\n pageConfig: {\n order: ComponentKey[]\n common: CreditsPageCommon\n components: {\n [ComponentKey.Banner]?: CreditsBannerCopy\n [ComponentKey.InfoCard]?: CreditsInfoCardCopy\n [ComponentKey.Benefits]?: CreditsBenefitsCopy\n [ComponentKey.WaysToGetCredits]?: CreditsWaysToGetCreditsCopy\n [ComponentKey.RedeemList]?: CreditsRedeemListCopy\n [ComponentKey.SpendCreditsLikeCash]?: CreditsCashCopy\n [ComponentKey.Faqs]?: CreditsFaqCopy\n }\n }\n userContext: {\n profile: any\n removeProfile: () => void\n isLoadingProfile: boolean\n creditInfo: any\n customer: any\n customerLoading: boolean\n fetchCreditInfo: () => void\n }\n registrationContext: {\n openSignUpPopup: () => void\n openSignInPopup: () => void\n }\n gtm: {\n pageGroup: string\n }\n}\n\nexport const CreditsTemplate = ({\n headlessConfig,\n siteConfig,\n userContext,\n pageConfig,\n registrationContext,\n gtm,\n}: CreditsTemplateProps) => {\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider copy={siteConfig.registrationsSettings} email={userContext?.profile?.email}>\n <CreditsProvider\n profile={userContext?.profile}\n removeProfile={userContext?.removeProfile}\n isLoadingProfile={userContext?.isLoadingProfile}\n openSignInPopup={registrationContext.openSignInPopup}\n openSignUpPopup={registrationContext.openSignUpPopup}\n creditInfo={userContext?.creditInfo}\n taskIdToTypeMapping={siteConfig.taskIdToTypeMapping}\n customer={userContext?.customer}\n fetchCreditInfo={userContext?.fetchCreditInfo}\n customerLoading={userContext?.customerLoading}\n gtm={gtm}\n pageCommon={pageConfig.common}\n >\n <div className={classNames('bg-[#f5f5f7] leading-[1.2]')}>\n {pageConfig.order.map(key => {\n const componentCopy = pageConfig.components?.[key]\n if (!componentCopy) return null\n return (\n <>\n {key === ComponentKey.Banner && <CreditsBanner copy={componentCopy as CreditsBannerCopy} />}\n {key === ComponentKey.InfoCard && userContext?.profile && (\n <CreditsInfoCard copy={componentCopy as CreditsInfoCardCopy} />\n )}\n {key === ComponentKey.Benefits && <CreditsBenefits copy={componentCopy as CreditsBenefitsCopy} />}\n {key === ComponentKey.WaysToGetCredits && (\n <CreditsWaysToGetCredits\n copy={componentCopy as CreditsWaysToGetCreditsCopy}\n classNames={\n headlessConfig.brand === 'anker'\n ? {\n subtitle: 'text-white',\n equalCreditsText:\n 'bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent',\n }\n : {\n subtitle: 'text-[#D1D1D1]',\n equalCreditsText: 'text-[#F6EAD0]',\n }\n }\n />\n )}\n {key === ComponentKey.RedeemList && (\n <CreditsRedeemList copy={componentCopy as CreditsRedeemListCopy} />\n )}\n {key === ComponentKey.SpendCreditsLikeCash && <CreditsCash copy={componentCopy as CreditsCashCopy} />}\n {key === ComponentKey.Faqs && <CreditsFaq copy={componentCopy as CreditsFaqCopy} />}\n {key !== ComponentKey.Banner && (\n <div className=\"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16\" />\n )}\n </>\n )\n })}\n </div>\n </CreditsProvider>\n </RegistrationProvider>\n </HeadlessProvider>\n )\n}\n"],
5
+ "mappings": "AA8FgB,mBAAAA,EACkC,OAAAC,EADlC,QAAAC,MAAA,oBA9FhB,OAAS,cAAAC,EAA4B,oBAAAC,MAAwB,gBAC7D,OAAS,wBAAAC,MAA4B,8CAGrC,OAAS,mBAAAC,MAAuB,yCAGhC,OAAS,iBAAAC,MAAwC,sCACjD,OAAS,mBAAAC,MAA4C,wCACrD,OAAS,mBAAAC,MAA4C,wCACrD,OAAS,2BAAAC,MAA4D,gDACrE,OAAS,qBAAAC,MAAgD,0CACzD,OAAS,eAAAC,MAAoC,oCAC7C,OAAS,cAAAC,MAAkC,mCAGpC,IAAKC,OACVA,EAAA,OAAS,gBACTA,EAAA,SAAW,kBACXA,EAAA,SAAW,kBACXA,EAAA,iBAAmB,0BACnBA,EAAA,WAAa,oBACbA,EAAA,qBAAuB,cACvBA,EAAA,KAAO,aAPGA,OAAA,IAgDL,MAAMC,EAAkB,CAAC,CAC9B,eAAAC,EACA,WAAAC,EACA,YAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,IAAAC,CACF,IAEIpB,EAACG,EAAA,CAAiB,eAAgBY,EAChC,SAAAf,EAACI,EAAA,CAAqB,KAAMY,EAAW,sBAAuB,MAAOC,GAAa,SAAS,MACzF,SAAAjB,EAACK,EAAA,CACC,QAASY,GAAa,QACtB,cAAeA,GAAa,cAC5B,iBAAkBA,GAAa,iBAC/B,gBAAiBE,EAAoB,gBACrC,gBAAiBA,EAAoB,gBACrC,WAAYF,GAAa,WACzB,oBAAqBD,EAAW,oBAChC,SAAUC,GAAa,SACvB,gBAAiBA,GAAa,gBAC9B,gBAAiBA,GAAa,gBAC9B,IAAKG,EACL,WAAYF,EAAW,OAEvB,SAAAlB,EAAC,OAAI,UAAWE,EAAW,4BAA4B,EACpD,SAAAgB,EAAW,MAAM,IAAIG,GAAO,CAC3B,MAAMC,EAAgBJ,EAAW,aAAaG,CAAG,EACjD,OAAKC,EAEHrB,EAAAF,EAAA,CACG,UAAAsB,IAAQ,iBAAuBrB,EAACM,EAAA,CAAc,KAAMgB,EAAoC,EACxFD,IAAQ,mBAAyBJ,GAAa,SAC7CjB,EAACO,EAAA,CAAgB,KAAMe,EAAsC,EAE9DD,IAAQ,mBAAyBrB,EAACQ,EAAA,CAAgB,KAAMc,EAAsC,EAC9FD,IAAQ,2BACPrB,EAACS,EAAA,CACC,KAAMa,EACN,WACEP,EAAe,QAAU,QACrB,CACE,SAAU,aACV,iBACE,4EACJ,EACA,CACE,SAAU,iBACV,iBAAkB,gBACpB,EAER,EAEDM,IAAQ,qBACPrB,EAACU,EAAA,CAAkB,KAAMY,EAAwC,EAElED,IAAQ,eAAqCrB,EAACW,EAAA,CAAY,KAAMW,EAAkC,EAClGD,IAAQ,cAAqBrB,EAACY,EAAA,CAAW,KAAMU,EAAiC,EAChFD,IAAQ,iBACPrB,EAAC,OAAI,UAAU,qEAAqE,GAExF,EAjCyB,IAmC7B,CAAC,EACH,EACF,EACF,EACF",
6
+ "names": ["Fragment", "jsx", "jsxs", "classNames", "HeadlessProvider", "RegistrationProvider", "CreditsProvider", "CreditsBanner", "CreditsInfoCard", "CreditsBenefits", "CreditsWaysToGetCredits", "CreditsRedeemList", "CreditsCash", "CreditsFaq", "ComponentKey", "CreditsTemplate", "headlessConfig", "siteConfig", "userContext", "pageConfig", "registrationContext", "gtm", "key", "componentCopy"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/campaign-ui",
3
- "version": "0.2.0-beta.1",
3
+ "version": "0.2.0-beta.11",
4
4
  "description": "Campaign UI components and utilities for Anker projects",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -87,8 +87,8 @@
87
87
  "swiper": "^11.1.3",
88
88
  "tailwind-merge": "^2.3.0",
89
89
  "tailwindcss": "^3.4.3",
90
- "@anker-in/lib": "1.1.0",
91
- "@anker-in/headless-ui": "1.0.26"
90
+ "@anker-in/headless-ui": "1.0.26",
91
+ "@anker-in/lib": "1.1.0-beta.6"
92
92
  },
93
93
  "publishConfig": {
94
94
  "access": "public",
@@ -1,7 +1,6 @@
1
- import React, { createContext, PropsWithChildren, useContext } from 'react'
1
+ import { createContext, PropsWithChildren, useContext } from 'react'
2
2
  import type { DTC_TASK_TYPE } from './const'
3
3
  import type { CreditInfoResponse } from './response'
4
- import { AuthCodeActivate, useRegistration } from '../../registration'
5
4
  import { CreditsPageCommon } from '../type'
6
5
 
7
6
  type Context = {
@@ -52,7 +51,6 @@ export function CreditsProvider({
52
51
  gtm,
53
52
  pageCommon,
54
53
  }: PropsWithChildren<Context>) {
55
- const { copy } = useRegistration()
56
54
  return (
57
55
  <CreditsContext.Provider
58
56
  value={{
@@ -71,7 +69,6 @@ export function CreditsProvider({
71
69
  }}
72
70
  >
73
71
  {children}
74
- {copy?.authCodeActivate && <AuthCodeActivate copy={copy.authCodeActivate} autoSendEmail />}
75
72
  </CreditsContext.Provider>
76
73
  )
77
74
  }
@@ -1,7 +1,6 @@
1
1
  import { Heading, Picture, Text } from '@anker-in/headless-ui'
2
- import { classNames as cn, useHeadlessContext } from '@anker-in/lib'
2
+ import { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
3
3
  import IconInfo from './iconInfo'
4
- import { roundedBrands } from '../const'
5
4
 
6
5
  export interface BenefitItemCopy {
7
6
  icon: {
@@ -24,9 +23,7 @@ const BenefitItem = ({
24
23
  index: number
25
24
  }) => {
26
25
  const { brand } = useHeadlessContext()
27
- console.log('brand', brand)
28
- const rounded = roundedBrands.includes(brand)
29
- console.log('rounded', rounded)
26
+ const rounded = ROUNDED_BRANDS.includes(brand)
30
27
  return (
31
28
  <div
32
29
  className={cn(
@@ -9,8 +9,7 @@ import { Swiper, SwiperSlide } from 'swiper/react'
9
9
 
10
10
  import BenefitItem, { type BenefitItemCopy } from './benefitItem'
11
11
  import { useCreditsContext } from '../context/provider'
12
- import { gaTrack, classNames as cn, useHeadlessContext } from '@anker-in/lib'
13
- import { roundedBrands } from '../const'
12
+ import { gaTrack, classNames as cn } from '@anker-in/lib'
14
13
 
15
14
  export type CreditsBenefitsCopy = {
16
15
  title: string
@@ -20,8 +19,6 @@ export type CreditsBenefitsCopy = {
20
19
  export const CreditsBenefits = ({ copy }: { copy: CreditsBenefitsCopy }) => {
21
20
  const [activeNoteIndex, setActiveNoteIndex] = useState<number | null>(null)
22
21
  const { profile, gtm } = useCreditsContext()
23
- const { brand } = useHeadlessContext()
24
- const rounded = roundedBrands.includes(brand)
25
22
  const handleClick = ({ item, index }: { item: BenefitItemCopy; index: number }) => {
26
23
  gaTrack({
27
24
  event: 'ga4Event',
@@ -4,18 +4,15 @@ import { useMemo, useState } from 'react'
4
4
  import RedeemableItem from './RedeemableItem'
5
5
  import useRedeemableList from '../context/hooks/useRedeemableList'
6
6
  import RulesModal from '../modal/rulesModal'
7
- import { useProductsByHandles, useHeadlessContext } from '@anker-in/lib'
7
+ import { useProductsByHandles } from '@anker-in/lib'
8
8
  import { CreditsCashCopy, RedeemItem } from './type'
9
9
  import { Product, classNames as cn } from '@anker-in/lib'
10
- import { useRegistration } from '../../../components/registration'
11
- import { roundedBrands } from '../const'
10
+ import { useCreditsContext } from '../context/provider'
12
11
 
13
12
  export const CreditsCash = ({ copy }: { copy: CreditsCashCopy }) => {
14
- const { authCodeActivate } = useRegistration()
15
13
  const [rules, setRules] = useState<string | string[]>()
16
14
  const { redeemableList } = useRedeemableList()
17
- const { brand } = useHeadlessContext()
18
- const rounded = roundedBrands.includes(brand)
15
+ const { pageCommon } = useCreditsContext()
19
16
 
20
17
  const variantMetafieldIdentifiers: any[] = []
21
18
 
@@ -76,7 +73,7 @@ export const CreditsCash = ({ copy }: { copy: CreditsCashCopy }) => {
76
73
  titleClassName="border-b-transparent h-[56px]"
77
74
  rules={rules}
78
75
  scrollClassName="md:mt-[8px] md:mb-[24px] md:pt-0"
79
- title={copy?.ruleLabel}
76
+ title={pageCommon?.ruleLabel}
80
77
  ruleClassName="text-[#1d1d1f] font-bold"
81
78
  />
82
79
  )}
@@ -24,6 +24,7 @@ function RedeemableItem({
24
24
  creditInfo,
25
25
  profile,
26
26
  openSignUpPopup,
27
+ pageCommon,
27
28
  gtm: { pageGroup },
28
29
  } = useCreditsContext()
29
30
  const { authCodeActivate } = useRegistration()
@@ -143,7 +144,7 @@ function RedeemableItem({
143
144
  event_parameters: {
144
145
  page_group: pageGroup,
145
146
  position: copy.title,
146
- button_name: copy?.ruleLabel,
147
+ button_name: pageCommon?.ruleLabel,
147
148
  info: itemData?.alpcData?.id?.toString(),
148
149
  },
149
150
  })
@@ -156,7 +157,7 @@ function RedeemableItem({
156
157
  }
157
158
  }}
158
159
  >
159
- {copy?.ruleLabel}
160
+ {pageCommon?.ruleLabel}
160
161
  </button>
161
162
  )}
162
163
  <div className="mt-[24px] flex items-center l:mt-[12px] laptop:text-[16px] lg-desktop:text-[18px]">
@@ -182,7 +183,7 @@ function RedeemableItem({
182
183
  onClick={() => {
183
184
  handleRedeem()
184
185
  }}
185
- title={inSufficientCredit ? copy.insufficientCredits : redeemButtonText}
186
+ title={inSufficientCredit ? pageCommon.insufficientCredits : redeemButtonText}
186
187
  >
187
188
  {redeemButtonText}
188
189
  </Button>
@@ -193,7 +194,7 @@ function RedeemableItem({
193
194
  )}
194
195
  >
195
196
  <div className="relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow md:px-[10px] md:py-[8px]">
196
- <Text as="p" size="2" html={copy?.insufficientCredits} className="text-[14px]" />
197
+ <Text as="p" size="2" html={pageCommon?.insufficientCredits} className="text-[14px]" />
197
198
  <div className="absolute -top-[10px] left-[48px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]" />
198
199
  </div>
199
200
  </div>
@@ -22,11 +22,9 @@ export type CreditsCashCopy = {
22
22
  products: { handle: string; sku: string }[]
23
23
  })[]
24
24
  soldOut: string
25
- ruleLabel: string
26
25
  unlockRewards: string
27
26
  btnRedeem: string
28
27
  off: string
29
- insufficientCredits: string
30
28
  }
31
29
 
32
30
  export type RedeemItem = {
@@ -1,9 +1,8 @@
1
1
  import { Container, Heading, Tabs, TabsList, TabsTrigger, Text } from '@anker-in/headless-ui'
2
- import { classNames as cn, useHeadlessContext } from '@anker-in/lib'
2
+ import { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
3
3
  import { useMemo, useState } from 'react'
4
4
 
5
5
  import { FaqItem } from './faqItem/FaqItem'
6
- import { roundedBrands } from '../const'
7
6
 
8
7
  export type CreditsFaqCopy = {
9
8
  title: string
@@ -21,7 +20,7 @@ export type CreditsFaqCopy = {
21
20
  export const CreditsFaq = ({ copy }: { copy: CreditsFaqCopy }) => {
22
21
  const { title, items: faqList, subTitle = '' } = copy || {}
23
22
  const { brand } = useHeadlessContext()
24
- const rounded = roundedBrands.includes(brand)
23
+ const rounded = ROUNDED_BRANDS.includes(brand)
25
24
  const categoryList = useMemo(() => {
26
25
  return Array.from(new Set(faqList?.map?.(faq => faq.category_name).filter(item => !!item)))
27
26
  }, [faqList])
@@ -5,8 +5,7 @@ import { useCreditsContext } from '../context/provider'
5
5
  import { numberFormat } from '../context/utils'
6
6
  import ActivitiesModal from '../modal/activitiesModal'
7
7
  import MyRewardsModal from '../modal/MyRewardsModal'
8
- import { gaNormalClick, classNames as cn, useHeadlessContext } from '@anker-in/lib'
9
- import { roundedBrands } from '../const'
8
+ import { gaNormalClick, classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
10
9
 
11
10
  type ButtonConfig = {
12
11
  text: string
@@ -17,8 +16,6 @@ export type CreditsInfoCardCopy = {
17
16
  comingSoonLabel: string
18
17
  comingSoonTips: string
19
18
  buttons: ButtonConfig[]
20
- pointUnit: string
21
- infoIcon: string
22
19
  }
23
20
 
24
21
  export function CreditsInfoCard({ copy }: { copy: CreditsInfoCardCopy }) {
@@ -27,7 +24,8 @@ export function CreditsInfoCard({ copy }: { copy: CreditsInfoCardCopy }) {
27
24
  const [hover, setHover] = useState<boolean>(false)
28
25
  const { creditInfo, pageCommon } = useCreditsContext()
29
26
  const { brand } = useHeadlessContext()
30
- const rounded = roundedBrands.includes(brand)
27
+ const rounded = ROUNDED_BRANDS.includes(brand)
28
+
31
29
  const handleButtonClick = useCallback((buttonConfig: ButtonConfig) => {
32
30
  gaNormalClick({ position: 'info_card', label: buttonConfig.text })
33
31
 
@@ -76,7 +74,7 @@ export function CreditsInfoCard({ copy }: { copy: CreditsInfoCardCopy }) {
76
74
  <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-md:text-[44px]', 'min-xl:text-[56px]')}>
77
75
  {creditInfo ? numberFormat(creditInfo.available_credit) : 0}
78
76
  </div>
79
- <div className="text-[16px]">{copy?.pointUnit}</div>
77
+ <div className="text-[16px]">{pageCommon?.pointUnit}</div>
80
78
  </div>
81
79
  </div>
82
80
  <div className="w-fit md:flex-1">
@@ -86,7 +84,7 @@ export function CreditsInfoCard({ copy }: { copy: CreditsInfoCardCopy }) {
86
84
  <div className="group relative ml-[4px] flex cursor-pointer items-start">
87
85
  <Text
88
86
  as="div"
89
- html={copy?.infoIcon}
87
+ html={pageCommon?.infoIcon}
90
88
  className="size-[18px] cursor-pointer [&_svg]:size-full"
91
89
  onClick={() => {
92
90
  if (hover) {
@@ -127,7 +125,7 @@ export function CreditsInfoCard({ copy }: { copy: CreditsInfoCardCopy }) {
127
125
  <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-l:text-[44px]', 'min-xl:text-[56px]')}>
128
126
  {creditInfo ? numberFormat(creditInfo.pending_credit) : 0}
129
127
  </div>
130
- <div className="text-[16px]">{copy?.pointUnit}</div>
128
+ <div className="text-[16px]">{pageCommon?.pointUnit}</div>
131
129
  </div>
132
130
  </div>
133
131
  </div>
@@ -151,19 +149,19 @@ export function CreditsInfoCard({ copy }: { copy: CreditsInfoCardCopy }) {
151
149
  ))}
152
150
  </div>
153
151
 
154
- {pageCommon?.activities && (
152
+ {pageCommon?.activitiesModal && (
155
153
  <ActivitiesModal
156
154
  isOpen={openActivities}
157
- data={pageCommon?.activities}
155
+ data={pageCommon?.activitiesModal}
158
156
  onClose={() => {
159
157
  setOpenActivities(false)
160
158
  }}
161
159
  />
162
160
  )}
163
- {pageCommon?.rewards && (
161
+ {pageCommon?.rewardsModal && (
164
162
  <MyRewardsModal
165
163
  isOpen={openRewards}
166
- data={pageCommon?.rewards}
164
+ data={pageCommon?.rewardsModal}
167
165
  onClose={() => {
168
166
  setOpenRewards(false)
169
167
  }}
@@ -2,8 +2,7 @@ import { Picture } from '@anker-in/headless-ui'
2
2
  import useClickOutside from '../../context/hooks/useClickOutside'
3
3
  import classNames from 'classnames'
4
4
  import { useEffect, useState } from 'react'
5
- import { roundedBrands } from '../../const'
6
- import { useHeadlessContext } from '@anker-in/lib'
5
+ import { useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
7
6
 
8
7
  interface Country {
9
8
  id: string
@@ -23,7 +22,7 @@ export function CountrySelect({ countries, loading, className, value, onChange }
23
22
  const [show, setShow] = useState(false)
24
23
  const [display, setDisplay] = useState<any>('')
25
24
  const { brand } = useHeadlessContext()
26
- const rounded = roundedBrands.includes(brand)
25
+ const rounded = ROUNDED_BRANDS.includes(brand)
27
26
  const dorpdown = useClickOutside<HTMLDivElement>(() => {
28
27
  setShow(false)
29
28
  })
@@ -75,7 +74,7 @@ export function CountrySelect({ countries, loading, className, value, onChange }
75
74
 
76
75
  <Picture
77
76
  source="https://cdn.shopify.com/s/files/1/0517/6767/3016/files/country-select.png?v=1692202500"
78
- imgClassName="pointer-events-none absolute right-0 top-0 bottom-0 !w-[45px] object-cover"
77
+ className="absolute pointer-events-none right-0 top-0 bottom-0 size-[50px] object-cover"
79
78
  alt="arrow"
80
79
  />
81
80
 
@@ -2,8 +2,7 @@ import classNames from 'classnames'
2
2
  import { Picture } from '@anker-in/headless-ui'
3
3
  import { useEffect, useMemo, useState } from 'react'
4
4
  import useClickOutside from '../../context/hooks/useClickOutside'
5
- import { useHeadlessContext } from '@anker-in/lib'
6
- import { roundedBrands } from '../../const'
5
+ import { useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
7
6
 
8
7
  interface StateSelectProps {
9
8
  states: { code: string; id: string; name: string }[]
@@ -19,7 +18,7 @@ export function StateSelect({ states, stateName = '', stateCode = '', className
19
18
  const [show, setShow] = useState(false)
20
19
  const [display, setDisplay] = useState<any>('')
21
20
  const { brand } = useHeadlessContext()
22
- const rounded = roundedBrands.includes(brand)
21
+ const rounded = ROUNDED_BRANDS.includes(brand)
23
22
 
24
23
  const dropdown = useClickOutside<HTMLDivElement>(() => {
25
24
  setShow(false)
@@ -7,14 +7,13 @@ import { Input } from './Input'
7
7
  import { StateSelect } from './StateSelect'
8
8
  import { ALPC_COUNTRY_MAP } from '../../context/const'
9
9
  import { useCreditsContext } from '../../context/provider'
10
- import { useHeadlessContext } from '@anker-in/lib'
10
+ import { useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
11
11
  import { AddressFormProps } from './type'
12
- import { roundedBrands } from '../../const'
13
12
 
14
13
  export const AddressForm = ({ countries, countriesLoading, form, validate, errors, onChange }: AddressFormProps) => {
15
14
  const { profile, customer } = useCreditsContext()
16
15
  const { locale, brand } = useHeadlessContext()
17
- const rounded = roundedBrands.includes(brand)
16
+ const rounded = ROUNDED_BRANDS.includes(brand)
18
17
  const [address, setAddress] = useState<Record<string, any>>()
19
18
 
20
19
  const states = useMemo(() => {
@@ -7,14 +7,12 @@ import RedeemProductModal from './RedeemProductModal'
7
7
  import { useCreditsContext } from '../context/provider'
8
8
  import useRedeemableList from '../context/hooks/useRedeemableList'
9
9
  import { AlpcConsumeType, AlpcErrorCode } from '../context/const'
10
- import { useHeadlessContext, useProductsByHandles } from '@anker-in/lib'
10
+ import { useHeadlessContext, useProductsByHandles, gaTrack, ROUNDED_BRANDS } from '@anker-in/lib'
11
11
  import type { RedeemableItem as RedeemableItemType } from '../type'
12
12
  import { RedeemableItem } from './RedeemableItem'
13
13
  import RulesModal from '../modal/rulesModal'
14
14
  import { CreditsRedeemListCopy } from './type'
15
- import { gaTrack } from '@anker-in/lib'
16
15
  import { useRegistration } from '../../../components/registration'
17
- import { roundedBrands } from '../const'
18
16
 
19
17
  export const CreditsRedeemList = ({ copy }: { copy: CreditsRedeemListCopy }) => {
20
18
  const {
@@ -25,7 +23,7 @@ export const CreditsRedeemList = ({ copy }: { copy: CreditsRedeemListCopy }) =>
25
23
  } = useCreditsContext()
26
24
  const { authCodeActivate } = useRegistration()
27
25
  const { brand } = useHeadlessContext()
28
- const rounded = roundedBrands.includes(brand)
26
+ const rounded = ROUNDED_BRANDS.includes(brand)
29
27
 
30
28
  const isLogin = Object.keys(profile || {}).length > 0
31
29
 
@@ -1,12 +1,11 @@
1
1
  import { Button, Text } from '@anker-in/headless-ui'
2
2
  import classNames from 'classnames'
3
3
  import { AddressForm } from '../AddressForm'
4
- import { useHeadlessContext } from '@anker-in/lib'
4
+ import { useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
5
5
  import type { RedeemableItem as RedeemableItemType } from '../../type'
6
6
  import { CreditsRedeemListCopy } from '../type'
7
7
  import { ProductInfo } from './ProductInfo'
8
8
  import useCountries from '../../context/hooks/useCountries'
9
- import { roundedBrands } from '../../const'
10
9
 
11
10
  type AddressProps = {
12
11
  copy: CreditsRedeemListCopy
@@ -36,7 +35,7 @@ export const Address = ({
36
35
  item,
37
36
  }: AddressProps) => {
38
37
  const { storeDomain, brand } = useHeadlessContext()
39
- const rounded = roundedBrands.includes(brand)
38
+ const rounded = ROUNDED_BRANDS.includes(brand)
40
39
  const { countries = [], isLoading: countriesLoading } = useCountries({ shopifyStoreDomain: storeDomain })
41
40
 
42
41
  return (
@@ -1,4 +1,4 @@
1
- import { Picture } from '@anker-in/headless-ui'
1
+ import { Picture, Text } from '@anker-in/headless-ui'
2
2
  import { formatPrice } from '../../context/utils'
3
3
  import type { RedeemableItem as RedeemableItemType } from '../../type'
4
4
  import { CreditsRedeemListCopy } from '../type'
@@ -34,9 +34,11 @@ export const ProductInfo = ({ item, copy }: ProductInfoProps) => {
34
34
  </div>
35
35
 
36
36
  <div className="mt-[16px] md:mt-[12px]">
37
- <div className="mb-[12px] line-clamp-1 text-[16px] font-bold l:!hidden" title={item.product.title}>
38
- {item.product.title}
39
- </div>
37
+ <Text
38
+ className="mb-[12px] line-clamp-1 text-[16px] font-bold l:!hidden"
39
+ html={item.product.title}
40
+ title={item.product.title}
41
+ ></Text>
40
42
  <div className="flex font-semibold leading-[1.4] md:flex-col">
41
43
  <div className="mr-[40px] text-[15px] font-bold text-[#777] md:mr-0 md:text-[12px]">
42
44
  <div className="mb-[8px] flex items-center md:mb-[4px]">
@@ -3,8 +3,7 @@ import classNames from 'classnames'
3
3
  import type { RedeemableItem as RedeemableItemType } from '../../type'
4
4
  import { CreditsRedeemListCopy } from '../type'
5
5
  import { ProductInfo } from './ProductInfo'
6
- import { useHeadlessContext } from '@anker-in/lib'
7
- import { roundedBrands } from '../../const'
6
+ import { useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
8
7
 
9
8
  type SuccessProps = {
10
9
  copy: CreditsRedeemListCopy
@@ -18,7 +17,7 @@ type SuccessProps = {
18
17
 
19
18
  export const Success = ({ copy, shippingProduct, loading, address, disabled, onClose, item }: SuccessProps) => {
20
19
  const { brand } = useHeadlessContext()
21
- const rounded = roundedBrands.includes(brand)
20
+ const rounded = ROUNDED_BRANDS.includes(brand)
22
21
  return (
23
22
  <div className={classNames('max-h-[500px] overflow-y-auto px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]')}>
24
23
  <div className="flex flex-col items-center">
@@ -8,9 +8,8 @@ import type { RedeemableItem as RedeemableItemType } from '../type'
8
8
  import { AlpcConsumeType, ConsumeType } from '../context/const'
9
9
  import { numberFormat } from '../context/utils'
10
10
  import type { CreditsRedeemListCopy } from './type'
11
- import { gaTrack, useHeadlessContext } from '@anker-in/lib'
11
+ import { gaTrack, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
12
12
  import { NoneProductValue } from './NonProductValue'
13
- import { roundedBrands } from '../const'
14
13
 
15
14
  export function RedeemableItem({
16
15
  copy,
@@ -33,7 +32,7 @@ export function RedeemableItem({
33
32
  } = useCreditsContext()
34
33
  const { brand } = useHeadlessContext()
35
34
  const isLogin = Object.keys(profile || {}).length > 0
36
- const rounded = roundedBrands.includes(brand)
35
+ const rounded = ROUNDED_BRANDS.includes(brand)
37
36
 
38
37
  const isDisabled = useMemo(() => {
39
38
  if (item.alpc?.remainingInventory <= 0 && item.alpc?.isLimited) {
@@ -6,18 +6,17 @@ import { useMemo, useState } from 'react'
6
6
  import { TaskType, type CreditsWaysToGetCreditsProps } from './type'
7
7
  import { useActions } from './useActions'
8
8
  import { useCreditsContext } from '../context/provider'
9
- import { classNames as cn, useHeadlessContext } from '@anker-in/lib'
9
+ import { classNames as cn, useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
10
10
  import { useRegistration } from '../../registration'
11
11
  import { CreditsUploadReceiptModal } from '../modal/creditsUploadReceiptModal'
12
12
  import { CreditsSubscribeModal } from '../modal/subscribeModal'
13
- import { roundedBrands } from '../const'
14
13
 
15
14
  export const CreditsWaysToGetCredits = ({ copy, classNames }: CreditsWaysToGetCreditsProps) => {
16
15
  const [showMore, setShowMore] = useState(false)
17
16
  const { profile } = useCreditsContext()
18
17
  const { authCodeActivate } = useRegistration()
19
18
  const { brand } = useHeadlessContext()
20
- const rounded = roundedBrands.includes(brand)
19
+ const rounded = ROUNDED_BRANDS.includes(brand)
21
20
  const isLogin = !!profile
22
21
 
23
22
  const [isUploadReceiptModalOpen, setIsUploadReceiptModalOpen] = useState(false)
@@ -223,6 +222,9 @@ export const CreditsWaysToGetCredits = ({ copy, classNames }: CreditsWaysToGetCr
223
222
  copy={copy.subscribe}
224
223
  onSuccess={() => {
225
224
  setIsSubscribeSuccess(true)
225
+ setTimeout(() => {
226
+ setIsSubscribeModalOpen(false)
227
+ }, 3000)
226
228
  }}
227
229
  isOpen={isSubscribeModalOpen}
228
230
  onClose={() => {
@@ -77,7 +77,10 @@ export const useActions = ({
77
77
  handleClick: () =>
78
78
  handleClickWithTrack({
79
79
  buttonName: copy?.activate,
80
- callback: () => authCodeActivate.open(),
80
+ callback: () => {
81
+ authCodeActivate.setAutoSendEmail(true)
82
+ authCodeActivate.open()
83
+ },
81
84
  id: TaskType.Activate,
82
85
  }),
83
86
  },
@@ -9,8 +9,7 @@ import { CreditsModalContainer, type ModalContainerProps } from './modalContaine
9
9
  import Tip from './tip'
10
10
  import LoadingDots from './loadingDots'
11
11
  import useMyRewards from '../context/hooks/useMyRewards'
12
- import { useHeadlessContext } from '@anker-in/lib'
13
- import { roundedBrands } from '../const'
12
+ import { useHeadlessContext, ROUNDED_BRANDS } from '@anker-in/lib'
14
13
 
15
14
  export interface MyRewardsMetafields {
16
15
  title: string
@@ -45,7 +44,7 @@ interface MyRewardsModalProps extends ModalContainerProps {
45
44
  function MyRewardsModal({ data, ...props }: MyRewardsModalProps) {
46
45
  const [activeTab, setActiveTab] = useState(AlpcConsumeType.Coupon)
47
46
  const { brand } = useHeadlessContext()
48
- const rounded = roundedBrands.includes(brand)
47
+ const rounded = ROUNDED_BRANDS.includes(brand)
49
48
 
50
49
  const [couponPage, setCouponPage] = useState(1)
51
50
  const [productPage, setProductPage] = useState(1)