@axos-web-dev/shared-components 1.0.100-dev.43-executive.1 → 1.0.100-dev.43

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 (99) hide show
  1. package/dist/ATMLocator/ATMLocator.js +2 -3
  2. package/dist/Auth/ErrorAlert.js +1 -2
  3. package/dist/Auth/SignInPassword.js +2 -2
  4. package/dist/BulletItem/BulletItem.js +1 -0
  5. package/dist/Button/Button.js +1 -2
  6. package/dist/Calculators/AnnualFeeCalculator/index.js +1 -1
  7. package/dist/Calculators/BuyDownCalculator/index.js +1 -1
  8. package/dist/Calculators/Calculator.js +2 -3
  9. package/dist/Calculators/MarineLoanMonthlyPaymentCalculator/index.js +1 -1
  10. package/dist/Calculators/MaxLoanCalculator/index.js +1 -1
  11. package/dist/Calculators/MonthlyPaymentCalculator/index.js +1 -1
  12. package/dist/Carousel/index.js +1 -2
  13. package/dist/Chatbot/Bubble.css.js +0 -1
  14. package/dist/Chatbot/ChatWindow.css.d.ts +1 -0
  15. package/dist/Chatbot/ChatWindow.css.js +14 -11
  16. package/dist/Chatbot/ChatWindow.js +87 -66
  17. package/dist/Chatbot/Chatbot.d.ts +1 -1
  18. package/dist/Chatbot/Chatbot.js +46 -10
  19. package/dist/Chatbot/index.js +2 -1
  20. package/dist/Chevron/index.js +1 -2
  21. package/dist/Comparison/Comparison.js +1 -2
  22. package/dist/ExecutiveBio/ExecutiveBio.css.d.ts +0 -136
  23. package/dist/ExecutiveBio/ExecutiveBio.css.js +0 -46
  24. package/dist/ExecutiveBio/ExecutiveBio.d.ts +1 -1
  25. package/dist/ExecutiveBio/ExecutiveBio.interface.d.ts +4 -10
  26. package/dist/ExecutiveBio/ExecutiveBio.js +86 -331
  27. package/dist/ExecutiveBio/index.js +1 -24
  28. package/dist/FaqAccordion/index.js +1 -2
  29. package/dist/FooterSiteMap/AxosBank/FooterSiteMap.js +1 -2
  30. package/dist/Forms/ApplicationStart.js +4 -2
  31. package/dist/Forms/ApplyNow.js +2 -3
  32. package/dist/Forms/ClearingForm.js +4 -2
  33. package/dist/Forms/CommercialDeposits.js +4 -2
  34. package/dist/Forms/CommercialDepositsNoLendingOption.js +4 -2
  35. package/dist/Forms/CommercialLending.js +4 -2
  36. package/dist/Forms/CommercialPremiumFinance.js +4 -2
  37. package/dist/Forms/ContactCompany.js +4 -2
  38. package/dist/Forms/ContactCompanyTitle.js +4 -2
  39. package/dist/Forms/ContactUs.js +4 -2
  40. package/dist/Forms/ContactUsAAS.js +4 -2
  41. package/dist/Forms/ContactUsBusiness.js +5 -4
  42. package/dist/Forms/ContactUsBusinessNameEmail.js +5 -4
  43. package/dist/Forms/ContactUsLVF.js +4 -2
  44. package/dist/Forms/ContactUsNMLSId.js +5 -4
  45. package/dist/Forms/CpraRequest.d.ts +1 -1
  46. package/dist/Forms/CpraRequest.js +5 -2
  47. package/dist/Forms/CraPublicFile.js +5 -4
  48. package/dist/Forms/DealerServices.js +4 -2
  49. package/dist/Forms/EmailOnly.js +5 -4
  50. package/dist/Forms/EmailUs.js +7 -5
  51. package/dist/Forms/HoneyPot/index.js +2 -1
  52. package/dist/Forms/MortgageRate/MortgageRateForm.js +6 -5
  53. package/dist/Forms/MortgageRate/MortgageRateWatch.js +1 -2
  54. package/dist/Forms/MortgageWarehouseLending.js +5 -4
  55. package/dist/Forms/QuickPricer/QuickPricerForm.js +16 -12
  56. package/dist/Forms/ScheduleCall.js +4 -2
  57. package/dist/Forms/ScheduleCallPremier.js +4 -2
  58. package/dist/Forms/SuccesForm.js +2 -3
  59. package/dist/Forms/VendorQuestionnaire.js +6 -2
  60. package/dist/Forms/index.js +1 -0
  61. package/dist/Hyperlink/index.js +1 -2
  62. package/dist/ImageLink/ImageLink.js +2 -3
  63. package/dist/ImageLink/ImageLinkSet.js +1 -2
  64. package/dist/ImageLink/index.js +1 -2
  65. package/dist/Insight/Featured/CategorySelector.js +1 -2
  66. package/dist/Insight/Featured/Featured.js +1 -2
  67. package/dist/Insight/Featured/Header.js +1 -2
  68. package/dist/LoadingIndicator/index.js +1 -0
  69. package/dist/Modal/Modal.js +1 -2
  70. package/dist/Modal/contextApi/store.js +1 -1
  71. package/dist/NavigationMenu/AxosALTS/NavData.js +1 -2
  72. package/dist/NavigationMenu/AxosALTS/index.js +1 -2
  73. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.js +1 -2
  74. package/dist/NavigationMenu/AxosBank/NavData.js +1 -2
  75. package/dist/NavigationMenu/AxosBank/SubNavBar.js +8 -7
  76. package/dist/NavigationMenu/AxosBank/index.js +1 -2
  77. package/dist/NavigationMenu/LaVictoire/NavData.js +1 -2
  78. package/dist/NavigationMenu/LaVictoire/index.js +1 -2
  79. package/dist/NavigationMenu/NavDataJson.js +1 -2
  80. package/dist/NavigationMenu/Navbar.js +1 -2
  81. package/dist/NavigationMenu/SignInNavButton.js +1 -2
  82. package/dist/SetContainer/SetContainer.js +2 -3
  83. package/dist/SocialMediaBar/iconsRepository.js +1 -2
  84. package/dist/Tab/Tab.js +1 -0
  85. package/dist/Table/Table.d.ts +1 -1
  86. package/dist/VideoTile/VideoTile.js +1 -2
  87. package/dist/VideoWrapper/index.js +1 -2
  88. package/dist/assets/Chatbot/ChatWindow.css +38 -26
  89. package/dist/assets/ExecutiveBio/ExecutiveBio.css +0 -268
  90. package/dist/main.js +11 -26
  91. package/dist/utils/emailValidation.d.ts +1 -0
  92. package/dist/utils/emailValidation.js +31 -0
  93. package/dist/utils/index.d.ts +4 -1
  94. package/dist/utils/index.js +9 -1
  95. package/dist/utils/nmlsValidation.d.ts +1 -0
  96. package/dist/utils/nmlsValidation.js +34 -0
  97. package/dist/utils/useCachedValidators.d.ts +2 -0
  98. package/dist/utils/useCachedValidators.js +22 -0
  99. package/package.json +1 -1
@@ -11,8 +11,9 @@ import "../../Input/InputTextArea.js";
11
11
  import "../../Input/DownPaymentInput.js";
12
12
  import "../../Input/RadioButton.js";
13
13
  import "../../utils/allowedAxosDomains.js";
14
- import { getVariant } from "../../utils/getVariant.js";
15
14
  import { z } from "zod";
15
+ import { getVariant } from "../../utils/getVariant.js";
16
+ import "react";
16
17
  import { form_field_container } from "./HoneyPot.css.js";
17
18
  const honeyPotSchema = z.object({
18
19
  AlternativeEmail: z.string().refine((val) => val === "bestbank@axos.com"),
@@ -12,8 +12,10 @@ import '../../assets/VideoWrapper/VideoWrapper.css';import '../../assets/Topical
12
12
  /* empty css */
13
13
  /* empty css */
14
14
  import "../../utils/allowedAxosDomains.js";
15
+ import * as z from "zod";
15
16
  import { associatedEmail } from "../../utils/EverestValidity.js";
16
17
  import { getVariant } from "../../utils/getVariant.js";
18
+ import { useCachedEmailValidator } from "../../utils/useCachedValidators.js";
17
19
  import clsx from "clsx";
18
20
  /* empty css */
19
21
  /* empty css */
@@ -43,7 +45,6 @@ import { DownPaymentInput } from "../../Input/DownPaymentInput.js";
43
45
  import "../../Input/RadioButton.js";
44
46
  import "../../Input/PercentageInput.js";
45
47
  import { useForm, FormProvider } from "react-hook-form";
46
- import * as z from "zod";
47
48
  import "../../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
48
49
  import { iconForm, headerForm, form, descriptionField, headerContainer, fullRowSelect, formWrapper, centerSelect, mt2rem, fullRowForm, disclosureForm, actions, formBtns, na_cursor, formContainer } from "../Forms.css.js";
49
50
  import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "../HoneyPot/index.js";
@@ -75,13 +76,12 @@ import "../../Auth/SignInPassword.js";
75
76
  /* empty css */
76
77
  /* empty css */
77
78
  import "../../Carousel/index.js";
78
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
79
79
  /* empty css */
80
80
  import "../../Chatbot/store/chat.js";
81
81
  import "../../Chatbot/authenticate.js";
82
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
82
83
  /* empty css */
83
84
  import "../../Chatbot/store/messages.js";
84
- import "@ujet/websdk-headless";
85
85
  /* empty css */
86
86
  import "../../Comparison/Comparison.css.js";
87
87
  import "next/image.js";
@@ -160,6 +160,7 @@ const MortgageRate = ({
160
160
  const [_downPayment, setDownPayment] = useState(0);
161
161
  const [isTypingDownPayment, setIsTypingDownPayment] = useState(false);
162
162
  const [salesPriceVal, setSalesPriceVal] = useState(0);
163
+ const cachedEmailValidator = useCachedEmailValidator(validateEmail);
163
164
  const schema = z.object({
164
165
  firstName: z.string({ message: "First Name is required." }).regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g, {
165
166
  message: "First Name is required."
@@ -167,7 +168,7 @@ const MortgageRate = ({
167
168
  lastName: z.string({ message: "Last Name is required." }).regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g, {
168
169
  message: "Last Name is required."
169
170
  }).trim().min(1, { message: "Last Name is required." }),
170
- email: z.string().email({ message: "Email is required." }).refine(async (val) => await validateEmail(val)),
171
+ email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
171
172
  phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, { message: "Phone is required." }).min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
172
173
  const removeDashes = val.replace(/-/gi, "");
173
174
  if (removeDashes.length !== 10) {
@@ -206,7 +207,7 @@ const MortgageRate = ({
206
207
  }
207
208
  ),
208
209
  creditScore: z.number({ message: "Credit Score is required." }).positive({ message: "Credit Score is required." }),
209
- zipCode: z.number({ message: "Zip Code is required." }).positive({ message: "Zip Code is required." }),
210
+ zipCode: z.string().trim().min(1, { message: "Zip Code is required." }).regex(/^\d{5}$/, { message: "ZIP code must be exactly 5 digits" }),
210
211
  appraisedValue: z.number({ message: "Home Price is required." }).optional().refine(
211
212
  (val) => {
212
213
  if (loanPurpose === 2 && val == null) {
@@ -71,13 +71,12 @@ import "../../Auth/SignInPassword.js";
71
71
  /* empty css */
72
72
  /* empty css */
73
73
  import "../../Carousel/index.js";
74
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
75
74
  /* empty css */
76
75
  import "../../Chatbot/store/chat.js";
77
76
  import "../../Chatbot/authenticate.js";
77
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
78
78
  /* empty css */
79
79
  import "../../Chatbot/store/messages.js";
80
- import "@ujet/websdk-headless";
81
80
  /* empty css */
82
81
  import "../../Comparison/Comparison.css.js";
83
82
  import "next/image.js";
@@ -35,6 +35,8 @@ import "react-use";
35
35
  import "../ArticlesSet/ArticlesSet.css.js";
36
36
  import "../IconBillboard/IconBillboard.css.js";
37
37
  import "../utils/allowedAxosDomains.js";
38
+ import { z } from "zod";
39
+ import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
38
40
  import "../Calculators/calculator.css.js";
39
41
  import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
40
42
  import "../Calculators/ApyCalculator/ApyCalculator.css.js";
@@ -43,7 +45,6 @@ import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
43
45
  import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
44
46
  import "../Input/PercentageInput.js";
45
47
  import { useForm, FormProvider } from "react-hook-form";
46
- import { z } from "zod";
47
48
  import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
48
49
  import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
49
50
  import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
@@ -74,13 +75,12 @@ import "../Auth/SignInPassword.js";
74
75
  /* empty css */
75
76
  /* empty css */
76
77
  import "../Carousel/index.js";
77
- import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
78
78
  /* empty css */
79
79
  import "../Chatbot/store/chat.js";
80
80
  import "../Chatbot/authenticate.js";
81
+ import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
81
82
  /* empty css */
82
83
  import "../Chatbot/store/messages.js";
83
- import "@ujet/websdk-headless";
84
84
  /* empty css */
85
85
  import "../Comparison/Comparison.css.js";
86
86
  import "next/image.js";
@@ -149,10 +149,11 @@ const MortgageWarehouseLending = ({
149
149
  onValidate,
150
150
  id
151
151
  }) => {
152
+ const cachedEmailValidator = useCachedEmailValidator(validateEmail);
152
153
  const schema = z.object({
153
154
  first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
154
155
  last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
155
- email: z.string().email({ message: "Email is required." }).refine(async (val) => await validateEmail(val)),
156
+ email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
156
157
  phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
157
158
  const removeDashes = val.replace(/-/gi, "");
158
159
  if (removeDashes.length !== 10) {
@@ -26,12 +26,13 @@ import '../../assets/icons/FollowIcon/FollowIcon.css';import '../../assets/icons
26
26
  /* empty css */
27
27
  /* empty css */
28
28
  import "../../utils/allowedAxosDomains.js";
29
+ import * as z from "zod";
29
30
  import { associatedEmail } from "../../utils/EverestValidity.js";
30
31
  import { getVariant } from "../../utils/getVariant.js";
32
+ import { useCachedEmailValidator, useCachedNMLSValidator } from "../../utils/useCachedValidators.js";
31
33
  import { format } from "@react-input/number-format";
32
34
  import clsx from "clsx";
33
35
  import { useForm, FormProvider } from "react-hook-form";
34
- import * as z from "zod";
35
36
  import { BrokerConpensation, PrepaymentPenalty, NumberOfUnits, Occupancy, PropertyType, BankruptcySeasoning, BankruptcyType, HousingEventHistory, HousingEventType, MortgageLates24, MortgageLates12, Citizenship, DocType, RepresentativesFico, Purposes } from "../FormEnums.js";
36
37
  import { iconForm, headerContainer, headerForm, form, descriptionField, one_row, section_title, checkbox_group, formWrapper, disclosureForm, actions, formContainer } from "../Forms.css.js";
37
38
  import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "../HoneyPot/index.js";
@@ -60,6 +61,8 @@ const QuickPricer = ({
60
61
  const [bankruptcySeasoning, setBankruptcySeasoning] = useState(false);
61
62
  const [numberOfUnits, setNumberOfUnits] = useState(false);
62
63
  const [prepaymentPenalty, setPrepaymentPenalty] = useState(false);
64
+ const cachedEmailValidator = useCachedEmailValidator(validateEmail);
65
+ const cachedNMLSValidator = useCachedNMLSValidator(validateNMLS);
63
66
  const schema = z.object({
64
67
  Base_Loan_Amount__c: z.string({
65
68
  message: "Please provide a valid base loan amount"
@@ -169,11 +172,8 @@ const QuickPricer = ({
169
172
  message: "Broker compensation is required"
170
173
  }
171
174
  ),
172
- NMLS__c: z.string().min(4, "Valid NMLS should have at least 4 characters").max(15, "Valid NMLS should have at most 15 characters").refine(async (val) => {
173
- const res = await validateNMLS(val);
174
- return res?.body?.data?.records?.length > 0;
175
- }, "NMLS ID is not valid"),
176
- Email_Address__c: z.string().email({ message: "Email is required." }).refine(async (val) => await validateEmail(val)),
175
+ NMLS__c: z.string().min(4, "Valid NMLS should have at least 4 characters").max(15, "Valid NMLS should have at most 15 characters").refine(cachedNMLSValidator, "NMLS ID is not valid"),
176
+ Email_Address__c: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
177
177
  Cell_Phone__c: z.string().regex(/[\d-]{10}/).min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
178
178
  const removeDashes = val.replace(/-/gi, "");
179
179
  if (removeDashes.length !== 10) {
@@ -216,10 +216,14 @@ const QuickPricer = ({
216
216
  }
217
217
  });
218
218
  const methods = useForm({
219
- resolver: zodResolver(gen_schema, {
220
- async: true
221
- }),
222
- mode: "all",
219
+ resolver: zodResolver(
220
+ gen_schema,
221
+ {
222
+ async: true
223
+ },
224
+ { mode: "async" }
225
+ ),
226
+ mode: "onChange",
223
227
  reValidateMode: "onChange",
224
228
  defaultValues: {
225
229
  Cash_Out_Amount__c: format(0),
@@ -236,7 +240,7 @@ const QuickPricer = ({
236
240
  const {
237
241
  handleSubmit,
238
242
  register,
239
- formState: { errors, isValid },
243
+ formState: { errors, isValid, isValidating },
240
244
  setValue
241
245
  } = methods;
242
246
  const submitForm = async (data) => {
@@ -875,7 +879,7 @@ const QuickPricer = ({
875
879
  color: getVariant(callToAction?.variant),
876
880
  as: "button",
877
881
  type: "submit",
878
- disabled: !isValid,
882
+ disabled: !isValid || isValidating,
879
883
  children: callToAction?.displayText
880
884
  }
881
885
  ) })
@@ -26,11 +26,12 @@ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/Downl
26
26
  /* empty css */
27
27
  /* empty css */
28
28
  import "../utils/allowedAxosDomains.js";
29
+ import * as z from "zod";
29
30
  import { associatedEmail } from "../utils/EverestValidity.js";
30
31
  import { getVariant } from "../utils/getVariant.js";
32
+ import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
31
33
  import clsx from "clsx";
32
34
  import { useForm, FormProvider } from "react-hook-form";
33
- import * as z from "zod";
34
35
  import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
35
36
  import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
36
37
  import { SalesforceSchema } from "./SalesforceFieldsForm.js";
@@ -49,10 +50,11 @@ const ScheduleCall = ({
49
50
  id,
50
51
  description
51
52
  }) => {
53
+ const cachedEmailValidator = useCachedEmailValidator(validateEmail);
52
54
  const schema = z.object({
53
55
  first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
54
56
  last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
55
- email: z.string().email({ message: "Email is required." }).refine(async (val) => await validateEmail(val)),
57
+ email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
56
58
  phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
57
59
  const removeDashes = val.replace(/-/gi, "");
58
60
  if (removeDashes.length !== 10) {
@@ -27,11 +27,12 @@ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/Downl
27
27
  /* empty css */
28
28
  /* empty css */
29
29
  import "../utils/allowedAxosDomains.js";
30
+ import * as z from "zod";
30
31
  import { associatedEmail } from "../utils/EverestValidity.js";
31
32
  import { getVariant } from "../utils/getVariant.js";
33
+ import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
32
34
  import clsx from "clsx";
33
35
  import { useForm, FormProvider } from "react-hook-form";
34
- import * as z from "zod";
35
36
  import { iconForm, headerContainer, headerForm, form, descriptionField, fullRowForm, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
36
37
  import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
37
38
  import { SalesforceSchema } from "./SalesforceFieldsForm.js";
@@ -50,10 +51,11 @@ const ScheduleCallPremier = ({
50
51
  onValidate,
51
52
  id
52
53
  }) => {
54
+ const cachedEmailValidator = useCachedEmailValidator(validateEmail);
53
55
  const schema = z.object({
54
56
  first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
55
57
  last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
56
- email: z.string().email({ message: "Email is required." }).refine(async (val) => await validateEmail(val)),
58
+ email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
57
59
  phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
58
60
  const removeDashes = val.replace(/-/gi, "");
59
61
  if (removeDashes.length !== 10) {
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import "../utils/allowedAxosDomains.js";
3
3
  import { getVariant } from "../utils/getVariant.js";
4
+ import "react";
4
5
  import clsx from "clsx";
5
6
  import "@hookform/resolvers/zod";
6
7
  import "../IconBillboard/IconBillboard.css.js";
@@ -16,7 +17,6 @@ import '../assets/Forms/QuickPricer/UserInformation.css';import '../assets/Forms
16
17
  import "../Accordion/Accordion.js";
17
18
  import "../Accordion/Accordion.css.js";
18
19
  import "../AlertBanner/AlertBanner.css.js";
19
- import "react";
20
20
  import "../Article/Article.css.js";
21
21
  import "../ArticlesSet/ArticlesSet.css.js";
22
22
  import "../Calculators/calculator.css.js";
@@ -58,14 +58,13 @@ import "../Auth/SignInPassword.js";
58
58
  /* empty css */
59
59
  /* empty css */
60
60
  import "../Carousel/index.js";
61
- import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
62
61
  /* empty css */
63
62
  import "../Chatbot/store/chat.js";
64
63
  import "../Chatbot/authenticate.js";
65
64
  import "react-use";
65
+ import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
66
66
  /* empty css */
67
67
  import "../Chatbot/store/messages.js";
68
- import "@ujet/websdk-headless";
69
68
  /* empty css */
70
69
  import "../Comparison/Comparison.css.js";
71
70
  import "next/image.js";
@@ -17,10 +17,11 @@ import { InputTextArea } from "../Input/InputTextArea.js";
17
17
  import "../Input/DownPaymentInput.js";
18
18
  import "../Input/RadioButton.js";
19
19
  import "../utils/allowedAxosDomains.js";
20
+ import { z } from "zod";
20
21
  import { getVariant } from "../utils/getVariant.js";
22
+ import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
21
23
  import clsx from "clsx";
22
24
  import { useForm, FormProvider } from "react-hook-form";
23
- import { z } from "zod";
24
25
  import { form, form_row, descriptionField, formWrapper, actions, formContainer } from "./Forms.css.js";
25
26
  import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
26
27
  const VendorQuestionnaire = ({
@@ -34,6 +35,7 @@ const VendorQuestionnaire = ({
34
35
  callToAction,
35
36
  id
36
37
  }) => {
38
+ const cachedEmailValidator = useCachedEmailValidator(validateEmail);
37
39
  const schema = z.object({
38
40
  "name/0-2": z.string().min(1, { message: "Please complete this required field." }),
39
41
  "dba/0-2": z.string(),
@@ -87,7 +89,9 @@ const VendorQuestionnaire = ({
87
89
  "firstname/0-1": z.string().regex(/^[a-zA-Z]*(?:[a-zA-Z][a-zA-Z'-]*\s{0,1}){2,}$/g).min(1, { message: "Please complete this required field." }),
88
90
  "lastname/0-1": z.string().regex(/^[a-zA-Z]*(?:[a-zA-Z][a-zA-Z'-]*\s{0,1}){2,}$/g).min(1, { message: "Please complete this required field." }),
89
91
  "jobtitle/0-1": z.string().min(1, { message: "Please complete this required field." }),
90
- "email/0-1": z.string().email({ message: "Please complete this required field." }).refine(async (val) => await validateEmail(val))
92
+ "email/0-1": z.string().email({ message: "Please complete this required field." }).refine(cachedEmailValidator, {
93
+ message: "Invalid email address."
94
+ })
91
95
  });
92
96
  const gen_schema = schema.merge(honeyPotSchema).superRefine((data, ctx) => {
93
97
  if (!isValidHoneyPot(data)) {
@@ -26,6 +26,7 @@ import { MortgageRate } from "./MortgageRate/MortgageRateForm.js";
26
26
  import "react/jsx-runtime";
27
27
  import { RateWatchForm } from "./MortgageRate/MortgageRateWatch.js";
28
28
  import "../utils/allowedAxosDomains.js";
29
+ import "react";
29
30
  import "../LoadingIndicator/LoadingIndicator.css.js";
30
31
  import "../Interstitial/Interstitial-variants.css.js";
31
32
  import { MortgageRateFilters } from "./MortgageRate/MortgageRateQuoteFilters.js";
@@ -67,13 +67,12 @@ import "../Auth/SignInPassword.js";
67
67
  /* empty css */
68
68
  /* empty css */
69
69
  import "../Carousel/index.js";
70
- import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
71
70
  /* empty css */
72
71
  import "../Chatbot/store/chat.js";
73
72
  import "../Chatbot/authenticate.js";
73
+ import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
74
74
  /* empty css */
75
75
  import "../Chatbot/store/messages.js";
76
- import "@ujet/websdk-headless";
77
76
  /* empty css */
78
77
  import "../Comparison/Comparison.css.js";
79
78
  import "next/image.js";
@@ -9,13 +9,13 @@ import '../assets/VideoWrapper/VideoWrapper.css';import '../assets/TopicalNavSet
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  import "../utils/allowedAxosDomains.js";
12
+ import { isValidElement } from "react";
12
13
  import "clsx";
13
14
  /* empty css */
14
15
  /* empty css */
15
16
  import "../Accordion/Accordion.js";
16
17
  import "../Accordion/Accordion.css.js";
17
18
  import "../AlertBanner/AlertBanner.css.js";
18
- import { isValidElement } from "react";
19
19
  import "../Article/Article.css.js";
20
20
  import "../ArticlesSet/ArticlesSet.css.js";
21
21
  import "../Calculators/calculator.css.js";
@@ -66,13 +66,12 @@ import "../Auth/SignInPassword.js";
66
66
  /* empty css */
67
67
  /* empty css */
68
68
  import "../Carousel/index.js";
69
- import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
70
69
  /* empty css */
71
70
  import "../Chatbot/store/chat.js";
72
71
  import "../Chatbot/authenticate.js";
72
+ import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
73
73
  /* empty css */
74
74
  import "../Chatbot/store/messages.js";
75
- import "@ujet/websdk-headless";
76
75
  /* empty css */
77
76
  import "../Comparison/Comparison.css.js";
78
77
  import "../Tab/Tab.css.js";
@@ -73,13 +73,12 @@ import "../Auth/SignInPassword.js";
73
73
  /* empty css */
74
74
  /* empty css */
75
75
  import "../Carousel/index.js";
76
- import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
77
76
  /* empty css */
78
77
  import "../Chatbot/store/chat.js";
79
78
  import "../Chatbot/authenticate.js";
79
+ import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
80
80
  /* empty css */
81
81
  import "../Chatbot/store/messages.js";
82
- import "@ujet/websdk-headless";
83
82
  /* empty css */
84
83
  import "../Comparison/Comparison.css.js";
85
84
  import "../Tab/Tab.css.js";
@@ -65,13 +65,12 @@ import "../Auth/SignInPassword.js";
65
65
  /* empty css */
66
66
  /* empty css */
67
67
  import "../Carousel/index.js";
68
- import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
69
68
  /* empty css */
70
69
  import "../Chatbot/store/chat.js";
71
70
  import "../Chatbot/authenticate.js";
71
+ import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
72
72
  /* empty css */
73
73
  import "../Chatbot/store/messages.js";
74
- import "@ujet/websdk-headless";
75
74
  /* empty css */
76
75
  import "../Comparison/Comparison.css.js";
77
76
  import "next/image.js";
@@ -69,13 +69,12 @@ import "../../Auth/SignInPassword.js";
69
69
  /* empty css */
70
70
  /* empty css */
71
71
  import "../../Carousel/index.js";
72
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
73
72
  /* empty css */
74
73
  import "../../Chatbot/store/chat.js";
75
74
  import "../../Chatbot/authenticate.js";
75
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
76
76
  /* empty css */
77
77
  import "../../Chatbot/store/messages.js";
78
- import "@ujet/websdk-headless";
79
78
  /* empty css */
80
79
  import "../../Comparison/Comparison.css.js";
81
80
  import "next/image.js";
@@ -70,13 +70,12 @@ import "../../Auth/SignInPassword.js";
70
70
  /* empty css */
71
71
  /* empty css */
72
72
  import "../../Carousel/index.js";
73
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
74
73
  /* empty css */
75
74
  import "../../Chatbot/store/chat.js";
76
75
  import "../../Chatbot/authenticate.js";
76
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
77
77
  /* empty css */
78
78
  import "../../Chatbot/store/messages.js";
79
- import "@ujet/websdk-headless";
80
79
  /* empty css */
81
80
  import "../../Comparison/Comparison.css.js";
82
81
  import Image from "next/image.js";
@@ -68,13 +68,12 @@ import "../../Auth/SignInPassword.js";
68
68
  /* empty css */
69
69
  /* empty css */
70
70
  import "../../Carousel/index.js";
71
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
72
71
  /* empty css */
73
72
  import "../../Chatbot/store/chat.js";
74
73
  import "../../Chatbot/authenticate.js";
74
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
75
75
  /* empty css */
76
76
  import "../../Chatbot/store/messages.js";
77
- import "@ujet/websdk-headless";
78
77
  /* empty css */
79
78
  import "../../Comparison/Comparison.css.js";
80
79
  import "next/image.js";
@@ -1,6 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import "../utils/allowedAxosDomains.js";
3
3
  import { getVariant } from "../utils/getVariant.js";
4
+ import "react";
4
5
  import { loader } from "./LoadingIndicator.css.js";
5
6
  const LoadingIndicator = ({
6
7
  width = 50,
@@ -68,13 +68,12 @@ import "../Auth/SignInPassword.js";
68
68
  /* empty css */
69
69
  /* empty css */
70
70
  import "../Carousel/index.js";
71
- import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
72
71
  /* empty css */
73
72
  import "../Chatbot/store/chat.js";
74
73
  import "../Chatbot/authenticate.js";
74
+ import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
75
75
  /* empty css */
76
76
  import "../Chatbot/store/messages.js";
77
- import "@ujet/websdk-headless";
78
77
  /* empty css */
79
78
  import "../Comparison/Comparison.css.js";
80
79
  import "next/image.js";
@@ -2,8 +2,8 @@
2
2
  import { jsxs, jsx } from "react/jsx-runtime";
3
3
  import { Modal } from "../Modal.js";
4
4
  import "../../utils/allowedAxosDomains.js";
5
- import { shortUrl } from "../../utils/validateExternalLinks.js";
6
5
  import { createContext, useContext, useState } from "react";
6
+ import { shortUrl } from "../../utils/validateExternalLinks.js";
7
7
  const GlobalContext = createContext({
8
8
  targetLinkUrl: "",
9
9
  setTargetLinkUrl: () => "",
@@ -68,13 +68,12 @@ import "../../Auth/SignInPassword.js";
68
68
  /* empty css */
69
69
  /* empty css */
70
70
  import "../../Carousel/index.js";
71
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
72
71
  /* empty css */
73
72
  import "../../Chatbot/store/chat.js";
74
73
  import "../../Chatbot/authenticate.js";
74
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
75
75
  /* empty css */
76
76
  import "../../Chatbot/store/messages.js";
77
- import "@ujet/websdk-headless";
78
77
  /* empty css */
79
78
  import "../../Comparison/Comparison.css.js";
80
79
  import "next/image.js";
@@ -69,13 +69,12 @@ import "../../Auth/SignInPassword.js";
69
69
  /* empty css */
70
70
  /* empty css */
71
71
  import "../../Carousel/index.js";
72
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
73
72
  /* empty css */
74
73
  import "../../Chatbot/store/chat.js";
75
74
  import "../../Chatbot/authenticate.js";
75
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
76
76
  /* empty css */
77
77
  import "../../Chatbot/store/messages.js";
78
- import "@ujet/websdk-headless";
79
78
  /* empty css */
80
79
  import "../../Comparison/Comparison.css.js";
81
80
  import "next/image.js";
@@ -68,13 +68,12 @@ import "../../../Auth/SignInPassword.js";
68
68
  /* empty css */
69
69
  /* empty css */
70
70
  import "../../../Carousel/index.js";
71
- import "../../../Chatbot/Chatbot.css.ts.vanilla.css.js";
72
71
  /* empty css */
73
72
  import "../../../Chatbot/store/chat.js";
74
73
  import "../../../Chatbot/authenticate.js";
74
+ import "../../../Chatbot/Chatbot.css.ts.vanilla.css.js";
75
75
  /* empty css */
76
76
  import "../../../Chatbot/store/messages.js";
77
- import "@ujet/websdk-headless";
78
77
  /* empty css */
79
78
  import "../../../Comparison/Comparison.css.js";
80
79
  import "next/image.js";
@@ -68,13 +68,12 @@ import "../../Auth/SignInPassword.js";
68
68
  /* empty css */
69
69
  /* empty css */
70
70
  import "../../Carousel/index.js";
71
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
72
71
  /* empty css */
73
72
  import "../../Chatbot/store/chat.js";
74
73
  import "../../Chatbot/authenticate.js";
74
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
75
75
  /* empty css */
76
76
  import "../../Chatbot/store/messages.js";
77
- import "@ujet/websdk-headless";
78
77
  /* empty css */
79
78
  import "../../Comparison/Comparison.css.js";
80
79
  import "next/image.js";
@@ -70,13 +70,12 @@ import "../../Auth/SignInPassword.js";
70
70
  /* empty css */
71
71
  /* empty css */
72
72
  import "../../Carousel/index.js";
73
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
74
73
  /* empty css */
75
74
  import "../../Chatbot/store/chat.js";
76
75
  import "../../Chatbot/authenticate.js";
76
+ import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
77
77
  /* empty css */
78
78
  import "../../Chatbot/store/messages.js";
79
- import "@ujet/websdk-headless";
80
79
  /* empty css */
81
80
  import "../../Comparison/Comparison.css.js";
82
81
  import Image from "next/image.js";
@@ -1466,8 +1465,8 @@ function SubNavBar() {
1466
1465
  className: `${styles.dd_media} ${styles.opacity} ${dd_media} text_center`,
1467
1466
  children: [
1468
1467
  /* @__PURE__ */ jsxs("div", { className: styles.dd_media_header, children: [
1469
- /* @__PURE__ */ jsx("p", { role: "heading", children: "Introducing Axos FundFinder+" }),
1470
- /* @__PURE__ */ jsx("p", { className: styles.mt_8, children: "Welcome to your all-in-one research tool. Quickly discover, research, and compare mutual funds and ETFs just like the pros." })
1468
+ /* @__PURE__ */ jsx("p", { role: "heading", children: "Managed portfolios selection tool" }),
1469
+ /* @__PURE__ */ jsx("p", { className: styles.mt_8, children: "Investing made personal and powerful. Answer a few questions and discover curated stock, mutual fund, and ETF portfolios designed to match your financial lifecycle phase." })
1471
1470
  ] }),
1472
1471
  /* @__PURE__ */ jsx(
1473
1472
  "div",
@@ -1477,7 +1476,7 @@ function SubNavBar() {
1477
1476
  "img",
1478
1477
  {
1479
1478
  src: findMoreAxosDomains(
1480
- "{AXOS}/images/2bREH0KGxe7C82N4cdathQ/nav-submenu-invest.webp"
1479
+ "{AXOS}/images/1Gg7yGe3iY6GFxTSxL3i1u/nav-submenu-managed-portfolios-selection-tool.png"
1481
1480
  ),
1482
1481
  alt: "",
1483
1482
  width: 232,
@@ -1493,8 +1492,10 @@ function SubNavBar() {
1493
1492
  children: /* @__PURE__ */ jsx(
1494
1493
  Link,
1495
1494
  {
1496
- href: `https://axosfundfinder.com/`,
1497
- "aria-label": "learn more about fundfinder",
1495
+ href: findMoreAxosDomains(
1496
+ "{AXOS}/invest/managed-portfolios/questionnaire"
1497
+ ),
1498
+ "aria-label": "learn more about managed portfolios.",
1498
1499
  className: `${dd_main_btn} text_center`,
1499
1500
  children: "Learn More"
1500
1501
  }