@axos-web-dev/shared-components 1.0.77-patch.50 → 1.0.77-patch.52

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 (62) hide show
  1. package/dist/ATMLocator/ATMLocator.js +1 -1
  2. package/dist/Auth/SignInPassword.js +2 -2
  3. package/dist/Blockquote/Blockquote.module.js +3 -3
  4. package/dist/BulletItem/BulletItem.js +1 -0
  5. package/dist/Calculators/AnnualFeeCalculator/index.js +1 -1
  6. package/dist/Calculators/BuyDownCalculator/index.js +1 -1
  7. package/dist/Calculators/Calculator.js +1 -1
  8. package/dist/Calculators/MarineLoanMonthlyPaymentCalculator/index.js +1 -1
  9. package/dist/Calculators/MaxLoanCalculator/index.js +1 -1
  10. package/dist/Calculators/MonthlyPaymentCalculator/index.js +1 -1
  11. package/dist/Forms/ApplicationStart.js +4 -2
  12. package/dist/Forms/ApplyNow.js +1 -1
  13. package/dist/Forms/ClearingForm.js +4 -2
  14. package/dist/Forms/CommercialDeposits.js +4 -2
  15. package/dist/Forms/CommercialDepositsNoLendingOption.js +4 -2
  16. package/dist/Forms/CommercialLending.js +4 -2
  17. package/dist/Forms/CommercialPremiumFinance.js +4 -2
  18. package/dist/Forms/ContactCompany.js +4 -2
  19. package/dist/Forms/ContactCompanyTitle.js +4 -2
  20. package/dist/Forms/ContactUs.js +4 -2
  21. package/dist/Forms/ContactUsAAS.js +4 -2
  22. package/dist/Forms/ContactUsBusiness.js +4 -2
  23. package/dist/Forms/ContactUsBusinessNameEmail.js +4 -2
  24. package/dist/Forms/ContactUsLVF.js +4 -2
  25. package/dist/Forms/ContactUsNMLSId.js +4 -2
  26. package/dist/Forms/CpraRequest.d.ts +1 -1
  27. package/dist/Forms/CpraRequest.js +5 -2
  28. package/dist/Forms/CraPublicFile.js +4 -2
  29. package/dist/Forms/DealerServices.js +4 -2
  30. package/dist/Forms/EmailOnly.js +4 -2
  31. package/dist/Forms/EmailUs.js +4 -2
  32. package/dist/Forms/HoneyPot/index.js +2 -1
  33. package/dist/Forms/MortgageRate/MortgageRateForm.d.ts +1 -1
  34. package/dist/Forms/MortgageRate/MortgageRateForm.js +393 -352
  35. package/dist/Forms/MortgageRate/MortgageRateQuoteFilters.js +11 -5
  36. package/dist/Forms/MortgageWarehouseLending.js +4 -2
  37. package/dist/Forms/QuickPricer/QuickPricerForm.js +16 -12
  38. package/dist/Forms/ScheduleCall.js +4 -2
  39. package/dist/Forms/ScheduleCallPremier.js +4 -2
  40. package/dist/Forms/SuccesForm.js +1 -1
  41. package/dist/Forms/VendorQuestionnaire.js +6 -2
  42. package/dist/Forms/index.js +1 -0
  43. package/dist/ImageLink/ImageLink.js +1 -1
  44. package/dist/LoadingIndicator/index.js +1 -0
  45. package/dist/Modal/contextApi/store.js +1 -1
  46. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.d.ts +0 -2
  47. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.js +1 -7
  48. package/dist/NavigationMenu/AxosBank/SubNavBar.js +1 -31
  49. package/dist/SetContainer/SetContainer.js +1 -1
  50. package/dist/Tab/Tab.js +1 -0
  51. package/dist/assets/Blockquote/Blockquote.css.css +68 -68
  52. package/dist/assets/ExecutiveBio/ExecutiveBio.css +0 -1
  53. package/dist/main.js +8 -1
  54. package/dist/utils/emailValidation.d.ts +1 -0
  55. package/dist/utils/emailValidation.js +31 -0
  56. package/dist/utils/index.d.ts +4 -1
  57. package/dist/utils/index.js +9 -1
  58. package/dist/utils/nmlsValidation.d.ts +1 -0
  59. package/dist/utils/nmlsValidation.js +34 -0
  60. package/dist/utils/useCachedValidators.d.ts +2 -0
  61. package/dist/utils/useCachedValidators.js +22 -0
  62. package/package.json +135 -135
@@ -16,12 +16,12 @@ import "../../Input/InputPhone.js";
16
16
  import "../../Input/InputTextArea.js";
17
17
  import { DownPaymentInput } from "../../Input/DownPaymentInput.js";
18
18
  import "../../Input/RadioButton.js";
19
+ import { LoadingIndicator } from "../../LoadingIndicator/index.js";
19
20
  import clsx from "clsx";
20
21
  import { useForm, FormProvider } from "react-hook-form";
21
22
  import * as z from "zod";
22
23
  import { headerForm, headerContainer, form, fullRowForm, formWrapper, actions, formContainer } from "../Forms.css.js";
23
24
  import { SalesforceSchema } from "../SalesforceFieldsForm.js";
24
- import { LoadingIndicator } from "../../LoadingIndicator/index.js";
25
25
  const MortgageRateFilters = ({
26
26
  formData,
27
27
  onSubmit
@@ -62,7 +62,7 @@ const MortgageRateFilters = ({
62
62
  }
63
63
  ),
64
64
  creditScore: z.number({ message: "Credit Score is required." }).positive({ message: "Credit Score is required." }),
65
- zipCode: z.number().positive({ message: "Zip Code is required." }),
65
+ zipCode: z.string().trim().min(1, { message: "Zip Code is required." }).regex(/^\d{5}$/, { message: "ZIP code must be 5 digits." }),
66
66
  appraisedValue: z.number({ message: "Home Price is required." }).optional().refine(
67
67
  (val) => {
68
68
  if (loanPurpose === 2) {
@@ -390,10 +390,11 @@ const MortgageRateFilters = ({
390
390
  Input,
391
391
  {
392
392
  id: "zipCode",
393
- type: "number",
393
+ type: "text",
394
+ inputMode: "numeric",
394
395
  ...register("zipCode", {
395
396
  required: true,
396
- setValueAs: (value) => Number(value)
397
+ pattern: /^\d{5}$/
397
398
  }),
398
399
  label: "Zip Code",
399
400
  sizes: "medium",
@@ -401,7 +402,12 @@ const MortgageRateFilters = ({
401
402
  error: !!errors.zipCode,
402
403
  helperText: errors.zipCode?.message,
403
404
  variant: "tertiary",
404
- defaultValue: formData.zipCode
405
+ defaultValue: formData.zipCode,
406
+ maxLength: 5,
407
+ onInput: (e) => {
408
+ const target = e.target;
409
+ target.value = target.value.replace(/\D/g, "");
410
+ }
405
411
  }
406
412
  ) }),
407
413
  loanPurpose === 2 ? /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
@@ -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";
@@ -148,10 +149,11 @@ const MortgageWarehouseLending = ({
148
149
  onValidate,
149
150
  id
150
151
  }) => {
152
+ const cachedEmailValidator = useCachedEmailValidator(validateEmail);
151
153
  const schema = z.object({
152
154
  first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
153
155
  last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
154
- 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." }),
155
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) => {
156
158
  const removeDashes = val.replace(/-/gi, "");
157
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";
@@ -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";
@@ -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";
@@ -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,
@@ -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: () => "",
@@ -18,7 +18,6 @@ export declare const menuData: {
18
18
  "Summit Savings": string;
19
19
  "First Savings": string;
20
20
  };
21
- "Certificates of Deposits": string;
22
21
  Premier: {
23
22
  "Premier Home": string;
24
23
  "Private Client": string;
@@ -99,7 +98,6 @@ export declare const menuData: {
99
98
  "Education & Insights Home": string;
100
99
  "Banking Insights": string;
101
100
  "Investing Insights": string;
102
- "Investing Podcast": string;
103
101
  };
104
102
  };
105
103
  };
@@ -168,9 +168,6 @@ const menuData = {
168
168
  "{AXOSBANK}/personal/bank/savings-accounts/first-savings"
169
169
  )
170
170
  },
171
- "Certificates of Deposits": findMoreAxosDomains(
172
- "{AXOSBANK}/personal/bank/savings-accounts/certificates-of-deposit"
173
- ),
174
171
  Premier: {
175
172
  "Premier Home": findMoreAxosDomains("{AXOSBANK}/personal/bank/premier"),
176
173
  "Private Client": findMoreAxosDomains(
@@ -332,10 +329,7 @@ const menuData = {
332
329
  "Banking Insights": findMoreAxosDomains(
333
330
  "{AXOSBANK}/personal/insights/finance"
334
331
  ),
335
- "Investing Insights": findMoreAxosDomains("{AXOS}/invest/insights"),
336
- "Investing Podcast": findMoreAxosDomains(
337
- "https://moneyevolved.libsyn.com/"
338
- )
332
+ "Investing Insights": findMoreAxosDomains("{AXOS}/invest/insights")
339
333
  }
340
334
  }
341
335
  },
@@ -54,7 +54,7 @@ import "../../Input/Checkbox.css.js";
54
54
  import "../../LoadingIndicator/LoadingIndicator.css.js";
55
55
  import "../../Inputs/Input.css.js";
56
56
  /* empty css */
57
- import { Hyperlink } from "../../Hyperlink/index.js";
57
+ import "../../Hyperlink/Hyperlink.css.js";
58
58
  /* empty css */
59
59
  import "iframe-resizer";
60
60
  /* empty css */
@@ -938,27 +938,6 @@ function SubNavBar() {
938
938
  ) })
939
939
  ] })
940
940
  ] }),
941
- /* @__PURE__ */ jsxs("div", { className: "flex_row", children: [
942
- /* @__PURE__ */ jsx(
943
- Image,
944
- {
945
- src: `https://images.axos.com/o9ov1v03uwqk/6HFMuiXSvCndJhrPrt4JYk/0a8b9411818a8116943487f946867fe7/nav-submenu-cds-icon.svg`,
946
- alt: "",
947
- width: 20,
948
- height: 20
949
- }
950
- ),
951
- /* @__PURE__ */ jsx("ul", { className: `${styles.ml_8} list_unstyled`, children: /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
952
- Link,
953
- {
954
- href: findMoreAxosDomains(
955
- "{AXOSBANK}/personal/bank/savings-accounts/certificates-of-deposit"
956
- ),
957
- role: "heading",
958
- children: "Certificates of Deposit"
959
- }
960
- ) }) })
961
- ] }),
962
941
  /* @__PURE__ */ jsxs("div", { className: "flex_row", children: [
963
942
  /* @__PURE__ */ jsx(
964
943
  Image,
@@ -1958,15 +1937,6 @@ function SubNavBar() {
1958
1937
  ),
1959
1938
  children: "Investing Insights"
1960
1939
  }
1961
- ) }),
1962
- /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
1963
- Hyperlink,
1964
- {
1965
- targetUrl: findMoreAxosDomains(
1966
- "https://moneyevolved.libsyn.com/"
1967
- ),
1968
- children: "Investing Podcast"
1969
- }
1970
1940
  ) })
1971
1941
  ] })
1972
1942
  ] })
@@ -11,6 +11,7 @@ import '../assets/VideoWrapper/VideoWrapper.css';import '../assets/TopicalNavSet
11
11
  /* empty css */
12
12
  import "../utils/allowedAxosDomains.js";
13
13
  import { getVariant } from "../utils/getVariant.js";
14
+ import "react";
14
15
  import { columnValues } from "../utils/variant.types.js";
15
16
  import clsx from "clsx";
16
17
  /* empty css */
@@ -18,7 +19,6 @@ import clsx from "clsx";
18
19
  import "../Accordion/Accordion.js";
19
20
  import "../Accordion/Accordion.css.js";
20
21
  import "../AlertBanner/AlertBanner.css.js";
21
- import "react";
22
22
  import "../Article/Article.css.js";
23
23
  import "../ArticlesSet/ArticlesSet.css.js";
24
24
  import "../Calculators/calculator.css.js";
package/dist/Tab/Tab.js CHANGED
@@ -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 clsx from "clsx";
5
6
  import { tab } from "./Tab.css.js";
6
7
  const Tab = ({
@@ -1,68 +1,68 @@
1
- ._quote_spacer_168r9_1 {
2
- line-height: 1.35;
3
- margin-block: clamp(1.88rem, 1.99vw + 1.41rem, 3rem);
4
- margin-inline: auto;
5
- }
6
-
7
- ._author_168r9_13,
8
- ._quote_168r9_1 {
9
- color: #1f1f1f;
10
- }
11
-
12
- ._author_168r9_13 {
13
- text-align: right;
14
- margin-top: 18px;
15
- }
16
-
17
- ._author_168r9_13 cite {
18
- font-style: normal;
19
- }
20
-
21
- ._quote_spacer_168r9_1 .img_fluid {
22
- margin-right: 24px;
23
- transform: rotateY(180deg) scaleY(-1);
24
- }
25
-
26
- ._quote_spacer_168r9_1 .flex_row {
27
- align-items: flex-start;
28
- }
29
-
30
- ._quote_168r9_1 p {
31
- font-size: clamp(1.22rem, 0.92vw + 1rem, 1.74rem);
32
- font-style: italic;
33
- line-height: 1.2;
34
- }
35
-
36
- @media (max-width: 768px) {
37
- ._quote_spacer_168r9_1 .img_fluid {
38
- max-width: 30px;
39
- margin-right: 12px;
40
- }
41
- ._author_168r9_13 {
42
- margin-top: 14px;
43
- }
44
- ._quote_168r9_1 p {
45
- font-size: 18px;
46
- }
47
- ._author_168r9_13 cite {
48
- font-size: 14px;
49
- }
50
- }
51
-
52
- @media (max-width: 500px) {
53
- ._author_168r9_13 {
54
- margin-top: 12px;
55
- }
56
- }
57
-
58
- @media (min-width: 604px) {
59
- ._quote_spacer_168r9_1 {
60
- width: min(calc(100% - 2rem), 792px);
61
- }
62
- }
63
-
64
- @media (min-width: 1023px) {
65
- ._quote_168r9_1 p {
66
- font-weight: 700;
67
- }
68
- }
1
+ ._quote_spacer_53yiw_1 {
2
+ line-height: 1.35;
3
+ margin-block: clamp(1.88rem, 1.99vw + 1.41rem, 3rem);
4
+ margin-inline: auto;
5
+ }
6
+
7
+ ._author_53yiw_7,
8
+ ._quote_53yiw_1 {
9
+ color: #1f1f1f;
10
+ }
11
+
12
+ ._author_53yiw_7 {
13
+ text-align: right;
14
+ margin-top: 18px;
15
+ }
16
+
17
+ ._author_53yiw_7 cite {
18
+ font-style: normal;
19
+ }
20
+
21
+ ._quote_spacer_53yiw_1 .img_fluid {
22
+ margin-right: 24px;
23
+ transform: rotateY(180deg) scaleY(-1);
24
+ }
25
+
26
+ ._quote_spacer_53yiw_1 .flex_row {
27
+ align-items: flex-start;
28
+ }
29
+
30
+ ._quote_53yiw_1 p {
31
+ font-size: clamp(1.22rem, 0.92vw + 1rem, 1.74rem);
32
+ font-style: italic;
33
+ line-height: 1.2;
34
+ }
35
+
36
+ @media (max-width: 768px) {
37
+ ._quote_spacer_53yiw_1 .img_fluid {
38
+ max-width: 30px;
39
+ margin-right: 12px;
40
+ }
41
+ ._author_53yiw_7 {
42
+ margin-top: 14px;
43
+ }
44
+ ._quote_53yiw_1 p {
45
+ font-size: 18px;
46
+ }
47
+ ._author_53yiw_7 cite {
48
+ font-size: 14px;
49
+ }
50
+ }
51
+
52
+ @media (max-width: 500px) {
53
+ ._author_53yiw_7 {
54
+ margin-top: 12px;
55
+ }
56
+ }
57
+
58
+ @media (min-width: 604px) {
59
+ ._quote_spacer_53yiw_1 {
60
+ width: min(calc(100% - 2rem), 792px);
61
+ }
62
+ }
63
+
64
+ @media (min-width: 1023px) {
65
+ ._quote_53yiw_1 p {
66
+ font-weight: 700;
67
+ }
68
+ }
@@ -239,7 +239,6 @@ main > div:has(.txcb8d1f) {
239
239
  }
240
240
  .txcb8d1n {
241
241
  aspect-ratio: 344 / 392;
242
- background-color: #DAE2E5;
243
242
  border-radius: 16px;
244
243
  align-self: stretch;
245
244
  overflow: hidden;
package/dist/main.js CHANGED
@@ -205,11 +205,14 @@ import { VideoWrapper } from "./VideoWrapper/index.js";
205
205
  import { Tab } from "./Tab/Tab.js";
206
206
  import { TabContainer } from "./Tab/TabContainer.js";
207
207
  import { findMoreAxosDomains, isAllowedUrl } from "./utils/allowedAxosDomains.js";
208
+ import { appendQueryParams } from "./utils/appendQueryParams.js";
209
+ import { createCachedEmailValidator } from "./utils/emailValidation.js";
208
210
  import { associatedEmail } from "./utils/EverestValidity.js";
209
211
  import { getVariant, getVariantWithRegex } from "./utils/getVariant.js";
212
+ import { createCachedNMLSValidator } from "./utils/nmlsValidation.js";
213
+ import { useCachedEmailValidator, useCachedNMLSValidator } from "./utils/useCachedValidators.js";
210
214
  import { isAbsoluteUrl, isEmailLink, isPhoneLink, shortUrl, validateLink } from "./utils/validateExternalLinks.js";
211
215
  import { columnValues } from "./utils/variant.types.js";
212
- import { appendQueryParams } from "./utils/appendQueryParams.js";
213
216
  import { padding_in_footer, smb_section, smb_wrapper } from "./SocialMediaBar/SocialMediaBar.css.js";
214
217
  export {
215
218
  default20 as AASLogo,
@@ -502,6 +505,8 @@ export {
502
505
  containerIconBillboard,
503
506
  content,
504
507
  copy,
508
+ createCachedEmailValidator,
509
+ createCachedNMLSValidator,
505
510
  description,
506
511
  descriptionField,
507
512
  details,
@@ -782,6 +787,8 @@ export {
782
787
  ul,
783
788
  up_to,
784
789
  url_row,
790
+ useCachedEmailValidator,
791
+ useCachedNMLSValidator,
785
792
  useGlobalContext,
786
793
  useMessages,
787
794
  useOpenChat,
@@ -0,0 +1 @@
1
+ export declare function createCachedEmailValidator(validateEmail: (email: string) => Promise<boolean>): (val: string) => Promise<boolean>;
@@ -0,0 +1,31 @@
1
+ import * as z from "zod";
2
+ function createCachedEmailValidator(validateEmail) {
3
+ const emailValidationCache = /* @__PURE__ */ new Map();
4
+ const validatingEmails = /* @__PURE__ */ new Set();
5
+ return async (val) => {
6
+ if (!val || !z.string().email().safeParse(val).success) {
7
+ return true;
8
+ }
9
+ if (emailValidationCache.has(val)) {
10
+ return emailValidationCache.get(val) ?? false;
11
+ }
12
+ if (validatingEmails.has(val)) {
13
+ await new Promise((resolve) => setTimeout(resolve, 100));
14
+ if (emailValidationCache.has(val)) {
15
+ return emailValidationCache.get(val) ?? false;
16
+ }
17
+ return true;
18
+ }
19
+ validatingEmails.add(val);
20
+ try {
21
+ const isValid = await validateEmail(val);
22
+ emailValidationCache.set(val, isValid);
23
+ return isValid;
24
+ } finally {
25
+ validatingEmails.delete(val);
26
+ }
27
+ };
28
+ }
29
+ export {
30
+ createCachedEmailValidator
31
+ };
@@ -1,6 +1,9 @@
1
1
  export * from './allowedAxosDomains';
2
+ export * from './appendQueryParams';
3
+ export * from './emailValidation';
2
4
  export * from './EverestValidity';
3
5
  export * from './getVariant';
6
+ export * from './nmlsValidation';
7
+ export * from './useCachedValidators';
4
8
  export * from './validateExternalLinks';
5
9
  export * from './variant.types';
6
- export * from './appendQueryParams';