@axos-web-dev/shared-components 2.0.0-dev.1 → 2.0.0-dev.10

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 (214) hide show
  1. package/README.md +111 -111
  2. package/dist/ATMLocator/ATMLocator.js +6 -11
  3. package/dist/Article/Article.d.ts +2 -2
  4. package/dist/Article/Article.js +13 -2
  5. package/dist/Auth/ErrorAlert.js +7 -12
  6. package/dist/Auth/SignInPassword.js +0 -1
  7. package/dist/Avatar/Avatar.module.js +7 -7
  8. package/dist/Blockquote/Blockquote.module.js +3 -3
  9. package/dist/BulletItem/BulletItem.js +0 -1
  10. package/dist/Button/Button.js +7 -13
  11. package/dist/Calculators/AnnualFeeCalculator/index.js +0 -1
  12. package/dist/Calculators/ApyCalculator/index.js +3 -1
  13. package/dist/Calculators/AxosOneCalculator/index.js +16 -9
  14. package/dist/Calculators/BalanceAPYCalculator/index.js +0 -1
  15. package/dist/Calculators/BuyDownCalculator/index.js +0 -1
  16. package/dist/Calculators/Calculator.js +4 -9
  17. package/dist/Calculators/MarginTradingCalculator/index.js +119 -2
  18. package/dist/Calculators/MarineLoanMonthlyPaymentCalculator/index.js +0 -1
  19. package/dist/Calculators/MaxLoanCalculator/index.js +0 -1
  20. package/dist/Calculators/MonthlyPaymentCalculator/index.js +0 -1
  21. package/dist/Calculators/MonthlyPaymentLVFCalculator/index.js +0 -1
  22. package/dist/Calculators/SummitApyCalculator/index.js +3 -2
  23. package/dist/Carousel/index.js +6 -11
  24. package/dist/Chatbot/AnimatedGradientBorder.css.d.ts +2 -0
  25. package/dist/Chatbot/AnimatedGradientBorder.css.js +7 -3
  26. package/dist/Chatbot/Bubble.css.js +2 -1
  27. package/dist/Chatbot/Bubble.d.ts +2 -1
  28. package/dist/Chatbot/Bubble.js +102 -92
  29. package/dist/Chatbot/Chat.js +0 -7
  30. package/dist/Chatbot/ChatWindow.css.d.ts +4 -0
  31. package/dist/Chatbot/ChatWindow.css.js +8 -0
  32. package/dist/Chatbot/ChatWindow.d.ts +2 -0
  33. package/dist/Chatbot/ChatWindow.js +34 -15
  34. package/dist/Chatbot/Chatbot.d.ts +2 -2
  35. package/dist/Chatbot/Chatbot.js +164 -33
  36. package/dist/Chatbot/ChatbotMessage.d.ts +2 -0
  37. package/dist/Chatbot/ChatbotMessage.js +88 -25
  38. package/dist/Chatbot/index.js +5 -1
  39. package/dist/Chatbot/store/chat.d.ts +6 -0
  40. package/dist/Chatbot/store/chat.js +14 -2
  41. package/dist/Chatbot/store/messages.d.ts +1 -0
  42. package/dist/Chatbot/store/messages.js +5 -2
  43. package/dist/Chevron/index.js +6 -12
  44. package/dist/Comparison/Comparison.js +6 -11
  45. package/dist/ExecutiveBio/ExecutiveBio.css.d.ts +51 -1
  46. package/dist/ExecutiveBio/ExecutiveBio.css.js +48 -46
  47. package/dist/ExecutiveBio/ExecutiveBio.d.ts +1 -1
  48. package/dist/ExecutiveBio/ExecutiveBio.interface.d.ts +3 -1
  49. package/dist/ExecutiveBio/ExecutiveBio.js +146 -155
  50. package/dist/ExecutiveBio/ExecutiveBioSet.d.ts +1 -2
  51. package/dist/ExecutiveBio/ExecutiveBioSet.js +29 -16
  52. package/dist/ExecutiveBio/index.js +2 -1
  53. package/dist/FaqAccordion/index.js +6 -11
  54. package/dist/FdicCallout/FdicCallout.module.js +2 -2
  55. package/dist/FooterSiteMap/AxosBank/FooterSiteMap.js +87 -188
  56. package/dist/Forms/ApplicationStart.js +0 -1
  57. package/dist/Forms/ApplyNow.js +5 -10
  58. package/dist/Forms/BoatMooringLocation.d.ts +2 -0
  59. package/dist/Forms/BoatMooringLocation.js +56 -1
  60. package/dist/Forms/ClearingForm.js +0 -1
  61. package/dist/Forms/CommercialDeposits.js +0 -1
  62. package/dist/Forms/CommercialDepositsNoLendingOption.js +0 -1
  63. package/dist/Forms/CommercialLending.js +0 -1
  64. package/dist/Forms/CommercialPremiumFinance.js +0 -1
  65. package/dist/Forms/ConstructionLendingDynamic.d.ts +12 -0
  66. package/dist/Forms/ConstructionLendingDynamic.js +324 -0
  67. package/dist/Forms/ContactCompany.js +0 -1
  68. package/dist/Forms/ContactCompanyTitle.js +0 -1
  69. package/dist/Forms/ContactUs.js +0 -1
  70. package/dist/Forms/ContactUsAAS.js +0 -1
  71. package/dist/Forms/ContactUsBusiness.js +6 -11
  72. package/dist/Forms/ContactUsBusinessNameEmail.js +6 -11
  73. package/dist/Forms/ContactUsLVF.js +0 -1
  74. package/dist/Forms/ContactUsNMLSId.js +6 -11
  75. package/dist/Forms/CpraRequest.js +100 -3
  76. package/dist/Forms/CraPublicFile.js +6 -11
  77. package/dist/Forms/DealerServices.js +0 -1
  78. package/dist/Forms/EmailOnly.js +13 -13
  79. package/dist/Forms/EmailUs.js +40 -35
  80. package/dist/Forms/FormEnums.js +1 -3
  81. package/dist/Forms/Forms.css.d.ts +4 -1
  82. package/dist/Forms/Forms.css.js +42 -42
  83. package/dist/Forms/HoneyPot/index.js +0 -1
  84. package/dist/Forms/MortgageRate/MortgageRateForm.js +7 -12
  85. package/dist/Forms/MortgageRate/MortgageRateWatch.js +6 -11
  86. package/dist/Forms/MortgageWarehouseLending.js +6 -11
  87. package/dist/Forms/QuickPricer/QuickPricerForm.js +0 -1
  88. package/dist/Forms/ScheduleCall.js +0 -1
  89. package/dist/Forms/ScheduleCallPremier.js +0 -1
  90. package/dist/Forms/SuccesForm.js +7 -12
  91. package/dist/Forms/VendorQuestionnaire.js +0 -1
  92. package/dist/Forms/index.d.ts +1 -0
  93. package/dist/Forms/index.js +2 -1
  94. package/dist/HeroBanner/HeroBanner.css.d.ts +1 -0
  95. package/dist/HeroBanner/HeroBanner.css.js +19 -16
  96. package/dist/HeroBanner/HeroBanner.d.ts +1 -1
  97. package/dist/HeroBanner/HeroBanner.interface.d.ts +4 -1
  98. package/dist/HeroBanner/HeroBanner.js +26 -160
  99. package/dist/HeroBanner/HeroVideoPoster.d.ts +5 -0
  100. package/dist/HeroBanner/HeroVideoPoster.js +24 -0
  101. package/dist/HeroBanner/LargeBanner.css.d.ts +110 -0
  102. package/dist/HeroBanner/LargeBanner.css.js +22 -8
  103. package/dist/HeroBanner/LargeHeroBanner.d.ts +5 -0
  104. package/dist/HeroBanner/LargeHeroBanner.js +228 -0
  105. package/dist/HeroBanner/index.js +3 -2
  106. package/dist/Hyperlink/index.js +10 -14
  107. package/dist/IconBillboard/IconBillboard.css.d.ts +1 -0
  108. package/dist/IconBillboard/IconBillboard.css.js +11 -9
  109. package/dist/IconBillboard/index.js +2 -1
  110. package/dist/ImageBillboard/ImageBillboardSet.js +14 -8
  111. package/dist/ImageLink/ImageLink.js +5 -10
  112. package/dist/ImageLink/ImageLinkSet.js +5 -10
  113. package/dist/ImageLink/index.js +5 -10
  114. package/dist/Insight/Featured/CategorySelector.js +5 -10
  115. package/dist/Insight/Featured/Featured.js +6 -11
  116. package/dist/Insight/Featured/Header.js +6 -11
  117. package/dist/Interstitial/Interstitial.module.js +10 -10
  118. package/dist/LandingPageHeader/LandingPageHeader.css.d.ts +19 -1
  119. package/dist/LandingPageHeader/LandingPageHeader.css.js +6 -6
  120. package/dist/LandingPageHeader/LandingPageHeader.d.ts +3 -1
  121. package/dist/LandingPageHeader/LandingPageHeader.js +42 -16
  122. package/dist/LoadingIndicator/index.js +0 -1
  123. package/dist/Modal/Modal.js +5 -10
  124. package/dist/Modal/contextApi/store.d.ts +16 -2
  125. package/dist/Modal/contextApi/store.js +37 -6
  126. package/dist/NavigationMenu/AxosALTS/NavBar.module.js +23 -23
  127. package/dist/NavigationMenu/AxosALTS/NavData.d.ts +7 -1
  128. package/dist/NavigationMenu/AxosALTS/NavData.js +6 -137
  129. package/dist/NavigationMenu/AxosALTS/index.js +14 -16
  130. package/dist/NavigationMenu/AxosAdvisor/NavBar.module.js +52 -52
  131. package/dist/NavigationMenu/AxosAdvisor/SubNavBar.js +0 -1
  132. package/dist/NavigationMenu/AxosAdvisor/index.js +0 -1
  133. package/dist/NavigationMenu/AxosAdvisorServices/NavBar.module.js +53 -53
  134. package/dist/NavigationMenu/AxosAdvisorServices/SubNavBar.js +0 -1
  135. package/dist/NavigationMenu/AxosAdvisorServices/index.js +0 -1
  136. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileMenu.js +341 -73
  137. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileMenu.module.js +50 -17
  138. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.d.ts +27 -12
  139. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.js +219 -366
  140. package/dist/NavigationMenu/AxosBank/NavBar.module.js +39 -39
  141. package/dist/NavigationMenu/AxosBank/NavData.d.ts +39 -2
  142. package/dist/NavigationMenu/AxosBank/NavData.js +34 -166
  143. package/dist/NavigationMenu/AxosBank/SubNavBar.js +232 -248
  144. package/dist/NavigationMenu/AxosBank/index.js +19 -54
  145. package/dist/NavigationMenu/AxosClearing/NavBar.module.js +37 -37
  146. package/dist/NavigationMenu/AxosClearing/index.js +0 -1
  147. package/dist/NavigationMenu/AxosFiduciary/NavBar.module.js +41 -41
  148. package/dist/NavigationMenu/LaVictoire/NavBar.module.js +37 -37
  149. package/dist/NavigationMenu/LaVictoire/NavData.d.ts +13 -2
  150. package/dist/NavigationMenu/LaVictoire/NavData.js +14 -146
  151. package/dist/NavigationMenu/LaVictoire/SubNavBar.js +4 -1
  152. package/dist/NavigationMenu/LaVictoire/index.js +19 -44
  153. package/dist/NavigationMenu/Navbar.js +8 -9
  154. package/dist/NavigationMenu/SignInNavButton.js +19 -27
  155. package/dist/SetContainer/SetContainer.js +6 -11
  156. package/dist/SocialMediaBar/iconsRepository.d.ts +44 -14
  157. package/dist/SocialMediaBar/iconsRepository.js +32 -41
  158. package/dist/SocialMediaBar/index.js +3 -1
  159. package/dist/Tab/Tab.js +0 -1
  160. package/dist/Table/Table.js +0 -1
  161. package/dist/VideoTile/VideoTile.js +4 -9
  162. package/dist/VideoWrapper/index.js +4 -9
  163. package/dist/WalnutIframe/wrapper.module.js +3 -3
  164. package/dist/assets/Avatar/Avatar.css +59 -59
  165. package/dist/assets/Blockquote/Blockquote.css +72 -72
  166. package/dist/assets/Calculators/ApyCalculator/ApyCalculator.css +1 -1
  167. package/dist/assets/Calculators/MarginTradingCalculator/MarginTradingCalculator.css +2 -2
  168. package/dist/assets/Calculators/SummitApyCalculator/BalanceAPYCalculator.css +1 -1
  169. package/dist/assets/Carousel/Carousel.css +1 -1
  170. package/dist/assets/Chatbot/AnimatedGradientBorder.css +65 -8
  171. package/dist/assets/Chatbot/Bubble.css +19 -6
  172. package/dist/assets/Chatbot/ChatWindow.css +44 -10
  173. package/dist/assets/DownloadTile/DownloadTile.css +2 -2
  174. package/dist/assets/ExecutiveBio/ExecutiveBio.css +280 -172
  175. package/dist/assets/FdicCallout/FdicCallout.css +48 -48
  176. package/dist/assets/Forms/Forms.css +122 -115
  177. package/dist/assets/HelpArticle/HelpArticle.css +2 -2
  178. package/dist/assets/HeroBanner/HeroBanner.css +82 -65
  179. package/dist/assets/HeroBanner/LargeBanner.css +126 -59
  180. package/dist/assets/IconBillboard/IconBillboard.css +35 -28
  181. package/dist/assets/Inputs/Input.css +1 -1
  182. package/dist/assets/Insight/Featured/CategorySelector.css +1 -1
  183. package/dist/assets/Insight/Insight.css +4 -4
  184. package/dist/assets/Interstitial/Interstitial.css +142 -142
  185. package/dist/assets/LandingPageHeader/LandingPageHeader.css +28 -15
  186. package/dist/assets/NavigationMenu/AxosALTS/NavBar.css +264 -264
  187. package/dist/assets/NavigationMenu/AxosAdvisor/NavBar.css +609 -609
  188. package/dist/assets/NavigationMenu/AxosAdvisorServices/NavBar.css +630 -630
  189. package/dist/assets/NavigationMenu/AxosBank/MobileMenu/MobileMenu.css +353 -192
  190. package/dist/assets/NavigationMenu/AxosBank/NavBar.css +445 -445
  191. package/dist/assets/NavigationMenu/AxosClearing/NavBar.css +484 -484
  192. package/dist/assets/NavigationMenu/AxosFiduciary/NavBar.css +427 -427
  193. package/dist/assets/NavigationMenu/LaVictoire/NavBar.css +429 -429
  194. package/dist/assets/Topic/Topic.css +1 -1
  195. package/dist/assets/Typography/Typography.css +1 -1
  196. package/dist/assets/VideoTile/VideoTile.css +1 -1
  197. package/dist/assets/WalnutIframe/wrapper.css +48 -48
  198. package/dist/assets/globals.css +28 -18
  199. package/dist/assets/notification.mp3.js +4 -0
  200. package/dist/assets/utils/optimizeImage/optimizeImage.css +47 -47
  201. package/dist/main.js +16 -6
  202. package/dist/utils/allowedAxosDomains.d.ts +5 -2
  203. package/dist/utils/allowedAxosDomains.js +50 -47
  204. package/dist/utils/appendQueryParams.js +36 -5
  205. package/dist/utils/getPosition.d.ts +1 -0
  206. package/dist/utils/getPosition.js +17 -0
  207. package/dist/utils/index.js +2 -1
  208. package/dist/utils/optimizeImage/optimizeImage.module.js +3 -3
  209. package/dist/utils/validateExternalLinks.d.ts +1 -1
  210. package/dist/utils/validateExternalLinks.js +4 -6
  211. package/dist/utils/variant.types.d.ts +1 -0
  212. package/package.json +148 -148
  213. package/dist/NavigationMenu/NavDataJson.d.ts +0 -2
  214. package/dist/NavigationMenu/NavDataJson.js +0 -317
@@ -1,52 +1,53 @@
1
- const moreDomains = {
2
- "{AXOS}": process.env.AXOS_URL ?? "https://www.axos.com",
3
- "{AXOSBANK}": process.env.AXOS_BANK_URL !== void 0 ? process.env.AXOS_BANK_URL : "https://www.axosbank.com",
4
- "{AXOSCLEARING}": process.env.CLEARING_URL || "https://axosclearing.com",
5
- "{AAS}": process.env.AAS_URL || "https://www.axosadvisorservices.com",
6
- "{AXA}": process.env.AXA_URL || "https://www.axosadvisor.com",
7
- "{AFS}": process.env.AFS_URL || "https://www.axosfiduciaryservices.com",
8
- "{NATIONWIDE}": process.env.NATIOWIDE_URL || "https://www.nationwide.axosbank.com",
9
- "{ENROLLMENT}": process.env.ENROLLMENT_URL || "https://onboard.axos.com",
10
- "{LEGACYENROLLMENT}": process.env.LEGACY_ENROLLMENT_URL || "https://enrollment.axosbank.com",
1
+ const getMoreDomains = (domains) => ({
2
+ "{AXOS}": domains.AXOS_URL || "https://www.axos.com",
3
+ "{AXOSBANK}": domains.AXOS_BANK_URL !== void 0 ? domains.AXOS_BANK_URL : "https://www.axosbank.com",
4
+ "{AXOSCLEARING}": domains.CLEARING_URL || "https://axosclearing.com",
5
+ "{AAS}": domains.AAS_URL || "https://www.axosadvisorservices.com",
6
+ "{AXA}": domains.AXA_URL || "https://www.axosadvisor.com",
7
+ "{AFS}": domains.AFS_URL || "https://www.axosfiduciaryservices.com",
8
+ "{NATIONWIDE}": domains.NATIOWIDE_URL || "https://www.nationwide.axosbank.com",
9
+ "{ENROLLMENT}": domains.ENROLLMENT_URL || "https://onboard.axos.com",
10
+ "{LEGACYENROLLMENT}": domains.LEGACY_ENROLLMENT_URL || "https://enrollment.axosbank.com",
11
11
  "{ASSETSURL}": "https://assets.axos.com",
12
12
  "{IMAGEASSETSURL}": "https://images.axos.com",
13
- "{ONLINEBANKING}": process.env.ONLINEBANKING_URL || "https://onlinebanking.uat.axosbank.com",
14
- "{UFBDIRECT}": process.env.UFB_URL || "https://www.ufbdirect.com",
15
- "{ARMS}": process.env.ARMS_URL || "https://arms.axosadvisor.com",
16
- "{APPS}": process.env.APPS_URL || "https://apps.axosbank.com",
17
- "{AFP}": process.env.AFP_URL || "https://afp.axosbank.com",
18
- "{INVESTORS}": process.env.INVESTORS_URL || "https://investors.axosfinancial.com",
19
- "{OBAXB}": process.env.ONLINEBANKING_URL || "https://onlinebanking.axosbank.com",
20
- "{UNVENROLLMENT}": process.env.UNVENROLLMENT_URL || "https://enroll.axosbank.com",
13
+ "{ONLINEBANKING}": domains.ONLINEBANKING_URL || "https://onlinebanking.uat.axosbank.com",
14
+ "{UFBDIRECT}": domains.UFB_URL || "https://www.ufbdirect.com",
15
+ "{ARMS}": domains.ARMS_URL || "https://arms.axosadvisor.com",
16
+ "{APPS}": domains.APPS_URL || "https://apps.axosbank.com",
17
+ "{AFP}": domains.AFP_URL || "https://afp.axosbank.com",
18
+ "{INVESTORS}": domains.INVESTORS_URL || "https://investors.axosfinancial.com",
19
+ "{OBAXB}": domains.ONLINEBANKING_URL || "https://onlinebanking.axosbank.com",
20
+ "{UNVENROLLMENT}": domains.UNVENROLLMENT_URL || "https://enroll.axosbank.com",
21
21
  "{AUTOAXB}": "https://auto.axosbank.com/partner/axos-purchase/AU",
22
- "{COMMERCIALPORTAL}": process.env.COMMERCIALPORTAL_URL || "https://portals.axosbank.com",
23
- "{DEVAXC}": process.env.DEVELOPER_CLEARING || "https://developer.axosclearing.com",
24
- "{AFF}": process.env.FUNDFINDER_URL || "https://axosfundfinder.com",
25
- "{APL}": process.env.PERSONAL_LOANS_URL || "https://personalloans.axosbank.com",
26
- "{AXSEC}": process.env.AXOS_SECURE_URL || "https://secure.axosbank.com",
27
- "{SECURE}": process.env.AXOS_SECURE_URL || "https://secure.axosbank.com",
28
- "{DOWNLOADAXOS}": process.env.AXOS_DOWNLOAD_URL || "https://downloads.axos.com",
29
- "{SBEAX}": process.env.SBB_ENROLL || "https://small-business-enrollment.axosbank.com",
30
- "{CPDS}": process.env.CP_DECISIONLENDER || "https://cp.decisionlender.solutions",
31
- "{JHALOAN}": process.env.JHA_LOANSPQ || "https://jha.loanspq.com",
32
- "{AXSECURITIES}": process.env.AXOS_SECURITIES_URL ?? "https://www.axossecurities.com",
33
- "{LIBSYN}": process.env.AXOS_LIBSYN || "https://sites.libsyn.com",
34
- "{AXBC}": process.env.AXOS_BUSINESS_CENTER ?? "https://www.axosbusinesscenter.com",
35
- "{AXMWDJ}": process.env.AXOS_MY_WORK_DAY_JOBS ?? "https://axos.wd5.myworkdayjobs.com/Axos",
36
- "{AXMHA}": process.env.AXOS_MY_HOME_ADVANTAGE ?? "https://axos.myhomeadvantage.com",
37
- "{AXTPL}": process.env.AXOS_THIRD_PARTY_LENDING ?? "https://thirdpartylending.axosbank.com",
38
- "{AXBHUBSVIDYARD}": process.env.AXBHUBSVIDYARD_URL || "https://www.axosbank.hubs.vidyard.com",
39
- "{AUTOAX}": process.env.AUTO_AXOSBANK_URL || "https://auto.axosbank.com",
40
- "{AFAST}": process.env.SECURE_FAST_URL || "https://secure.approvedfast.com",
41
- "{LVFMYSITE}": process.env.LVF_MYSITE_URL || "https://lavictoire-finance.my.site.com",
42
- "{PERSONALLOANS}": process.env.PERSONAL_LOANS_URL || "https://personalloans.axosbank.com",
43
- "{MODELSELECTION}": process.env.MODEL_SELECTION_URL || "https://modelselection.axos.com",
44
- "{COMMERCIALPORTAL_LOGIN}": process.env.COMMERCIALPORTAL_URL ? `${process.env.COMMERCIALPORTAL_URL}/login` : "https://portals.axosbank.com/login",
45
- "{COMMERCIALPORTAL_REGISTER}": process.env.COMMERCIALPORTAL_URL ? `${process.env.COMMERCIALPORTAL_URL}/Register` : "https://portals.axosbank.com/Register",
46
- "{SHAREAXB}": process.env.SHAREAXB_URL || "https://share.axosbank.com",
47
- "{MERIDIAN}": process.env.MERIDIAN_URL || "https://www.axosbank.com/"
48
- };
49
- const isAllowedUrl = (url) => {
22
+ "{COMMERCIALPORTAL}": domains.COMMERCIALPORTAL_URL || "https://portals.axosbank.com",
23
+ "{DEVAXC}": domains.DEVELOPER_CLEARING || "https://developer.axosclearing.com",
24
+ "{AFF}": domains.FUNDFINDER_URL || "https://axosfundfinder.com",
25
+ "{APL}": domains.PERSONAL_LOANS_URL || "https://personalloans.axosbank.com",
26
+ "{AXSEC}": domains.AXOS_SECURE_URL || "https://secure.axosbank.com",
27
+ "{SECURE}": domains.AXOS_SECURE_URL || "https://secure.axosbank.com",
28
+ "{DOWNLOADAXOS}": domains.AXOS_DOWNLOAD_URL || "https://downloads.axos.com",
29
+ "{SBEAX}": domains.SBB_ENROLL || "https://small-business-enrollment.axosbank.com",
30
+ "{CPDS}": domains.CP_DECISIONLENDER || "https://cp.decisionlender.solutions",
31
+ "{JHALOAN}": domains.JHA_LOANSPQ || "https://jha.loanspq.com",
32
+ "{AXSECURITIES}": domains.AXOS_SECURITIES_URL || "https://www.axossecurities.com",
33
+ "{LIBSYN}": domains.AXOS_LIBSYN || "https://sites.libsyn.com",
34
+ "{AXBC}": domains.AXOS_BUSINESS_CENTER || "https://www.axosbusinesscenter.com",
35
+ "{AXMWDJ}": domains.AXOS_MY_WORK_DAY_JOBS || "https://axos.wd5.myworkdayjobs.com/Axos",
36
+ "{AXMHA}": domains.AXOS_MY_HOME_ADVANTAGE || "https://axos.myhomeadvantage.com",
37
+ "{AXTPL}": domains.AXOS_THIRD_PARTY_LENDING || "https://thirdpartylending.axosbank.com",
38
+ "{AXBHUBSVIDYARD}": domains.AXBHUBSVIDYARD_URL || "https://www.axosbank.hubs.vidyard.com",
39
+ "{AUTOAX}": domains.AUTO_AXOSBANK_URL || "https://auto.axosbank.com",
40
+ "{AFAST}": domains.SECURE_FAST_URL || "https://secure.approvedfast.com",
41
+ "{LVFMYSITE}": domains.LVF_MYSITE_URL || "https://lavictoire-finance.my.site.com",
42
+ "{PERSONALLOANS}": domains.PERSONAL_LOANS_URL || "https://personalloans.axosbank.com",
43
+ "{MODELSELECTION}": domains.MODEL_SELECTION_URL || "https://modelselection.axos.com",
44
+ "{COMMERCIALPORTAL_LOGIN}": domains.COMMERCIALPORTAL_URL ? `${domains.COMMERCIALPORTAL_URL}/login` : "https://portals.axosbank.com/login",
45
+ "{COMMERCIALPORTAL_REGISTER}": domains.COMMERCIALPORTAL_URL ? `${domains.COMMERCIALPORTAL_URL}/Register` : "https://portals.axosbank.com/Register",
46
+ "{SHAREAXB}": domains.SHAREAXB_URL || "https://share.axosbank.com",
47
+ "{MERIDIAN}": domains.MERIDIAN_URL || "https://www.axosbank.com/"
48
+ });
49
+ const isAllowedUrl = (url, domains) => {
50
+ const moreDomains = getMoreDomains(domains);
50
51
  const uri = new URL(url, location.href);
51
52
  for (const key in moreDomains) {
52
53
  const urlToCompare = new URL(moreDomains[key], location.href);
@@ -54,7 +55,8 @@ const isAllowedUrl = (url) => {
54
55
  }
55
56
  return false;
56
57
  };
57
- const findMoreAxosDomains = (url) => {
58
+ const findMoreAxosDomains = (url, domains) => {
59
+ const moreDomains = getMoreDomains(domains);
58
60
  const regexSearching = /\{[a-xA-Z_-]+\}/;
59
61
  if (regexSearching.test(url)) {
60
62
  const domainToReplace = url.match(regexSearching);
@@ -82,5 +84,6 @@ const findMoreAxosDomains = (url) => {
82
84
  };
83
85
  export {
84
86
  findMoreAxosDomains,
87
+ getMoreDomains,
85
88
  isAllowedUrl
86
89
  };
@@ -1,8 +1,12 @@
1
1
  const appendQueryParams = () => {
2
- const searchParams = new URLSearchParams(window.location.search);
3
- const filterParams = (href) => {
2
+ const currentOrigin = window.location.origin;
3
+ const currentPathname = window.location.pathname;
4
+ const filterParams = (href, currentSearch) => {
4
5
  try {
5
- const url = new URL(href, window.location.origin);
6
+ const search = currentSearch ?? window.location.search;
7
+ const searchParams = new URLSearchParams(search);
8
+ const base = window.location.origin + window.location.pathname + window.location.search;
9
+ const url = new URL(href, base);
6
10
  const existingParams = new URLSearchParams(url.search);
7
11
  const newParams = new URLSearchParams();
8
12
  const addedKeys = /* @__PURE__ */ new Set();
@@ -25,17 +29,44 @@ const appendQueryParams = () => {
25
29
  }
26
30
  const mergedParams = new URLSearchParams(existingParams);
27
31
  newParams.forEach((value, key) => mergedParams.append(key, value));
28
- return `${url.origin}${url.pathname}?${mergedParams.toString()}`;
32
+ return `${url.origin}${url.pathname}?${mergedParams.toString()}${url.hash}`;
29
33
  } catch (e) {
30
34
  console.error(e);
31
35
  return href;
32
36
  }
33
37
  };
38
+ const handleSamePageClick = (e) => {
39
+ const anchor = e.target?.closest?.("a[href]");
40
+ if (!anchor || anchor.classList.contains("ext-link"))
41
+ return;
42
+ const href = anchor.getAttribute("href")?.trim();
43
+ if (!href || href.startsWith("tel:") || href.startsWith("mailto:") || href === "#" || href === "" || href.startsWith("#"))
44
+ return;
45
+ const base = window.location.origin + window.location.pathname + window.location.search;
46
+ const url = new URL(href, base);
47
+ if (url.origin !== currentOrigin || url.pathname !== currentPathname)
48
+ return;
49
+ e.preventDefault();
50
+ e.stopImmediatePropagation();
51
+ const merged = filterParams(href, window.location.search);
52
+ const mergedUrl = new URL(merged, window.location.origin);
53
+ const fullUrl = `${mergedUrl.pathname}${mergedUrl.search}${mergedUrl.hash}`;
54
+ window.history.replaceState({ ...window.history.state }, "", fullUrl);
55
+ window.dispatchEvent(
56
+ new PopStateEvent("popstate", { state: window.history.state })
57
+ );
58
+ if (mergedUrl.hash) {
59
+ const el = document.querySelector(mergedUrl.hash);
60
+ el?.scrollIntoView({ behavior: "smooth" });
61
+ }
62
+ };
63
+ document.addEventListener("click", handleSamePageClick, true);
34
64
  if (window.location.search.length) {
65
+ const searchParams = new URLSearchParams(window.location.search);
35
66
  document.querySelectorAll("a[href]:not(.ext-link)").forEach((anchor) => {
36
67
  const href = anchor.getAttribute("href")?.trim();
37
68
  if (href && !href.startsWith("tel:") && !href.startsWith("mailto:") && href !== "#" && href !== "" && !href.startsWith("#")) {
38
- anchor.href = filterParams(href);
69
+ anchor.href = filterParams(href, searchParams.toString());
39
70
  }
40
71
  });
41
72
  }
@@ -0,0 +1 @@
1
+ export declare const getPosition: (text: string | undefined) => "default" | "top left" | "top right" | "bottom left" | "bottom right";
@@ -0,0 +1,17 @@
1
+ const getPosition = (text) => {
2
+ switch (text) {
3
+ case "top left":
4
+ return "top left";
5
+ case "top right":
6
+ return "top right";
7
+ case "bottom left":
8
+ return "bottom left";
9
+ case "bottom right":
10
+ return "bottom right";
11
+ default:
12
+ return "default";
13
+ }
14
+ };
15
+ export {
16
+ getPosition
17
+ };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { findMoreAxosDomains, isAllowedUrl } from "./allowedAxosDomains.js";
2
+ import { findMoreAxosDomains, getMoreDomains, isAllowedUrl } from "./allowedAxosDomains.js";
3
3
  import { appendQueryParams } from "./appendQueryParams.js";
4
4
  import { createCachedEmailValidator } from "./emailValidation.js";
5
5
  import { associatedEmail } from "./EverestValidity.js";
@@ -15,6 +15,7 @@ export {
15
15
  createCachedEmailValidator,
16
16
  createCachedNMLSValidator,
17
17
  findMoreAxosDomains,
18
+ getMoreDomains,
18
19
  getVariant,
19
20
  getVariantWithRegex,
20
21
  isAbsoluteUrl,
@@ -1,6 +1,6 @@
1
- import '../../assets/utils/optimizeImage/optimizeImage.css';const loader = "_loader_pwl74_10";
2
- const loading = "_loading_pwl74_16";
3
- const shimmer = "_shimmer_pwl74_1";
1
+ import '../../assets/utils/optimizeImage/optimizeImage.css';const loader = "_loader_1cu2x_19";
2
+ const loading = "_loading_1cu2x_31";
3
+ const shimmer = "_shimmer_1cu2x_1";
4
4
  const css = {
5
5
  loader,
6
6
  loading,
@@ -2,4 +2,4 @@ export declare const isAbsoluteUrl: (url: string) => boolean;
2
2
  export declare const shortUrl: (url: string) => string;
3
3
  export declare const isEmailLink: (url: string) => boolean;
4
4
  export declare const isPhoneLink: (url: string) => boolean;
5
- export declare const validateLink: (url: string) => boolean;
5
+ export declare const validateLink: (url: string, domains: Record<string, string>) => boolean;
@@ -8,16 +8,14 @@ const shortUrl = (url) => {
8
8
  return uri.hostname;
9
9
  };
10
10
  const isEmailLink = (url) => {
11
- const uri = new URL(url, location.href);
12
- return uri.protocol == "mailto:";
11
+ return typeof url === "string" && url.trim().toLowerCase().startsWith("mailto:");
13
12
  };
14
13
  const isPhoneLink = (url) => {
15
- const uri = new URL(url, location.href);
16
- return uri.protocol === "tel:";
14
+ return typeof url === "string" && url.trim().toLowerCase().startsWith("tel:");
17
15
  };
18
- const validateLink = (url) => {
16
+ const validateLink = (url, domains) => {
19
17
  let openModal = false;
20
- if (isAbsoluteUrl(url) && !isEmailLink(url) && !isPhoneLink(url) && !isAllowedUrl(url)) {
18
+ if (isAbsoluteUrl(url) && !isEmailLink(url) && !isPhoneLink(url) && !isAllowedUrl(url, domains)) {
21
19
  openModal = true;
22
20
  }
23
21
  return openModal;
@@ -6,3 +6,4 @@ export type SideProps = "left" | "right";
6
6
  export type StarIconTypes = "gold" | "gray";
7
7
  export declare const columnValues: readonly [1, 2, 3, 4, undefined];
8
8
  export type ColumnTypes = (typeof columnValues)[number];
9
+ export type AnchorPointTypes = "default" | "top left" | "top right" | "bottom left" | "bottom right";
package/package.json CHANGED
@@ -1,148 +1,148 @@
1
- {
2
- "name": "@axos-web-dev/shared-components",
3
- "description": "Axos shared components library for web.",
4
- "version": "2.0.0-dev.1",
5
- "type": "module",
6
- "main": "index.js",
7
- "module": "dist/main.js",
8
- "types": "dist/main.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/main.d.ts",
12
- "import": "./dist/main.js"
13
- },
14
- "./styles.css": "./dist/assets/index.css",
15
- "./globals.css": "./dist/assets/globals.css",
16
- "./themes/axos.css": "./dist/assets/themes/axos.css",
17
- "./themes/premier.css": "./dist/assets/themes/premier.css",
18
- "./dist/*": "./dist/*"
19
- },
20
- "files": [
21
- "dist"
22
- ],
23
- "sideEffects": [
24
- "dist/assets/**/*.css"
25
- ],
26
- "scripts": {
27
- "dev": "vite",
28
- "build": "tsc --p ./tsconfig.build.json && vite build",
29
- "lint": "eslint . --report-unused-disable-directives --max-warnings 0",
30
- "preview": "vite preview",
31
- "prepublishOnly": "npm run build",
32
- "check-types": "tsc --pretty --noEmit",
33
- "check-format": "prettier --check .",
34
- "check-lint": "eslint .",
35
- "format": "prettier --write .",
36
- "test-all": "npm run check-format && npm run check-lint && npm run check-types && npm run build",
37
- "prepare": "husky",
38
- "storybook": "storybook dev -p 6006",
39
- "build-storybook": "storybook build",
40
- "npm:link": "npm run build && npm link"
41
- },
42
- "dependencies": {
43
- "@headlessui/react": "^2.2.0",
44
- "@hookform/resolvers": "^5.0.1",
45
- "@next-safe-action/adapter-react-hook-form": "^2.0.2",
46
- "@react-input/mask": "^1.2.15",
47
- "@react-input/number-format": "^1.1.3",
48
- "@storybook/icons": "^1.3.0",
49
- "@storybook/preview-api": "^8.4.7",
50
- "@ts-stack/markdown": "^1.5.0",
51
- "@types/iframe-resizer": "3.5.13",
52
- "@ujet/websdk-headless": "^3.41.4",
53
- "@vanilla-extract/css": "^1.16.1",
54
- "@vanilla-extract/recipes": "^0.5.1 || ^0.5.5",
55
- "antd": "^5.22.5",
56
- "clsx": "^2.1.1",
57
- "framer-motion": "^12.9.2",
58
- "iframe-resizer": "^3.6.6",
59
- "lodash": "^4.17.21",
60
- "moment": "^2.30.1",
61
- "next-safe-action": "^8.0.2",
62
- "react-date-picker": "^11.0.0",
63
- "react-date-range": "^2.0.1",
64
- "react-hook-form": "^7.56.4",
65
- "react-markdown": "^9.1.0",
66
- "react-slick": "^0.30.2",
67
- "react-use": "^17.6.0",
68
- "react-wrap-balancer": "^1.1.1",
69
- "remark-gfm": "^4.0.1",
70
- "rsuite": "^5.75.0",
71
- "slick-carousel": "^1.8.1",
72
- "typed-css-modules": "^0.9.1",
73
- "vite-plugin-svgr": "^4.3.0",
74
- "zod": "^3.24.1",
75
- "zustand": "^4.5.5"
76
- },
77
- "peerDependencies": {
78
- "@vanilla-extract/css-utils": "^0.1.3 || ^0.1.4",
79
- "@vanilla-extract/recipes": "^0.5.1 || ^0.5.5",
80
- "@vanilla-extract/vite-plugin": "^4.0.3 || ^4.0.18",
81
- "next": "^14.1.4 || ^15.0.0 || ^16.0.0",
82
- "react": "^18.2.0 || ^19.0.0",
83
- "react-date-range": "^2.0.1",
84
- "react-dom": "^18.2.0 || ^19.0.0",
85
- "react-slick": "^0.30.2",
86
- "slick-carousel": "^1.8.1"
87
- },
88
- "devDependencies": {
89
- "@chromatic-com/storybook": "^1.9.0",
90
- "@eslint/js": "^9.39.4",
91
- "@rollup/plugin-alias": "^5.1.1",
92
- "@storybook/addon-essentials": "^8.4.7",
93
- "@storybook/addon-interactions": "^8.4.7",
94
- "@storybook/addon-links": "^8.4.7",
95
- "@storybook/addon-mdx-gfm": "^8.4.7",
96
- "@storybook/addon-onboarding": "^8.4.7",
97
- "@storybook/addon-themes": "^8.4.7",
98
- "@storybook/blocks": "^8.4.7",
99
- "@storybook/react": "^8.6.14",
100
- "@storybook/react-vite": "^8.4.7",
101
- "@storybook/test": "^8.6.14",
102
- "@svgr/core": "^8.1.0",
103
- "@svgr/plugin-prettier": "^8.1.0",
104
- "@svgr/plugin-svgo": "^8.1.0",
105
- "@types/lodash": "^4.17.17",
106
- "@types/node": "^20.19.0",
107
- "@types/react": "^19.0.0",
108
- "@types/react-date-range": "^1.4.9",
109
- "@types/react-datepicker": "^6.2.0",
110
- "@types/react-dom": "^19.0.0",
111
- "@types/react-slick": "^0.23.13",
112
- "@typescript-eslint/eslint-plugin": "^8.0.0",
113
- "@typescript-eslint/parser": "^8.0.0",
114
- "@vanilla-extract/css-utils": "^0.1.4",
115
- "@vanilla-extract/recipes": "^0.5.5",
116
- "@vanilla-extract/vite-plugin": "^4.0.18",
117
- "@vitejs/plugin-react-swc": "^3.7.2",
118
- "esbuild-vanilla-image-loader": "^0.1.3",
119
- "eslint": "^9.0.0",
120
- "eslint-plugin-react-hooks": "^5.1.0",
121
- "eslint-plugin-react-refresh": "^0.4.16",
122
- "eslint-plugin-storybook": "^0.8.0",
123
- "glob": "^10.4.5",
124
- "globals": "^15.15.0",
125
- "husky": "^9.1.7",
126
- "next": "^16.0.0",
127
- "prettier": "3.2.5",
128
- "react": "^19.0.0",
129
- "react-dom": "^19.0.0",
130
- "rollup-plugin-preserve-directives": "^0.4.0",
131
- "rollup-plugin-svg-import": "^3.0.0",
132
- "rollup-plugin-svgo": "^2.0.0",
133
- "storybook": "^8.4.7",
134
- "typescript": "^5.7.2",
135
- "typescript-eslint": "^8.57.0",
136
- "typescript-plugin-css-modules": "^5.1.0",
137
- "vite": "^5.4.11",
138
- "vite-plugin-dts": "^3.9.1",
139
- "vite-plugin-lib-inject-css": "^2.1.1",
140
- "vite-plugin-setting-css-module": "^1.1.4",
141
- "vite-tsconfig-paths": "^4.3.2"
142
- },
143
- "directories": {
144
- "lib": "lib"
145
- },
146
- "author": "axos-web-dev",
147
- "license": "ISC"
148
- }
1
+ {
2
+ "name": "@axos-web-dev/shared-components",
3
+ "description": "Axos shared components library for web.",
4
+ "version": "2.0.0-dev.10",
5
+ "type": "module",
6
+ "main": "index.js",
7
+ "module": "dist/main.js",
8
+ "types": "dist/main.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/main.d.ts",
12
+ "import": "./dist/main.js"
13
+ },
14
+ "./styles.css": "./dist/assets/index.css",
15
+ "./globals.css": "./dist/assets/globals.css",
16
+ "./themes/axos.css": "./dist/assets/themes/axos.css",
17
+ "./themes/premier.css": "./dist/assets/themes/premier.css",
18
+ "./dist/*": "./dist/*"
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "sideEffects": [
24
+ "dist/assets/**/*.css"
25
+ ],
26
+ "scripts": {
27
+ "dev": "vite",
28
+ "build": "tsc --p ./tsconfig.build.json && vite build",
29
+ "lint": "eslint . --report-unused-disable-directives --max-warnings 0",
30
+ "preview": "vite preview",
31
+ "prepublishOnly": "npm run build",
32
+ "check-types": "tsc --pretty --noEmit",
33
+ "check-format": "prettier --check .",
34
+ "check-lint": "eslint .",
35
+ "format": "prettier --write .",
36
+ "test-all": "npm run check-format && npm run check-lint && npm run check-types && npm run build",
37
+ "prepare": "husky",
38
+ "storybook": "storybook dev -p 6006",
39
+ "build-storybook": "storybook build",
40
+ "npm:link": "npm run build && npm link"
41
+ },
42
+ "dependencies": {
43
+ "@headlessui/react": "^2.2.0",
44
+ "@hookform/resolvers": "^5.0.1",
45
+ "@next-safe-action/adapter-react-hook-form": "^2.0.2",
46
+ "@react-input/mask": "^1.2.15",
47
+ "@react-input/number-format": "^1.1.3",
48
+ "@storybook/icons": "^1.3.0",
49
+ "@storybook/preview-api": "^8.4.7",
50
+ "@ts-stack/markdown": "^1.5.0",
51
+ "@types/iframe-resizer": "3.5.13",
52
+ "@ujet/websdk-headless": "^3.41.4",
53
+ "@vanilla-extract/css": "^1.16.1",
54
+ "@vanilla-extract/recipes": "^0.5.1 || ^0.5.5",
55
+ "antd": "^5.22.5",
56
+ "clsx": "^2.1.1",
57
+ "framer-motion": "^12.9.2",
58
+ "iframe-resizer": "^3.6.6",
59
+ "lodash": "^4.17.21",
60
+ "moment": "^2.30.1",
61
+ "next-safe-action": "^8.0.2",
62
+ "react-date-picker": "^11.0.0",
63
+ "react-date-range": "^2.0.1",
64
+ "react-hook-form": "^7.56.4",
65
+ "react-markdown": "^9.1.0",
66
+ "react-slick": "^0.30.2",
67
+ "react-use": "^17.6.0",
68
+ "react-wrap-balancer": "^1.1.1",
69
+ "remark-gfm": "^4.0.1",
70
+ "rsuite": "^5.75.0",
71
+ "slick-carousel": "^1.8.1",
72
+ "typed-css-modules": "^0.9.1",
73
+ "vite-plugin-svgr": "^4.3.0",
74
+ "zod": "^3.24.1",
75
+ "zustand": "^4.5.5"
76
+ },
77
+ "peerDependencies": {
78
+ "@vanilla-extract/css-utils": "^0.1.3 || ^0.1.4",
79
+ "@vanilla-extract/recipes": "^0.5.1 || ^0.5.5",
80
+ "@vanilla-extract/vite-plugin": "^4.0.3 || ^4.0.18",
81
+ "next": "^14.1.4 || ^15.0.0 || ^16.0.0",
82
+ "react": "^18.2.0 || ^19.0.0",
83
+ "react-date-range": "^2.0.1",
84
+ "react-dom": "^18.2.0 || ^19.0.0",
85
+ "react-slick": "^0.30.2",
86
+ "slick-carousel": "^1.8.1"
87
+ },
88
+ "devDependencies": {
89
+ "@chromatic-com/storybook": "^1.9.0",
90
+ "@eslint/js": "^9.39.4",
91
+ "@rollup/plugin-alias": "^5.1.1",
92
+ "@storybook/addon-essentials": "^8.4.7",
93
+ "@storybook/addon-interactions": "^8.4.7",
94
+ "@storybook/addon-links": "^8.4.7",
95
+ "@storybook/addon-mdx-gfm": "^8.4.7",
96
+ "@storybook/addon-onboarding": "^8.4.7",
97
+ "@storybook/addon-themes": "^8.4.7",
98
+ "@storybook/blocks": "^8.4.7",
99
+ "@storybook/react": "^8.6.14",
100
+ "@storybook/react-vite": "^8.4.7",
101
+ "@storybook/test": "^8.6.14",
102
+ "@svgr/core": "^8.1.0",
103
+ "@svgr/plugin-prettier": "^8.1.0",
104
+ "@svgr/plugin-svgo": "^8.1.0",
105
+ "@types/lodash": "^4.17.17",
106
+ "@types/node": "^20.19.0",
107
+ "@types/react": "^19.0.0",
108
+ "@types/react-date-range": "^1.4.9",
109
+ "@types/react-datepicker": "^6.2.0",
110
+ "@types/react-dom": "^19.0.0",
111
+ "@types/react-slick": "^0.23.13",
112
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
113
+ "@typescript-eslint/parser": "^8.0.0",
114
+ "@vanilla-extract/css-utils": "^0.1.4",
115
+ "@vanilla-extract/recipes": "^0.5.5",
116
+ "@vanilla-extract/vite-plugin": "^4.0.18",
117
+ "@vitejs/plugin-react-swc": "^3.7.2",
118
+ "esbuild-vanilla-image-loader": "^0.1.3",
119
+ "eslint": "^9.0.0",
120
+ "eslint-plugin-react-hooks": "^5.1.0",
121
+ "eslint-plugin-react-refresh": "^0.4.16",
122
+ "eslint-plugin-storybook": "^0.8.0",
123
+ "glob": "^10.4.5",
124
+ "globals": "^15.15.0",
125
+ "husky": "^9.1.7",
126
+ "next": "^16.0.0",
127
+ "prettier": "3.2.5",
128
+ "react": "^19.0.0",
129
+ "react-dom": "^19.0.0",
130
+ "rollup-plugin-preserve-directives": "^0.4.0",
131
+ "rollup-plugin-svg-import": "^3.0.0",
132
+ "rollup-plugin-svgo": "^2.0.0",
133
+ "storybook": "^8.4.7",
134
+ "typescript": "^5.7.2",
135
+ "typescript-eslint": "^8.57.0",
136
+ "typescript-plugin-css-modules": "^5.1.0",
137
+ "vite": "^5.4.11",
138
+ "vite-plugin-dts": "^3.9.1",
139
+ "vite-plugin-lib-inject-css": "^2.1.1",
140
+ "vite-plugin-setting-css-module": "^1.1.4",
141
+ "vite-tsconfig-paths": "^4.3.2"
142
+ },
143
+ "directories": {
144
+ "lib": "lib"
145
+ },
146
+ "author": "axos-web-dev",
147
+ "license": "ISC"
148
+ }
@@ -1,2 +0,0 @@
1
- export declare const navItems: any;
2
- export declare const subNavItems: any;