@axos-web-dev/shared-components 2.0.0-dev.33 → 2.0.0-dev.37

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 (115) hide show
  1. package/dist/ATMLocator/ATMLocator.js +21 -89
  2. package/dist/Auth/ErrorAlert.js +6 -93
  3. package/dist/Button/Button.js +6 -126
  4. package/dist/Calculators/ApyCalculator/index.js +88 -6
  5. package/dist/Calculators/Calculator.d.ts +1 -1
  6. package/dist/Calculators/Calculator.js +19 -94
  7. package/dist/Calculators/MarginTradingCalculator/index.js +2 -118
  8. package/dist/Calculators/SummitApyCalculator/index.js +11 -5
  9. package/dist/Carousel/index.js +4 -115
  10. package/dist/Chatbot/ChatWindow.css.js +1 -0
  11. package/dist/Chatbot/Chatbot.css.js +0 -1
  12. package/dist/Chevron/index.js +5 -121
  13. package/dist/Comparison/Comparison.js +5 -127
  14. package/dist/ExecutiveBio/ExecutiveBio.interface.d.ts +3 -2
  15. package/dist/ExecutiveBio/ExecutiveBio.js +4 -132
  16. package/dist/FaqAccordion/index.js +5 -113
  17. package/dist/FooterSiteMap/AxosBank/FooterSiteMap.js +4 -115
  18. package/dist/FooterSiteMap/AxosBank/ServerFooterSiteMap.d.ts +10 -0
  19. package/dist/FooterSiteMap/AxosBank/ServerFooterSiteMap.js +151 -0
  20. package/dist/FooterSiteMap/AxosBank/index.d.ts +1 -0
  21. package/dist/FooterSiteMap/AxosBank/index.js +2 -0
  22. package/dist/FooterSiteMap/index.js +2 -0
  23. package/dist/Forms/ApplyNow.js +3 -114
  24. package/dist/Forms/ContactCompany.d.ts +1 -1
  25. package/dist/Forms/ContactCompanyTitle.d.ts +1 -1
  26. package/dist/Forms/ContactUsBusiness.js +5 -107
  27. package/dist/Forms/ContactUsBusinessNameEmail.js +6 -107
  28. package/dist/Forms/ContactUsNMLSId.js +5 -107
  29. package/dist/Forms/CpraRequest.js +2 -101
  30. package/dist/Forms/CraPublicFile.js +5 -107
  31. package/dist/Forms/DealerServices.d.ts +1 -1
  32. package/dist/Forms/EmailOnly.js +6 -118
  33. package/dist/Forms/FormEnums.d.ts +16 -0
  34. package/dist/Forms/FormEnums.js +27 -0
  35. package/dist/Forms/MortgageRate/MortgageRateForm.js +33 -108
  36. package/dist/Forms/MortgageRate/MortgageRateQuoteFilters.js +34 -13
  37. package/dist/Forms/MortgageRate/MortgageRateWatch.d.ts +1 -1
  38. package/dist/Forms/MortgageRate/MortgageRateWatch.js +94 -115
  39. package/dist/Forms/MortgageWarehouseLending.js +5 -107
  40. package/dist/Forms/NameAndEmail.d.ts +8 -0
  41. package/dist/Forms/NameAndEmail.js +165 -0
  42. package/dist/Forms/NonQMLoans.d.ts +16 -0
  43. package/dist/Forms/NonQMLoans.js +369 -0
  44. package/dist/Forms/SuccesForm.js +7 -95
  45. package/dist/Forms/index.d.ts +2 -0
  46. package/dist/Forms/index.js +4 -0
  47. package/dist/Hyperlink/index.js +4 -115
  48. package/dist/ImageLink/ImageLink.js +8 -113
  49. package/dist/ImageLink/ImageLinkSet.js +6 -120
  50. package/dist/ImageLink/index.js +5 -109
  51. package/dist/ImageToast/index.js +2 -113
  52. package/dist/Input/DownPaymentInput.js +1 -0
  53. package/dist/Insight/Featured/CategorySelector.css.d.ts +5 -3
  54. package/dist/Insight/Featured/CategorySelector.css.js +12 -8
  55. package/dist/Insight/Featured/CategorySelector.d.ts +2 -1
  56. package/dist/Insight/Featured/CategorySelector.js +76 -145
  57. package/dist/Insight/Featured/Featured.css.d.ts +13 -4
  58. package/dist/Insight/Featured/Featured.css.js +37 -18
  59. package/dist/Insight/Featured/Featured.d.ts +1 -0
  60. package/dist/Insight/Featured/Featured.js +131 -205
  61. package/dist/Insight/Featured/Header.css.d.ts +1 -0
  62. package/dist/Insight/Featured/Header.css.js +9 -6
  63. package/dist/Insight/Featured/Header.js +14 -132
  64. package/dist/Insight/Featured/index.js +13 -4
  65. package/dist/Insight/index.js +13 -4
  66. package/dist/LandingPageHeader/LandingPageHeader.d.ts +1 -1
  67. package/dist/LandingPageHeader/WithLogin.js +7 -124
  68. package/dist/Modal/Modal.js +2 -128
  69. package/dist/NavigationMenu/AxosALTS/index.js +6 -117
  70. package/dist/NavigationMenu/AxosAdvisor/NavBar.module.js +52 -52
  71. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileMenu.js +4 -114
  72. package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.js +1 -1
  73. package/dist/NavigationMenu/AxosBank/SubNavBar.js +7 -115
  74. package/dist/NavigationMenu/AxosBank/index.js +6 -124
  75. package/dist/NavigationMenu/LaVictoire/index.js +4 -123
  76. package/dist/NavigationMenu/NavItem/index.js +4 -116
  77. package/dist/NavigationMenu/ServerNavigation/DropwdownButton.js +4 -123
  78. package/dist/NavigationMenu/ServerNavigation/Menu.js +4 -121
  79. package/dist/NavigationMenu/ServerNavigation/MobileMenu/MobileMenu.js +17 -125
  80. package/dist/NavigationMenu/ServerNavigation/MobileMenu/MobileNavData.d.ts +1 -1
  81. package/dist/NavigationMenu/ServerNavigation/MobileMenu/MobileNavData.js +3 -3
  82. package/dist/NavigationMenu/ServerNavigation/SubNavBar.js +5 -115
  83. package/dist/NavigationMenu/ServerNavigation/SubNavItem.js +4 -116
  84. package/dist/NavigationMenu/ServerNavigation/index.js +15 -116
  85. package/dist/NavigationMenu/getPathFromNavUrl.d.ts +3 -0
  86. package/dist/NavigationMenu/getPathFromNavUrl.js +15 -0
  87. package/dist/NavigationMenu/index.d.ts +3 -2
  88. package/dist/NavigationMenu/index.js +8 -7
  89. package/dist/NavigationMenu/utils.d.ts +0 -3
  90. package/dist/NavigationMenu/utils.js +0 -13
  91. package/dist/SetContainer/SetContainer.js +9 -115
  92. package/dist/SocialMediaBar/iconsRepository.js +0 -130
  93. package/dist/VideoTile/VideoTile.js +2 -112
  94. package/dist/VideoWrapper/index.js +7 -116
  95. package/dist/assets/CallToActionBar/CallToActionBar.css +2 -1
  96. package/dist/assets/Forms/Forms.css +2 -1
  97. package/dist/assets/ImageBillboard/ImageBillboard.css +1 -1
  98. package/dist/assets/Input/Input.css +1 -0
  99. package/dist/assets/Insight/Featured/CategorySelector.css +60 -38
  100. package/dist/assets/Insight/Featured/Featured.css +126 -65
  101. package/dist/assets/Insight/Featured/Header.css +22 -13
  102. package/dist/assets/NavigationMenu/AxosAdvisor/NavBar.css +609 -609
  103. package/dist/assets/SetContainer/SetContainer.css +6 -6
  104. package/dist/assets/TextBlock/TextBlock.css +0 -1
  105. package/dist/icons/Clock/index.js +1 -0
  106. package/dist/main.js +28 -10
  107. package/dist/utils/allowedAxosDomains.d.ts +1 -1
  108. package/dist/utils/allowedAxosDomains.js +33 -20
  109. package/dist/utils/createUrlResolver.d.ts +3 -0
  110. package/dist/utils/createUrlResolver.js +7 -0
  111. package/dist/utils/index.d.ts +1 -0
  112. package/dist/utils/index.js +2 -0
  113. package/dist/utils/insightsData.d.ts +1 -1
  114. package/dist/utils/insightsData.js +1 -6
  115. package/package.json +1 -1
@@ -24,7 +24,7 @@ import { checkbox } from "../../Input/Checkbox.css.js";
24
24
  import "../../IconBillboard/IconBillboard.css.js";
25
25
  import "../../icons/ArrowIcon/ArrowIcon.css.js";
26
26
  import "../../icons/CheckIcon/CheckIcon.css.js";
27
- import '../../assets/VideoWrapper/VideoWrapper.css';import '../../assets/TopicalNavSet/TopicalNavSet.css';import '../../assets/TopicalNavItem/TopicalNavItem.css';import '../../assets/Topic/Topic.css';import '../../assets/TextBlock/TextBlock.css';import '../../assets/SocialMediaBar/SocialMediaBar.css';import '../../assets/SecondaryFooter/SecondaryFooter.css';import '../../assets/Pagination/Pagination.css';import '../../assets/PageNavSet/PageNavigationSet.css';import '../../assets/NavigationMenu/LaVictoire/NavBar2.css';import '../../assets/NavigationMenu/AxosALTS/NavBar2.css';import '../../assets/NavigationMenu/AxosClearing/NavBar2.css';import '../../assets/NavigationMenu/AxosBank/SubNavbar.css';import '../../assets/NavigationMenu/ServerNavigation/NavigationBar.css';import '../../assets/NavigationMenu/AxosAdvisorServices/SubNavbar.css';import '../../assets/NavigationMenu/AxosAdvisorServices/NavBar2.css';import '../../assets/NavigationMenu/AxosAdvisor/SubNavbar.css';import '../../assets/NavigationMenu/AxosAdvisor/NavBar2.css';import '../../assets/NavigationMenu/AxosBank/NavBar2.css';import '../../assets/Insight/Featured/Header.css';import '../../assets/Insight/Featured/CategorySelector.css';import '../../assets/Insight/Featured/Featured.css';import '../../assets/ImageLink/ImageLink.css';import '../../assets/VideoTile/VideoTile.css';import '../../assets/HelpArticle/HelpArticle.css';import '../../assets/FooterSiteMap/AxosBank/FooterSiteMap.css';import '../../assets/FooterDisclosure/LVF/LaVictorieFooter.css';import '../../assets/DownloadTile/DownloadTile.css';import '../../assets/CollectInformationAlert/CollectInformationAlert.css';import '../../assets/Chatbot/ChatWindow.css';import '../../assets/Chatbot/Bubble.css';import '../../assets/Chatbot/AnimatedGradientBorder.css';import '../../assets/CallToActionBar/CallToActionBar.css';import '../../assets/Insight/Insight.css';import '../../assets/AwardsItem/AwardsItem.css';import '../../assets/AwardsBanner/AwardsBanner.css';import '../../assets/Auth/SignIn.css';import '../../assets/Auth/ErrorAlert.css';import '../../assets/Calculators/MarginTradingCalculator/MarginTradingCalculator.css';import '../../assets/Forms/QuickPricer/UserInformation.css';import '../../assets/Forms/QuickPricer/QuickPricerResults.css';import '../../assets/Modal/Modal.css';import '../../assets/Forms/HoneyPot/HoneyPot.css';import '../../assets/ImageToast/ImageToast.css';import '../../assets/BulletItem/BulletItem.css';import '../../assets/Typography/Typography.css';import '../../assets/icons/FollowIcon/FollowIcon.css';import '../../assets/icons/DownloadIcon/DownloadIcon.css';import '../../assets/themes/victorie.css';import '../../assets/themes/ufb.css';import '../../assets/themes/premier.css';import '../../assets/themes/axos.css';/* empty css */
27
+ import '../../assets/Modal/Modal.css';import '../../assets/BulletItem/BulletItem.css';import '../../assets/Typography/Typography.css';import '../../assets/icons/FollowIcon/FollowIcon.css';import '../../assets/icons/DownloadIcon/DownloadIcon.css';import '../../assets/themes/victorie.css';import '../../assets/themes/ufb.css';import '../../assets/themes/premier.css';import '../../assets/themes/axos.css';/* empty css */
28
28
  /* empty css */
29
29
  /* empty css */
30
30
  /* empty css */
@@ -32,107 +32,13 @@ import '../../assets/VideoWrapper/VideoWrapper.css';import '../../assets/Topical
32
32
  /* empty css */
33
33
  /* empty css */
34
34
  /* empty css */
35
- import "../../Accordion/Accordion.js";
36
- import "../../Accordion/Accordion.css.js";
37
- import "../../AlertBanner/AlertBanner.css.js";
38
- import "../../Article/Article.css.js";
39
- import "../../ArticlesSet/ArticlesSet.css.js";
40
- import "../../Calculators/calculator.css.js";
41
- import "../../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
42
- import "../../Modal/contextApi/store.js";
43
- import "next/image.js";
44
- import { button } from "../../Button/Button.css.js";
45
- import "../../Calculators/ApyCalculator/ApyCalculator.css.js";
46
- import "../../Calculators/ApyCalculatorUserTest/ApyCalculatorUserTest.css.js";
47
- import "../../HeroBanner/LargeBanner.css.js";
48
- import "../../HeroBanner/HeroBanner.css.js";
49
- import "../../HeroBanner/SelectionBanner.css.js";
50
- /* empty css */
51
- import "../../SetContainer/SetContainer.css.js";
52
- import "../../Table/Table.css.js";
53
- import "../../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
54
- import "../../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
55
- import "../../Input/PercentageInput.js";
56
- import "../../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
57
- /* empty css */
58
- import "../HoneyPot/honeyPotValidation.js";
59
- import "../SalesforceFieldsForm.js";
60
- import "react-use";
61
35
  import "../../Chevron/Chevron.css.js";
62
36
  /* empty css */
37
+ import "../../Modal/contextApi/store.js";
63
38
  import "../../Interstitial/Interstitial-variants.css.js";
64
- /* empty css */
65
- import "../../Hyperlink/Hyperlink.css.js";
66
- /* empty css */
39
+ import { button } from "../../Button/Button.css.js";
40
+ import "react-use";
67
41
  import { SuccesFormWrapper } from "../SuccesForm.js";
68
- import "iframe-resizer";
69
- /* empty css */
70
- import "../../Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
71
- import "../../Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css.js";
72
- import "../../Calculators/SummitApyCalculator/BalanceAPYCalculator.css.js";
73
- /* empty css */
74
- import "react-dom";
75
- /* empty css */
76
- import "../../Auth/SignInPassword.js";
77
- /* empty css */
78
- /* empty css */
79
- /* empty css */
80
- /* empty css */
81
- import "../../Carousel/index.js";
82
- /* empty css */
83
- /* empty css */
84
- import "../../Chatbot/store/chat.js";
85
- import "../../Chatbot/Chatbot.js";
86
- import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
87
- /* empty css */
88
- import "../../Chatbot/store/messages.js";
89
- /* empty css */
90
- import "../../Comparison/Comparison.css.js";
91
- import "../../Tab/Tab.css.js";
92
- import "../../icons/Star/Star.css.js";
93
- import "../../ContentBanner/ContentBanner.css.js";
94
- /* empty css */
95
- import "../../ExecutiveBio/ExecutiveBio.css.js";
96
- import "../../FaqAccordion/index.js";
97
- import "../../FooterDisclosure/FooterDisclosure.css.js";
98
- /* empty css */
99
- /* empty css */
100
- /* empty css */
101
- import "../../ImageBillboard/ImageBillboard.css.js";
102
- import "next/script.js";
103
- /* empty css */
104
- /* empty css */
105
- /* empty css */
106
- /* empty css */
107
- /* empty css */
108
- import "../../LandingPageHeader/LandingPageHeader.css.js";
109
- import "next/link.js";
110
- /* empty css */
111
- /* empty css */
112
- import "next/navigation.js";
113
- /* empty css */
114
- /* empty css */
115
- /* empty css */
116
- /* empty css */
117
- import "../../NavigationMenu/ServerNavigation/Menu.js";
118
- import "../../NavigationMenu/ServerNavigation/SubNavbar.css.js";
119
- /* empty css */
120
- /* empty css */
121
- /* empty css */
122
- /* empty css */
123
- import "../../PageNavItem/PageNavItem.css.js";
124
- import "react-slick";
125
- /* empty css */
126
- /* empty css */
127
- /* empty css */
128
- /* empty css */
129
- import "../../StepItem/StepItem.css.js";
130
- import "../../StepItemSet/StepItemSet.css.js";
131
- /* empty css */
132
- /* empty css */
133
- /* empty css */
134
- /* empty css */
135
- /* empty css */
136
42
  const RateWatchForm = ({
137
43
  email,
138
44
  lastName,
@@ -140,12 +46,34 @@ const RateWatchForm = ({
140
46
  toggleModal,
141
47
  setRateWatchSubmitted
142
48
  }) => {
49
+ const desiredRateFields = [
50
+ "tR1DesiredRate",
51
+ "tR2DesiredRate",
52
+ "tR3DesiredRate"
53
+ ];
54
+ const sanitizeDesiredRate = (value) => {
55
+ if (!value) return "";
56
+ const normalizedValue = value.replace(/[^\d.]/g, "");
57
+ if (!normalizedValue || normalizedValue === ".") return "";
58
+ const [wholePart, decimalPart = ""] = normalizedValue.split(".");
59
+ const trimmedDecimal = decimalPart.slice(0, 4);
60
+ const formattedValue = trimmedDecimal ? `${wholePart || "0"}.${trimmedDecimal}` : wholePart || "0";
61
+ const numericValue = Number(formattedValue);
62
+ if (!Number.isFinite(numericValue)) return "";
63
+ return Number.isInteger(numericValue) ? String(numericValue) : numericValue.toFixed(4).replace(/\.0+$|(?<=\.\d*)(0+)$/, "").replace(/\.$/, "");
64
+ };
65
+ const isDesiredRateOutOfRange = (value) => {
66
+ if (!value) return false;
67
+ const numericValue = Number(value);
68
+ if (!Number.isFinite(numericValue)) return false;
69
+ return numericValue < 2 || numericValue > 10;
70
+ };
143
71
  const [updateType, setUpdateType] = useState(
144
72
  "Target Rate"
145
73
  );
146
74
  const schema = z.object({
147
75
  updateType: z.string().min(1, { message: "Update type is required." }),
148
- updateCadence: z.string().refine((val) => !(updateType === "Frequency" && !val), {
76
+ updateCadence: z.string().optional().refine((val) => !(updateType === "Frequency" && !val), {
149
77
  message: "Frequency is required."
150
78
  }),
151
79
  loanTerms: z.string().optional().refine((val) => !(updateType === "Frequency" && !val), {
@@ -154,11 +82,13 @@ const RateWatchForm = ({
154
82
  hasSmsConsent: z.boolean().refine((val) => val === true, {
155
83
  message: "You must agree to receive SMS messages."
156
84
  }),
157
- tR1DesiredRate: z.string().optional().refine(
85
+ tR1DesiredRate: z.string().optional().refine((val) => updateType === "Target Rate" ? !!val : true, {
86
+ message: "Desired Rate is required."
87
+ }).refine(
158
88
  (val) => {
159
89
  if (val && updateType === "Target Rate") {
160
90
  const numericValue = +val;
161
- return !val || numericValue >= 2 && numericValue <= 10;
91
+ return numericValue >= 2 && numericValue <= 10;
162
92
  }
163
93
  return true;
164
94
  },
@@ -197,15 +127,21 @@ const RateWatchForm = ({
197
127
  email: z.string()
198
128
  });
199
129
  const methods = useForm({
200
- resolver: zodResolver(schema)
130
+ resolver: zodResolver(schema),
131
+ mode: "onChange"
201
132
  });
202
133
  const {
203
134
  handleSubmit,
204
135
  register,
205
136
  formState: { errors, isSubmitting, isValid },
206
137
  setValue,
207
- clearErrors
138
+ clearErrors,
139
+ watch
208
140
  } = methods;
141
+ const watchedDesiredRates = watch(desiredRateFields);
142
+ const hasDesiredRateWarning = desiredRateFields.some(
143
+ (_, index) => isDesiredRateOutOfRange(watchedDesiredRates[index])
144
+ );
209
145
  const submitForm = async (data) => {
210
146
  const processedData = {
211
147
  ...data,
@@ -244,12 +180,22 @@ const RateWatchForm = ({
244
180
  const handleTypeChange = (event) => {
245
181
  const value = event.target.value;
246
182
  setUpdateType(value);
183
+ methods.setValue("updateType", value, { shouldValidate: true });
184
+ };
185
+ const handleDesiredRateChange = (fieldName) => (event) => {
186
+ const sanitizedValue = sanitizeDesiredRate(event.target.value);
187
+ event.target.value = sanitizedValue;
188
+ setValue(fieldName, sanitizedValue, {
189
+ shouldValidate: true,
190
+ shouldDirty: true,
191
+ shouldTouch: true
192
+ });
247
193
  };
248
194
  const handleSubmitClick = () => {
249
195
  handleSubmit(submitForm)();
250
196
  };
251
197
  useEffect(() => {
252
- methods.reset();
198
+ methods.reset({ updateType });
253
199
  }, [updateType]);
254
200
  return /* @__PURE__ */ jsx("section", { className: "rate-watch-form", children: /* @__PURE__ */ jsx(FormProvider, { ...methods, children: /* @__PURE__ */ jsx(
255
201
  SuccesFormWrapper,
@@ -327,7 +273,7 @@ const RateWatchForm = ({
327
273
  /* @__PURE__ */ jsx("p", { className: mt1Rem, children: "You can establish up to three different targets with one rate watch." }),
328
274
  /* @__PURE__ */ jsxs("div", { className: threeColRow, children: [
329
275
  /* @__PURE__ */ jsxs("div", { children: [
330
- /* @__PURE__ */ jsx("label", { className: resposiveLabel, children: "Select a Loan Type*" }),
276
+ /* @__PURE__ */ jsx("label", { className: resposiveLabel, children: "Select a Loan Type" }),
331
277
  /* @__PURE__ */ jsxs(
332
278
  Dropdown,
333
279
  {
@@ -346,18 +292,24 @@ const RateWatchForm = ({
346
292
  )
347
293
  ] }),
348
294
  /* @__PURE__ */ jsxs("div", { children: [
349
- /* @__PURE__ */ jsx("label", { className: resposiveLabel, children: "Desired Rate" }),
295
+ /* @__PURE__ */ jsxs("label", { className: resposiveLabel, children: [
296
+ "Desired Rate",
297
+ /* @__PURE__ */ jsx("sup", { children: "*" })
298
+ ] }),
350
299
  /* @__PURE__ */ jsx(
351
300
  Input,
352
301
  {
353
302
  className: dynPH,
354
303
  ...register("tR1DesiredRate", {
355
- setValueAs: (value) => value ? `${value}` : ""
304
+ setValueAs: (value) => sanitizeDesiredRate(String(value ?? ""))
356
305
  }),
306
+ onChange: handleDesiredRateChange("tR1DesiredRate"),
357
307
  type: "number",
308
+ min: "2",
309
+ max: "10",
358
310
  placeholder: "Desired Rate",
359
311
  error: !!errors.tR1DesiredRate,
360
- helperText: errors.tR1DesiredRate?.message
312
+ helperText: isDesiredRateOutOfRange(watch("tR1DesiredRate")) ? "Desired Rate must be between 2 and 10." : errors.tR1DesiredRate?.message
361
313
  }
362
314
  )
363
315
  ] }),
@@ -408,9 +360,16 @@ const RateWatchForm = ({
408
360
  Input,
409
361
  {
410
362
  className: dynPH,
411
- ...register("tR2DesiredRate"),
412
- type: "string",
413
- placeholder: "Desired Rate"
363
+ ...register("tR2DesiredRate", {
364
+ setValueAs: (value) => sanitizeDesiredRate(String(value ?? ""))
365
+ }),
366
+ onChange: handleDesiredRateChange("tR2DesiredRate"),
367
+ type: "number",
368
+ min: "2",
369
+ max: "10",
370
+ placeholder: "Desired Rate",
371
+ error: isDesiredRateOutOfRange(watch("tR2DesiredRate")),
372
+ helperText: isDesiredRateOutOfRange(watch("tR2DesiredRate")) ? "Desired Rate must be between 2 and 10." : errors.tR2DesiredRate?.message
414
373
  }
415
374
  ) }),
416
375
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
@@ -456,10 +415,17 @@ const RateWatchForm = ({
456
415
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
457
416
  Input,
458
417
  {
459
- ...register("tR3DesiredRate"),
460
- type: "string",
418
+ ...register("tR3DesiredRate", {
419
+ setValueAs: (value) => sanitizeDesiredRate(String(value ?? ""))
420
+ }),
421
+ onChange: handleDesiredRateChange("tR3DesiredRate"),
422
+ type: "number",
423
+ min: "2",
424
+ max: "10",
461
425
  placeholder: "Desired Rate",
462
- className: dynPH
426
+ className: dynPH,
427
+ error: isDesiredRateOutOfRange(watch("tR3DesiredRate")),
428
+ helperText: isDesiredRateOutOfRange(watch("tR3DesiredRate")) ? "Desired Rate must be between 2 and 10." : errors.tR3DesiredRate?.message
463
429
  }
464
430
  ) }),
465
431
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
@@ -484,7 +450,20 @@ const RateWatchForm = ({
484
450
  }
485
451
  ) })
486
452
  ] }),
487
- /* @__PURE__ */ jsx("p", { className: mt1Rem, children: "*The number in Desired Rate must be at least 2% and no more than 10%" })
453
+ /* @__PURE__ */ jsxs(
454
+ "p",
455
+ {
456
+ className: mt1Rem,
457
+ style: {
458
+ color: hasDesiredRateWarning ? "#d92d20" : void 0,
459
+ fontWeight: hasDesiredRateWarning ? 600 : void 0
460
+ },
461
+ children: [
462
+ /* @__PURE__ */ jsx("sup", { children: "*" }),
463
+ " Please enter a desired rate between 2% and 10%"
464
+ ]
465
+ }
466
+ )
488
467
  ] }),
489
468
  /* @__PURE__ */ jsxs("div", { className: modalCheckboxContainer, children: [
490
469
  /* @__PURE__ */ jsx(
@@ -1,6 +1,10 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { zodResolver } from "@hookform/resolvers/zod";
4
+ import { Button } from "../Button/Button.js";
5
+ import "../Button/Button.css.js";
6
+ import "react";
7
+ import "react-use";
4
8
  import "../Input/Checkbox.js";
5
9
  import "../Input/CurrencyInput.js";
6
10
  import "../Input/Dropdown.js";
@@ -16,126 +20,20 @@ import "../icons/ArrowIcon/ArrowIcon.css.js";
16
20
  import SvgAxosX from "../icons/AxosX/index.js";
17
21
  import SvgComponent from "../icons/AxosX/Blue.js";
18
22
  import "../icons/CheckIcon/CheckIcon.css.js";
19
- import '../assets/VideoWrapper/VideoWrapper.css';import '../assets/TopicalNavSet/TopicalNavSet.css';import '../assets/TopicalNavItem/TopicalNavItem.css';import '../assets/Topic/Topic.css';import '../assets/TextBlock/TextBlock.css';import '../assets/SocialMediaBar/SocialMediaBar.css';import '../assets/SecondaryFooter/SecondaryFooter.css';import '../assets/Pagination/Pagination.css';import '../assets/PageNavSet/PageNavigationSet.css';import '../assets/NavigationMenu/LaVictoire/NavBar2.css';import '../assets/NavigationMenu/AxosALTS/NavBar2.css';import '../assets/NavigationMenu/AxosClearing/NavBar2.css';import '../assets/NavigationMenu/AxosBank/SubNavbar.css';import '../assets/NavigationMenu/ServerNavigation/NavigationBar.css';import '../assets/NavigationMenu/AxosAdvisorServices/SubNavbar.css';import '../assets/NavigationMenu/AxosAdvisorServices/NavBar2.css';import '../assets/NavigationMenu/AxosAdvisor/SubNavbar.css';import '../assets/NavigationMenu/AxosAdvisor/NavBar2.css';import '../assets/NavigationMenu/AxosBank/NavBar2.css';import '../assets/Insight/Featured/Header.css';import '../assets/Insight/Featured/CategorySelector.css';import '../assets/Insight/Featured/Featured.css';import '../assets/ImageLink/ImageLink.css';import '../assets/VideoTile/VideoTile.css';import '../assets/HelpArticle/HelpArticle.css';import '../assets/FooterSiteMap/AxosBank/FooterSiteMap.css';import '../assets/FooterDisclosure/LVF/LaVictorieFooter.css';import '../assets/DownloadTile/DownloadTile.css';import '../assets/CollectInformationAlert/CollectInformationAlert.css';import '../assets/Chatbot/ChatWindow.css';import '../assets/Chatbot/Bubble.css';import '../assets/Chatbot/AnimatedGradientBorder.css';import '../assets/CallToActionBar/CallToActionBar.css';import '../assets/Insight/Insight.css';import '../assets/AwardsItem/AwardsItem.css';import '../assets/AwardsBanner/AwardsBanner.css';import '../assets/Auth/SignIn.css';import '../assets/Auth/ErrorAlert.css';import '../assets/Calculators/MarginTradingCalculator/MarginTradingCalculator.css';import '../assets/Forms/QuickPricer/UserInformation.css';import '../assets/Forms/QuickPricer/QuickPricerResults.css';import '../assets/Modal/Modal.css';import '../assets/ImageToast/ImageToast.css';import '../assets/BulletItem/BulletItem.css';import '../assets/Typography/Typography.css';import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/DownloadIcon/DownloadIcon.css';import '../assets/themes/victorie.css';import '../assets/themes/ufb.css';import '../assets/themes/premier.css';import '../assets/themes/axos.css';/* empty css */
23
+ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/DownloadIcon/DownloadIcon.css';import '../assets/themes/victorie.css';import '../assets/themes/ufb.css';import '../assets/themes/premier.css';import '../assets/themes/axos.css';/* empty css */
20
24
  /* empty css */
21
25
  /* empty css */
22
26
  /* empty css */
23
27
  /* empty css */
24
28
  /* empty css */
25
- import "../Accordion/Accordion.js";
26
- import "../Accordion/Accordion.css.js";
27
29
  import { z } from "zod";
28
30
  import { getVariant } from "../utils/getVariant.js";
29
31
  import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
30
32
  import clsx from "clsx";
31
- import "react";
32
- import "../Chevron/Chevron.css.js";
33
- import "../AlertBanner/AlertBanner.css.js";
34
- import "../Article/Article.css.js";
35
- import { Button } from "../Button/Button.js";
36
- import "../Button/Button.css.js";
37
- import "react-use";
38
- import "../ArticlesSet/ArticlesSet.css.js";
39
- import "../IconBillboard/IconBillboard.css.js";
40
- import "../Calculators/calculator.css.js";
41
- import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
42
- import "../Modal/contextApi/store.js";
43
- import "next/image.js";
44
- import "../Calculators/ApyCalculator/ApyCalculator.css.js";
45
- import "../Calculators/ApyCalculatorUserTest/ApyCalculatorUserTest.css.js";
46
- import "../HeroBanner/LargeBanner.css.js";
47
- import "../HeroBanner/HeroBanner.css.js";
48
- import "../HeroBanner/SelectionBanner.css.js";
49
- /* empty css */
50
- /* empty css */
51
- /* empty css */
52
- import "../SetContainer/SetContainer.css.js";
53
- import "../Table/Table.css.js";
54
- import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
55
- import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
56
- import "../Input/PercentageInput.js";
57
33
  import { useForm, FormProvider } from "react-hook-form";
58
- import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
59
34
  import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
60
35
  import { HoneyPot } from "./HoneyPot/index.js";
61
36
  import { SalesforceSchema } from "./SalesforceFieldsForm.js";
62
- import "../Input/RadioButton.css.js";
63
- import "../Input/Checkbox.css.js";
64
- import "../LoadingIndicator/LoadingIndicator.css.js";
65
- /* empty css */
66
- import "../Interstitial/Interstitial-variants.css.js";
67
- import "../Inputs/Input.css.js";
68
- /* empty css */
69
- import "../Hyperlink/Hyperlink.css.js";
70
- /* empty css */
71
- import "iframe-resizer";
72
- /* empty css */
73
- import "../Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
74
- import "../Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css.js";
75
- import "../Calculators/SummitApyCalculator/BalanceAPYCalculator.css.js";
76
- /* empty css */
77
- import "react-dom";
78
- /* empty css */
79
- import "../Auth/SignInPassword.js";
80
- /* empty css */
81
- /* empty css */
82
- /* empty css */
83
- /* empty css */
84
- import "../Carousel/index.js";
85
- /* empty css */
86
- /* empty css */
87
- import "../Chatbot/store/chat.js";
88
- import "../Chatbot/Chatbot.js";
89
- import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
90
- /* empty css */
91
- import "../Chatbot/store/messages.js";
92
- /* empty css */
93
- import "../Comparison/Comparison.css.js";
94
- import "../Tab/Tab.css.js";
95
- import "../icons/Star/Star.css.js";
96
- import "../ContentBanner/ContentBanner.css.js";
97
- /* empty css */
98
- import "../ExecutiveBio/ExecutiveBio.css.js";
99
- import "../FaqAccordion/index.js";
100
- import "../FooterDisclosure/FooterDisclosure.css.js";
101
- /* empty css */
102
- /* empty css */
103
- /* empty css */
104
- import "../ImageBillboard/ImageBillboard.css.js";
105
- import "next/script.js";
106
- /* empty css */
107
- /* empty css */
108
- /* empty css */
109
- /* empty css */
110
- /* empty css */
111
- import "../LandingPageHeader/LandingPageHeader.css.js";
112
- import "next/link.js";
113
- /* empty css */
114
- /* empty css */
115
- import "next/navigation.js";
116
- /* empty css */
117
- /* empty css */
118
- /* empty css */
119
- /* empty css */
120
- import "../NavigationMenu/ServerNavigation/Menu.js";
121
- import "../NavigationMenu/ServerNavigation/SubNavbar.css.js";
122
- /* empty css */
123
- /* empty css */
124
- /* empty css */
125
- /* empty css */
126
- import "../PageNavItem/PageNavItem.css.js";
127
- import "react-slick";
128
- /* empty css */
129
- /* empty css */
130
- /* empty css */
131
- /* empty css */
132
- import "../StepItem/StepItem.css.js";
133
- import "../StepItemSet/StepItemSet.css.js";
134
- /* empty css */
135
- /* empty css */
136
- /* empty css */
137
- /* empty css */
138
- /* empty css */
139
37
  import { honeyPotSchema, isValidHoneyPot } from "./HoneyPot/honeyPotValidation.js";
140
38
  const MortgageWarehouseLending = ({
141
39
  icon = false,
@@ -0,0 +1,8 @@
1
+ import { FormProps } from './FormProps';
2
+
3
+ export type NameAndEmailInputs = {
4
+ first_name: string;
5
+ last_name: string;
6
+ email: string;
7
+ };
8
+ export declare const NameAndEmail: ({ icon, children, onSubmit, disclosure, variant: fullVariant, headline, description, callToAction, validateEmail, onValidate, id, }: FormProps) => import("react").JSX.Element;
@@ -0,0 +1,165 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { zodResolver } from "@hookform/resolvers/zod";
4
+ import { Button } from "../Button/Button.js";
5
+ import "../Button/Button.css.js";
6
+ import "react";
7
+ import "react-use";
8
+ import { Input } from "../Input/Input.js";
9
+ import "../icons/ArrowIcon/ArrowIcon.css.js";
10
+ import SvgAxosX from "../icons/AxosX/index.js";
11
+ import SvgComponent from "../icons/AxosX/Blue.js";
12
+ import "../icons/CheckIcon/CheckIcon.css.js";
13
+ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/DownloadIcon/DownloadIcon.css';import '../assets/themes/victorie.css';import '../assets/themes/ufb.css';import '../assets/themes/premier.css';import '../assets/themes/axos.css';/* empty css */
14
+ /* empty css */
15
+ /* empty css */
16
+ /* empty css */
17
+ /* empty css */
18
+ /* empty css */
19
+ import * as z from "zod";
20
+ import { associatedEmail } from "../utils/EverestValidity.js";
21
+ import { getVariant } from "../utils/getVariant.js";
22
+ import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
23
+ import clsx from "clsx";
24
+ import { useForm, FormProvider } from "react-hook-form";
25
+ import { iconForm, headerContainer, headerForm, form, descriptionField, fullRowForm, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
26
+ import { HoneyPot } from "./HoneyPot/index.js";
27
+ import { SalesforceSchema } from "./SalesforceFieldsForm.js";
28
+ import { honeyPotSchema, isValidHoneyPot } from "./HoneyPot/honeyPotValidation.js";
29
+ const NameAndEmail = ({
30
+ icon = false,
31
+ children,
32
+ onSubmit = (values) => {
33
+ console.log(values);
34
+ },
35
+ disclosure,
36
+ variant: fullVariant = "primary",
37
+ headline,
38
+ description,
39
+ callToAction,
40
+ validateEmail,
41
+ onValidate,
42
+ id
43
+ }) => {
44
+ const cachedEmailValidator = useCachedEmailValidator(validateEmail);
45
+ const schema = z.object({
46
+ first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
47
+ last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
48
+ email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." })
49
+ });
50
+ const gen_schema = schema.merge(SalesforceSchema).merge(honeyPotSchema).superRefine((data, ctx) => {
51
+ if (!isValidHoneyPot(data)) {
52
+ ctx.addIssue({
53
+ code: z.ZodIssueCode.custom,
54
+ message: "fields are not valid."
55
+ });
56
+ }
57
+ });
58
+ const methods = useForm({
59
+ resolver: zodResolver(gen_schema),
60
+ mode: "all",
61
+ defaultValues: {
62
+ email: ""
63
+ }
64
+ });
65
+ const {
66
+ handleSubmit,
67
+ register,
68
+ formState: { errors, isValid, isSubmitting }
69
+ } = methods;
70
+ const submitForm = async (data) => {
71
+ await onSubmit(data);
72
+ };
73
+ const variant = getVariant(fullVariant);
74
+ return /* @__PURE__ */ jsx("section", { id, className: clsx(formContainer({ variant })), children: /* @__PURE__ */ jsx("div", { className: clsx("containment"), children: /* @__PURE__ */ jsxs(FormProvider, { ...methods, children: [
75
+ icon && /* @__PURE__ */ jsx("div", { className: clsx("text_center", iconForm), children: ["primary", "secondary"].includes(variant) ? /* @__PURE__ */ jsx(SvgComponent, {}) : /* @__PURE__ */ jsx(SvgAxosX, {}) }),
76
+ /* @__PURE__ */ jsxs("div", { className: `${headerContainer} text_center`, children: [
77
+ /* @__PURE__ */ jsx("h2", { className: clsx("header_2", headerForm({ variant })), children: headline }),
78
+ description && /* @__PURE__ */ jsx(
79
+ "div",
80
+ {
81
+ className: `${form} ${descriptionField({ variant })} text_center`,
82
+ children: description
83
+ }
84
+ )
85
+ ] }),
86
+ /* @__PURE__ */ jsxs(
87
+ "form",
88
+ {
89
+ className: form,
90
+ onSubmit: async (e) => {
91
+ onValidate && onValidate(e);
92
+ await handleSubmit(submitForm)(e);
93
+ e.preventDefault();
94
+ },
95
+ children: [
96
+ /* @__PURE__ */ jsxs("div", { className: clsx(formWrapper({ variant })), children: [
97
+ /* @__PURE__ */ jsx("div", { className: "", children: /* @__PURE__ */ jsx(
98
+ Input,
99
+ {
100
+ id: "first_name",
101
+ ...register("first_name", { required: true }),
102
+ label: "First Name",
103
+ sizes: "medium",
104
+ placeholder: "First Name",
105
+ required: true,
106
+ error: !!errors.first_name,
107
+ helperText: errors.first_name?.message,
108
+ variant
109
+ }
110
+ ) }),
111
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
112
+ Input,
113
+ {
114
+ id: "last_name",
115
+ ...register("last_name", { required: true }),
116
+ label: "Last Name",
117
+ sizes: "medium",
118
+ placeholder: "Last Name",
119
+ required: true,
120
+ error: !!errors.last_name,
121
+ helperText: errors.last_name?.message,
122
+ variant
123
+ }
124
+ ) }),
125
+ /* @__PURE__ */ jsx("div", { className: fullRowForm, children: /* @__PURE__ */ jsx(
126
+ Input,
127
+ {
128
+ id: "email",
129
+ ...register("email", {
130
+ required: true,
131
+ validate: {
132
+ isValid: associatedEmail
133
+ }
134
+ }),
135
+ label: "Email",
136
+ sizes: "medium",
137
+ placeholder: "Email",
138
+ required: true,
139
+ error: !!errors.email,
140
+ helperText: errors.email?.message,
141
+ variant
142
+ }
143
+ ) }),
144
+ /* @__PURE__ */ jsx(HoneyPot, { register, variant })
145
+ ] }),
146
+ children,
147
+ /* @__PURE__ */ jsx("div", { className: disclosureForm({ variant }), children: disclosure }),
148
+ /* @__PURE__ */ jsx("div", { className: actions, children: /* @__PURE__ */ jsx(
149
+ Button,
150
+ {
151
+ color: getVariant(callToAction?.variant),
152
+ as: "button",
153
+ type: "submit",
154
+ disabled: !isValid || isSubmitting,
155
+ children: callToAction?.displayText
156
+ }
157
+ ) })
158
+ ]
159
+ }
160
+ )
161
+ ] }) }) }, id);
162
+ };
163
+ export {
164
+ NameAndEmail
165
+ };