@axos-web-dev/shared-components 1.0.18 → 1.0.20

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 (97) hide show
  1. package/dist/ATMLocator/ATMLocator.js +15 -13
  2. package/dist/Accordion/Accordion.js +1 -1
  3. package/dist/Button/Button.js +2 -0
  4. package/dist/Calculators/AxosOneCalculator/index.js +1 -1
  5. package/dist/Calculators/BalanceAPYCalculator/index.js +1 -1
  6. package/dist/Calculators/BuyDownCalculator/BuyDownCalculator.css.d.ts +101 -0
  7. package/dist/Calculators/BuyDownCalculator/BuyDownCalculator.css.js +56 -0
  8. package/dist/Calculators/BuyDownCalculator/index.d.ts +25 -0
  9. package/dist/Calculators/BuyDownCalculator/index.js +868 -0
  10. package/dist/Calculators/Calculator.js +11 -0
  11. package/dist/Calculators/MarginTradingCalculator/index.js +2 -2
  12. package/dist/Calculators/SummitApyCalculator/index.js +1 -1
  13. package/dist/Calculators/index.d.ts +1 -0
  14. package/dist/Calculators/index.js +2 -0
  15. package/dist/CallToActionBar/index.js +1 -1
  16. package/dist/Carousel/index.js +3 -1
  17. package/dist/Chevron/index.js +3 -1
  18. package/dist/Comparison/Comparison.js +3 -1
  19. package/dist/Comparison/ComparisonSet.js +1 -1
  20. package/dist/ExecutiveBio/ExecutiveBio.js +2 -0
  21. package/dist/FaqAccordion/index.js +3 -1
  22. package/dist/FooterDisclosure/LVF/LaVictorieFooter.js +1 -1
  23. package/dist/FooterSiteMap/AxosBank/FooterSiteMap.js +2 -0
  24. package/dist/Forms/ApplicationStart.js +1 -1
  25. package/dist/Forms/ApplyNow.js +3 -1
  26. package/dist/Forms/ClearingForm.js +1 -1
  27. package/dist/Forms/CommercialDeposits.js +1 -1
  28. package/dist/Forms/CommercialLending.js +1 -1
  29. package/dist/Forms/ContactCompany.js +1 -1
  30. package/dist/Forms/ContactCompanyTitle.js +1 -1
  31. package/dist/Forms/ContactUs.js +1 -1
  32. package/dist/Forms/ContactUsAAS.js +1 -1
  33. package/dist/Forms/ContactUsBusiness.js +3 -1
  34. package/dist/Forms/ContactUsLVF.js +1 -1
  35. package/dist/Forms/ContactUsNMLSId.js +3 -1
  36. package/dist/Forms/CpraRequest.js +1 -1
  37. package/dist/Forms/CraPublicFile.js +3 -1
  38. package/dist/Forms/DealerServices.js +1 -1
  39. package/dist/Forms/EmailOnly.js +3 -1
  40. package/dist/Forms/EmailUs.js +1 -1
  41. package/dist/Forms/FormEnums.d.ts +21 -0
  42. package/dist/Forms/FormEnums.js +187 -0
  43. package/dist/Forms/MortgageRate/MortgageRateForm.js +3 -1
  44. package/dist/Forms/MortgageRate/MortgageRateQuoteFilters.js +1 -1
  45. package/dist/Forms/MortgageRate/MortgageRateWatch.js +2 -0
  46. package/dist/Forms/QuickPricer/QuickPricerForm.js +2 -2
  47. package/dist/Forms/ScheduleCall.js +1 -1
  48. package/dist/Forms/ScheduleCallPremier.js +1 -1
  49. package/dist/Forms/SuccesForm.js +15 -13
  50. package/dist/Forms/VendorQuestionnaire.js +1 -1
  51. package/dist/Forms/WcplSurvey.js +1 -1
  52. package/dist/HeroBanner/HeroBanner.js +1 -1
  53. package/dist/Hyperlink/index.js +2 -0
  54. package/dist/IconBillboard/IconBillboard.js +1 -1
  55. package/dist/ImageBillboard/ExitIntentModal/ModalWrapper.d.ts +9 -0
  56. package/dist/ImageBillboard/ExitIntentModal/ModalWrapper.js +85 -0
  57. package/dist/ImageBillboard/ExitIntentModal/useExitIntentModal.d.ts +5 -0
  58. package/dist/ImageBillboard/ExitIntentModal/useExitIntentModal.js +90 -0
  59. package/dist/ImageBillboard/ImageBillboard.css.d.ts +3 -0
  60. package/dist/ImageBillboard/ImageBillboard.css.js +6 -0
  61. package/dist/ImageBillboard/ImageBillboard.interface.d.ts +1 -0
  62. package/dist/ImageBillboard/ImageBillboardSet.d.ts +1 -1
  63. package/dist/ImageBillboard/ImageBillboardSet.js +24 -6
  64. package/dist/ImageBillboard/index.js +4 -1
  65. package/dist/ImageLink/ImageLink.js +2 -0
  66. package/dist/ImageLink/ImageLinkSet.js +2 -0
  67. package/dist/ImageLink/index.js +2 -0
  68. package/dist/Input/Checkbox.js +2 -1
  69. package/dist/Input/Input.js +2 -1
  70. package/dist/Input/PercentageInput.d.ts +3 -0
  71. package/dist/Input/PercentageInput.js +32 -0
  72. package/dist/Input/RadioButton.js +12 -3
  73. package/dist/Insight/Featured/CategorySelector.js +4 -2
  74. package/dist/Insight/Featured/Featured.js +3 -1
  75. package/dist/Insight/Featured/Header.js +3 -1
  76. package/dist/Modal/Modal.js +2 -0
  77. package/dist/Modal/contextApi/store.js +1 -1
  78. package/dist/NavigationMenu/AxosALTS/NavData.js +2 -0
  79. package/dist/NavigationMenu/AxosALTS/index.js +2 -0
  80. package/dist/NavigationMenu/AxosBank/NavData.js +2 -0
  81. package/dist/NavigationMenu/AxosBank/SubNavBar.js +2 -0
  82. package/dist/NavigationMenu/AxosBank/index.js +2 -0
  83. package/dist/NavigationMenu/LaVictoire/NavData.js +2 -0
  84. package/dist/NavigationMenu/LaVictoire/index.js +2 -0
  85. package/dist/PageNavSet/PageNavSet.js +1 -1
  86. package/dist/Pagination/Pagination.js +1 -1
  87. package/dist/SecondaryFooter/index.js +1 -1
  88. package/dist/SetContainer/SetContainer.js +3 -1
  89. package/dist/SocialMediaBar/iconsRepository.js +2 -0
  90. package/dist/Table/Table.js +1 -1
  91. package/dist/TextBlock/TextBlock.js +1 -1
  92. package/dist/VideoWrapper/index.js +2 -0
  93. package/dist/assets/Calculators/BuyDownCalculator/BuyDownCalculator.css +197 -0
  94. package/dist/assets/ImageBillboard/ImageBillboard.css +106 -0
  95. package/dist/main.d.ts +1 -0
  96. package/dist/main.js +6 -1
  97. package/package.json +130 -130
@@ -155,23 +155,210 @@ const BrokerConpensation = [
155
155
  { value: "Borrower Paid", text: "Borrower Paid" },
156
156
  { value: "Lender Paid", text: "Lender Paid" }
157
157
  ];
158
+ const Program = [
159
+ { value: "3/6 SOFR ARM", text: "3/6 SOFR ARM" },
160
+ { value: "5/6 SOFR ARM", text: "5/6 SOFR ARM" },
161
+ { value: "20 Year Fixed - Personal Use/Limited Charter", text: "20 Year Fixed - Personal Use/Limited Charter" },
162
+ { value: "20 Year Fixed - Full Time Charter", text: "20 Year Fixed - Full Time Charter" }
163
+ ];
164
+ const Fico = [
165
+ { value: "800+", text: "800+" },
166
+ { value: "760-799", text: "760-799" },
167
+ { value: "720-759", text: "720-759" },
168
+ { value: "700-719", text: "700-719" }
169
+ ];
170
+ const BuydownRate = [
171
+ { value: 2.99, text: "2.99%" },
172
+ { value: 3.99, text: "3.99%" },
173
+ { value: 4.99, text: "4.99%" },
174
+ { value: 5.99, text: "5.99%" },
175
+ { value: 6.99, text: "6.99%" }
176
+ ];
177
+ const BuydownTerm = [
178
+ { value: 1, text: "1 Year" },
179
+ { value: 2, text: "2 Years" },
180
+ { value: 3, text: "3 Years" },
181
+ { value: 4, text: "4 Years" },
182
+ { value: 5, text: "5 Years" }
183
+ ];
184
+ const LoanRates = /* @__PURE__ */ new Map(
185
+ [
186
+ ["3/6 SOFR ARM", /* @__PURE__ */ new Map([
187
+ ["800+", /* @__PURE__ */ new Map([
188
+ ["$75,000 ≤ $100,000", "8.345%"],
189
+ ["$100,001 ≤ $150,000", "8.345%"],
190
+ ["$150,001 ≤ $250,000", "8.045%"],
191
+ ["$250,001 ≤ $500,000", "7.645%"],
192
+ ["$500,001 ≤ $1,500,000", "7.645%"],
193
+ ["$1,500,001 ≤ $2,000,000", "7.945%"],
194
+ ["> $2,000,000", "8.245%"]
195
+ ])],
196
+ ["760-799", /* @__PURE__ */ new Map([
197
+ ["$75,000 ≤ $100,000", "8.545%"],
198
+ ["$100,001 ≤ $150,000", "8.545%"],
199
+ ["$150,001 ≤ $250,000", "8.245%"],
200
+ ["$250,001 ≤ $500,000", "7.845%"],
201
+ ["$500,001 ≤ $1,500,000", "7.845%"],
202
+ ["$1,500,001 ≤ $2,000,000", "8.145%"],
203
+ ["> $2,000,000", "8.445%"]
204
+ ])],
205
+ ["720-759", /* @__PURE__ */ new Map([
206
+ ["$75,000 ≤ $100,000", "8.995%"],
207
+ ["$100,001 ≤ $150,000", "8.995%"],
208
+ ["$150,001 ≤ $250,000", "8.320%"],
209
+ ["$250,001 ≤ $500,000", "8.295%"],
210
+ ["$500,001 ≤ $1,500,000", "8.295%"],
211
+ ["$1,500,001 ≤ $2,000,000", "8.595%"],
212
+ ["> $2,000,000", "N/A"]
213
+ ])],
214
+ ["700-719", /* @__PURE__ */ new Map([
215
+ ["$75,000 ≤ $100,000", "9.345%"],
216
+ ["$100,001 ≤ $150,000", "9.345%"],
217
+ ["$150,001 ≤ $250,000", "8.820%"],
218
+ ["$250,001 ≤ $500,000", "8.645%"],
219
+ ["$500,001 ≤ $1,500,000", "8.645%"],
220
+ ["$1,500,001 ≤ $2,000,000", "N/A"],
221
+ ["> $2,000,000", "N/A"]
222
+ ])]
223
+ ])],
224
+ ["5/6 SOFR ARM", /* @__PURE__ */ new Map([
225
+ ["800+", /* @__PURE__ */ new Map([
226
+ ["$75,000 ≤ $100,000", "8.495%"],
227
+ ["$100,001 ≤ $150,000", "8.495%"],
228
+ ["$150,001 ≤ $250,000", "8.195%"],
229
+ ["$250,001 ≤ $500,000", "7.795%"],
230
+ ["$500,001 ≤ $1,500,000", "7.795%"],
231
+ ["$1,500,001 ≤ $2,000,000", "8.095%"],
232
+ ["> $2,000,000", "8.395%"]
233
+ ])],
234
+ ["760-799", /* @__PURE__ */ new Map([
235
+ ["$75,000 ≤ $100,000", "8.695%"],
236
+ ["$100,001 ≤ $150,000", "8.695%"],
237
+ ["$150,001 ≤ $250,000", "8.395%"],
238
+ ["$250,001 ≤ $500,000", "7.995%"],
239
+ ["$500,001 ≤ $1,500,000", "7.995%"],
240
+ ["$1,500,001 ≤ $2,000,000", "8.295%"],
241
+ ["> $2,000,000", "8.595%"]
242
+ ])],
243
+ ["720-759", /* @__PURE__ */ new Map([
244
+ ["$75,000 ≤ $100,000", "9.145%"],
245
+ ["$100,001 ≤ $150,000", "9.145%"],
246
+ ["$150,001 ≤ $250,000", "8.470%"],
247
+ ["$250,001 ≤ $500,000", "8.445%"],
248
+ ["$500,001 ≤ $1,500,000", "8.445%"],
249
+ ["$1,500,001 ≤ $2,000,000", "8.745%"],
250
+ ["> $2,000,000", "N/A"]
251
+ ])],
252
+ ["700-719", /* @__PURE__ */ new Map([
253
+ ["$75,000 ≤ $100,000", "9.495%"],
254
+ ["$100,001 ≤ $150,000", "9.495%"],
255
+ ["$150,001 ≤ $250,000", "8.970%"],
256
+ ["$250,001 ≤ $500,000", "8.795%"],
257
+ ["$500,001 ≤ $1,500,000", "8.795%"],
258
+ ["$1,500,001 ≤ $2,000,000", "N/A"],
259
+ ["> $2,000,000", "N/A"]
260
+ ])]
261
+ ])],
262
+ ["20 Year Fixed - Personal Use/Limited Charter", /* @__PURE__ */ new Map([
263
+ ["800+", /* @__PURE__ */ new Map([
264
+ ["$75,000 ≤ $100,000", "8.240%"],
265
+ ["$100,001 ≤ $150,000", "8.240%"],
266
+ ["$150,001 ≤ $250,000", "7.590%"],
267
+ ["$250,001 ≤ $500,000", "7.290%"],
268
+ ["$500,001 ≤ $1,500,000", "7.090%"],
269
+ ["$1,500,001 ≤ $2,000,000", "7.290%"],
270
+ ["> $2,000,000", "7.540%"]
271
+ ])],
272
+ ["760-799", /* @__PURE__ */ new Map([
273
+ ["$75,000 ≤ $100,000", "8.490%"],
274
+ ["$100,001 ≤ $150,000", "8.490%"],
275
+ ["$150,001 ≤ $250,000", "7.990%"],
276
+ ["$250,001 ≤ $500,000", "7.690%"],
277
+ ["$500,001 ≤ $1,500,000", "7.490%"],
278
+ ["$1,500,001 ≤ $2,000,000", "7.790%"],
279
+ ["> $2,000,000", "8.040%"]
280
+ ])],
281
+ ["720-759", /* @__PURE__ */ new Map([
282
+ ["$75,000 ≤ $100,000", "8.740%"],
283
+ ["$100,001 ≤ $150,000", "8.740%"],
284
+ ["$150,001 ≤ $250,000", "8.490%"],
285
+ ["$250,001 ≤ $500,000", "8.190%"],
286
+ ["$500,001 ≤ $1,500,000", "7.990%"],
287
+ ["$1,500,001 ≤ $2,000,000", "8.390%"],
288
+ ["> $2,000,000", "N/A"]
289
+ ])],
290
+ ["700-719", /* @__PURE__ */ new Map([
291
+ ["$75,000 ≤ $100,000", "9.240%"],
292
+ ["$100,001 ≤ $150,000", "9.240%"],
293
+ ["$150,001 ≤ $250,000", "8.990%"],
294
+ ["$250,001 ≤ $500,000", "8.990%"],
295
+ ["$500,001 ≤ $1,500,000", "8.490%"],
296
+ ["$1,500,001 ≤ $2,000,000", "N/A"],
297
+ ["> $2,000,000", "N/A"]
298
+ ])]
299
+ ])],
300
+ ["20 Year Fixed - Full Time Charter", /* @__PURE__ */ new Map([
301
+ ["800+", /* @__PURE__ */ new Map([
302
+ ["$75,000 ≤ $100,000", "8.740%"],
303
+ ["$100,001 ≤ $150,000", "8.740%"],
304
+ ["$150,001 ≤ $250,000", "8.090%"],
305
+ ["$250,001 ≤ $500,000", "7.790%"],
306
+ ["$500,001 ≤ $1,500,000", "7.690%"],
307
+ ["$1,500,001 ≤ $2,000,000", "7.690%"],
308
+ ["> $2,000,000", "8.840%"]
309
+ ])],
310
+ ["760-799", /* @__PURE__ */ new Map([
311
+ ["$75,000 ≤ $100,000", "8.990%"],
312
+ ["$100,001 ≤ $150,000", "8.990%"],
313
+ ["$150,001 ≤ $250,000", "8.490%"],
314
+ ["$250,001 ≤ $500,000", "8.240%"],
315
+ ["$500,001 ≤ $1,500,000", "7.990%"],
316
+ ["$1,500,001 ≤ $2,000,000", "7.990%"],
317
+ ["> $2,000,000", "8.540%"]
318
+ ])],
319
+ ["720-759", /* @__PURE__ */ new Map([
320
+ ["$75,000 ≤ $100,000", "9.240%"],
321
+ ["$100,001 ≤ $150,000", "9.240%"],
322
+ ["$150,001 ≤ $250,000", "8.990%"],
323
+ ["$250,001 ≤ $500,000", "8.990%"],
324
+ ["$500,001 ≤ $1,500,000", "8.490%"],
325
+ ["$1,500,001 ≤ $2,000,000", "8.875%"],
326
+ ["> $2,000,000", "N/A"]
327
+ ])],
328
+ ["700-719", /* @__PURE__ */ new Map([
329
+ ["$75,000 ≤ $100,000", "9.740%"],
330
+ ["$100,001 ≤ $150,000", "9.740%"],
331
+ ["$150,001 ≤ $250,000", "9.490%"],
332
+ ["$250,001 ≤ $500,000", "9.490%"],
333
+ ["$500,001 ≤ $1,500,000", "8.990%"],
334
+ ["$1,500,001 ≤ $2,000,000", "N/A"],
335
+ ["> $2,000,000", "N/A"]
336
+ ])]
337
+ ])]
338
+ ]
339
+ );
158
340
  export {
159
341
  AnnualGrossRevenue,
160
342
  AssetClass,
161
343
  BankruptcySeasoning,
162
344
  BankruptcyType,
163
345
  BrokerConpensation,
346
+ BuydownRate,
347
+ BuydownTerm,
164
348
  Citizenship,
165
349
  CurrentAssets,
166
350
  DocType,
351
+ Fico,
167
352
  HousingEventHistory,
168
353
  HousingEventType,
169
354
  LeadType,
355
+ LoanRates,
170
356
  MortgageLates12,
171
357
  MortgageLates24,
172
358
  NumberOfUnits,
173
359
  Occupancy,
174
360
  PrepaymentPenalty,
361
+ Program,
175
362
  PropertyType,
176
363
  PurposeOfLoan,
177
364
  Purposes,
@@ -43,7 +43,7 @@ import { DownPaymentInput } from "../../Input/DownPaymentInput.js";
43
43
  import "../../Input/RadioButton.js";
44
44
  import { useForm, FormProvider } from "react-hook-form";
45
45
  import * as z from "zod";
46
- import { formContainer, iconForm, headerContainer, headerForm, form, descriptionField, fullRowSelect, formWrapper, centerSelect, mt2rem, fullRowForm, disclosureForm, actions, formBtns, na_cursor } from "../Forms.css.js";
46
+ import { iconForm, headerForm, form, descriptionField, headerContainer, fullRowSelect, formWrapper, centerSelect, mt2rem, fullRowForm, disclosureForm, actions, formBtns, na_cursor, formContainer } from "../Forms.css.js";
47
47
  import { SalesforceSchema } from "../SalesforceFieldsForm.js";
48
48
  import "../../Input/RadioButton.css.js";
49
49
  import "../../Input/Checkbox.css.js";
@@ -60,6 +60,8 @@ import "iframe-resizer";
60
60
  import "../../Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
61
61
  import "../../Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css.js";
62
62
  import "../../Calculators/SummitApyCalculator/BalanceAPYCalculator.css.js";
63
+ import "../../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
64
+ import "../../Input/PercentageInput.js";
63
65
  /* empty css */
64
66
  /* empty css */
65
67
  /* empty css */
@@ -19,7 +19,7 @@ import "../../Input/RadioButton.js";
19
19
  import clsx from "clsx";
20
20
  import { useForm, FormProvider } from "react-hook-form";
21
21
  import * as z from "zod";
22
- import { formContainer, headerContainer, headerForm, form, formWrapper, fullRowForm, actions } from "../Forms.css.js";
22
+ import { headerForm, headerContainer, form, fullRowForm, formWrapper, actions, formContainer } from "../Forms.css.js";
23
23
  import { SalesforceSchema } from "../SalesforceFieldsForm.js";
24
24
  import { LoadingIndicator } from "../../LoadingIndicator/index.js";
25
25
  const MortgageRateFilters = ({
@@ -57,6 +57,8 @@ import "iframe-resizer";
57
57
  import "../../Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
58
58
  import "../../Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css.js";
59
59
  import "../../Calculators/SummitApyCalculator/BalanceAPYCalculator.css.js";
60
+ import "../../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
61
+ import "../../Input/PercentageInput.js";
60
62
  /* empty css */
61
63
  /* empty css */
62
64
  /* empty css */
@@ -32,8 +32,8 @@ import { format } from "@react-input/number-format";
32
32
  import clsx from "clsx";
33
33
  import { useForm, FormProvider } from "react-hook-form";
34
34
  import * as z from "zod";
35
- import { Purposes, RepresentativesFico, DocType, Citizenship, MortgageLates12, MortgageLates24, HousingEventType, HousingEventHistory, BankruptcyType, BankruptcySeasoning, PropertyType, Occupancy, NumberOfUnits, PrepaymentPenalty, BrokerConpensation } from "../FormEnums.js";
36
- import { formContainer, iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, one_row, section_title, checkbox_group, disclosureForm, actions } from "../Forms.css.js";
35
+ import { BrokerConpensation, PrepaymentPenalty, NumberOfUnits, Occupancy, PropertyType, BankruptcySeasoning, BankruptcyType, HousingEventHistory, HousingEventType, MortgageLates24, MortgageLates12, Citizenship, DocType, RepresentativesFico, Purposes } from "../FormEnums.js";
36
+ import { iconForm, headerContainer, headerForm, form, descriptionField, one_row, section_title, checkbox_group, formWrapper, disclosureForm, actions, formContainer } from "../Forms.css.js";
37
37
  import { SalesforceSchema } from "../SalesforceFieldsForm.js";
38
38
  const QuickPricer = ({
39
39
  icon = false,
@@ -31,7 +31,7 @@ import { getVariant } from "../utils/getVariant.js";
31
31
  import clsx from "clsx";
32
32
  import { useForm, FormProvider } from "react-hook-form";
33
33
  import * as z from "zod";
34
- import { formContainer, iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions } from "./Forms.css.js";
34
+ import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
35
35
  import { SalesforceSchema } from "./SalesforceFieldsForm.js";
36
36
  const ScheduleCall = ({
37
37
  icon = false,
@@ -32,7 +32,7 @@ import { getVariant } from "../utils/getVariant.js";
32
32
  import clsx from "clsx";
33
33
  import { useForm, FormProvider } from "react-hook-form";
34
34
  import * as z from "zod";
35
- import { formContainer, iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, fullRowForm, disclosureForm, actions } from "./Forms.css.js";
35
+ import { iconForm, headerContainer, headerForm, form, descriptionField, fullRowForm, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
36
36
  import { SalesforceSchema } from "./SalesforceFieldsForm.js";
37
37
  const ScheduleCallPremier = ({
38
38
  icon = false,
@@ -31,6 +31,20 @@ import "iframe-resizer";
31
31
  import "../Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
32
32
  import "../Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css.js";
33
33
  import "../Calculators/SummitApyCalculator/BalanceAPYCalculator.css.js";
34
+ import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
35
+ import "../Input/Checkbox.js";
36
+ import "../Input/CurrencyInput.js";
37
+ import "../Input/Dropdown.js";
38
+ import "../Input/Dropdown.css.js";
39
+ import "../Input/Input.js";
40
+ import "../Input/Input.css.js";
41
+ import "../Input/InputAmount.js";
42
+ import "../Input/InputPhone.js";
43
+ import "../Input/InputTextArea.js";
44
+ import "../Input/DownPaymentInput.js";
45
+ import "../Input/RadioButton.js";
46
+ import "react-hook-form";
47
+ import "../Input/PercentageInput.js";
34
48
  /* empty css */
35
49
  /* empty css */
36
50
  /* empty css */
@@ -54,17 +68,6 @@ import "../FooterDisclosure/FooterDisclosure.css.js";
54
68
  /* empty css */
55
69
  import "../ImageBillboard/ImageBillboard.css.js";
56
70
  /* empty css */
57
- import "../Input/Checkbox.js";
58
- import "../Input/CurrencyInput.js";
59
- import "../Input/Dropdown.js";
60
- import "../Input/Dropdown.css.js";
61
- import "../Input/Input.js";
62
- import "../Input/Input.css.js";
63
- import "../Input/InputAmount.js";
64
- import "../Input/InputPhone.js";
65
- import "../Input/InputTextArea.js";
66
- import "../Input/DownPaymentInput.js";
67
- import "../Input/RadioButton.js";
68
71
  /* empty css */
69
72
  /* empty css */
70
73
  /* empty css */
@@ -104,8 +107,7 @@ import "next/script.js";
104
107
  /* empty css */
105
108
  /* empty css */
106
109
  import "../Interstitial/Interstitial-variants.css.js";
107
- import "react-hook-form";
108
- import { success_wrap, success_icon, success_circle, succes_check_mark } from "./Forms.css.js";
110
+ import { success_icon, success_circle, succes_check_mark, success_wrap } from "./Forms.css.js";
109
111
  import "./SalesforceFieldsForm.js";
110
112
  import "../Input/RadioButton.css.js";
111
113
  import "../Input/Checkbox.css.js";
@@ -21,7 +21,7 @@ import { getVariant } from "../utils/getVariant.js";
21
21
  import clsx from "clsx";
22
22
  import { useForm, FormProvider } from "react-hook-form";
23
23
  import { z } from "zod";
24
- import { formContainer, form, formWrapper, form_row, descriptionField, actions } from "./Forms.css.js";
24
+ import { form, form_row, descriptionField, formWrapper, actions, formContainer } from "./Forms.css.js";
25
25
  const VendorQuestionnaire = ({
26
26
  children,
27
27
  onSubmit = (values) => {
@@ -30,7 +30,7 @@ import { getVariant } from "../utils/getVariant.js";
30
30
  import clsx from "clsx";
31
31
  import { useForm, FormProvider } from "react-hook-form";
32
32
  import * as z from "zod";
33
- import { formContainer, iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions } from "./Forms.css.js";
33
+ import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
34
34
  import { SalesforceSchema } from "./SalesforceFieldsForm.js";
35
35
  const WCPLSurvey = ({
36
36
  icon = false,
@@ -9,7 +9,7 @@ import Image from "next/image.js";
9
9
  import clsx from "clsx";
10
10
  import { logout, hero_banner, hero_wrapper, hero_content, reversed, hero_text, heroSupertag, headline_text, hero_btns, hero_img, img_contents, reversed_lg_image } from "./HeroBanner.css.js";
11
11
  import { lg_hero_banner, lg_hero_content, lg_hero_text, lg_hero_eyebrow, lg_headline_text, lg_hero_img, lg_hero_sizing } from "./LargeBanner.css.js";
12
- import { selection_section_icon, selection_section_icon_img, selection_section, selection_section_bg, selection_section_content, selection_headline_text } from "./SelectionBanner.css.js";
12
+ import { selection_section_icon_img, selection_section_icon, selection_section, selection_section_bg, selection_section_content, selection_headline_text } from "./SelectionBanner.css.js";
13
13
  const HeroBanner = ({
14
14
  id,
15
15
  eyebrow,
@@ -57,6 +57,8 @@ import "iframe-resizer";
57
57
  import "../Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
58
58
  import "../Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css.js";
59
59
  import "../Calculators/SummitApyCalculator/BalanceAPYCalculator.css.js";
60
+ import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
61
+ import "../Input/PercentageInput.js";
60
62
  /* empty css */
61
63
  /* empty css */
62
64
  /* empty css */
@@ -7,7 +7,7 @@ import { Button } from "../Button/Button.js";
7
7
  import "../Button/Button.css.js";
8
8
  import "react";
9
9
  import "react-use";
10
- import { billboard_icon, containerIconBillboard, layout, content, headerIconBillboard, title, list, buttons } from "./IconBillboard.css.js";
10
+ import { billboard_icon, layout, headerIconBillboard, title, list, content, buttons, containerIconBillboard } from "./IconBillboard.css.js";
11
11
  const Icon = ({ children }) => /* @__PURE__ */ jsx("div", { className: billboard_icon, role: "presentation", children });
12
12
  const IconBillboard = (props) => {
13
13
  const {
@@ -0,0 +1,9 @@
1
+ import { default as React, ReactNode } from 'react';
2
+
3
+ interface ModalWrapperProps {
4
+ children: ReactNode;
5
+ onClose: () => void;
6
+ modalRef: React.RefObject<HTMLDivElement>;
7
+ }
8
+ export declare const ModalWrapper: ({ children, onClose, modalRef, }: ModalWrapperProps) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useRef, useEffect } from "react";
4
+ import { exit_intent_backdrop, exit_intent, modal_close_button } from "../ImageBillboard.css.js";
5
+ const ModalWrapper = ({
6
+ children,
7
+ onClose,
8
+ modalRef
9
+ }) => {
10
+ const wrapperRef = useRef(null);
11
+ useEffect(() => {
12
+ const originalOverflow = document.body.style.overflow;
13
+ document.body.style.overflow = "hidden";
14
+ return () => {
15
+ document.body.style.overflow = originalOverflow;
16
+ };
17
+ }, []);
18
+ useEffect(() => {
19
+ const focusableSelectors = [
20
+ "a[href]",
21
+ "button:not([disabled])",
22
+ '[tabindex]:not([tabindex="-1"])'
23
+ ];
24
+ const trapFocus = (e) => {
25
+ if (e.key !== "Tab") return;
26
+ const focusableEls = modalRef.current?.querySelectorAll(
27
+ focusableSelectors.join(",")
28
+ );
29
+ if (!focusableEls || focusableEls.length === 0) return;
30
+ const first = focusableEls[0];
31
+ const last = focusableEls[focusableEls.length - 1];
32
+ if (e.shiftKey && document.activeElement === first) {
33
+ e.preventDefault();
34
+ last.focus();
35
+ } else if (!e.shiftKey && document.activeElement === last) {
36
+ e.preventDefault();
37
+ first.focus();
38
+ }
39
+ };
40
+ const focusFirst = () => {
41
+ const focusableEls = modalRef.current?.querySelectorAll(
42
+ focusableSelectors.join(",")
43
+ );
44
+ focusableEls?.[0]?.focus();
45
+ };
46
+ focusFirst();
47
+ document.addEventListener("keydown", trapFocus);
48
+ document.addEventListener("keydown", handleEscape);
49
+ return () => {
50
+ document.removeEventListener("keydown", trapFocus);
51
+ document.removeEventListener("keydown", handleEscape);
52
+ };
53
+ }, [modalRef]);
54
+ const handleEscape = (e) => {
55
+ if (e.key === "Escape") {
56
+ onClose();
57
+ }
58
+ };
59
+ return /* @__PURE__ */ jsx("div", { className: exit_intent_backdrop, role: "presentation", children: /* @__PURE__ */ jsxs(
60
+ "div",
61
+ {
62
+ className: exit_intent,
63
+ ref: modalRef,
64
+ role: "dialog",
65
+ "aria-modal": "true",
66
+ "aria-labelledby": "exit-intent-heading",
67
+ "aria-describedby": "exit-intent-description",
68
+ children: [
69
+ /* @__PURE__ */ jsx(
70
+ "button",
71
+ {
72
+ "aria-label": "Close modal",
73
+ className: modal_close_button,
74
+ onClick: onClose,
75
+ children: "Close"
76
+ }
77
+ ),
78
+ /* @__PURE__ */ jsx("div", { ref: wrapperRef, children })
79
+ ]
80
+ }
81
+ ) });
82
+ };
83
+ export {
84
+ ModalWrapper
85
+ };
@@ -0,0 +1,5 @@
1
+ export declare const useExitIntentModal: (enabled: boolean) => {
2
+ isVisible: boolean;
3
+ close: () => void;
4
+ modalRef: import('react').MutableRefObject<HTMLDivElement | null>;
5
+ };
@@ -0,0 +1,90 @@
1
+ "use client";
2
+ import { useState, useRef, useEffect } from "react";
3
+ const useExitIntentModal = (enabled) => {
4
+ const [isVisible, setIsVisible] = useState(false);
5
+ const modalRef = useRef(null);
6
+ useEffect(() => {
7
+ if (!enabled) return;
8
+ const STORAGE_KEY = "exitIntentShown";
9
+ const sessionExpiry = 24 * 60 * 60 * 1e3;
10
+ const hasShown = () => {
11
+ const stored = localStorage.getItem(STORAGE_KEY);
12
+ if (!stored) return false;
13
+ const { timestamp } = JSON.parse(stored);
14
+ return Date.now() - timestamp < sessionExpiry;
15
+ };
16
+ const markShown = () => {
17
+ localStorage.setItem(
18
+ STORAGE_KEY,
19
+ JSON.stringify({ timestamp: Date.now() })
20
+ );
21
+ };
22
+ const showBanner = () => {
23
+ if (!hasShown()) {
24
+ setIsVisible(true);
25
+ markShown();
26
+ }
27
+ };
28
+ const handleMouseLeave = (e) => {
29
+ if (e.clientY <= 0) showBanner();
30
+ };
31
+ const handleScroll = () => {
32
+ const scrollY = window.scrollY;
33
+ const maxScroll = document.body.scrollHeight - window.innerHeight;
34
+ const percentScrolled = scrollY / maxScroll * 100;
35
+ if (percentScrolled > 60) {
36
+ window.addEventListener("scroll", detectScrollUp);
37
+ }
38
+ };
39
+ const detectScrollUp = () => {
40
+ if (window.scrollY < window.innerHeight * 0.25) {
41
+ showBanner();
42
+ window.removeEventListener("scroll", detectScrollUp);
43
+ }
44
+ };
45
+ let inactivityTimer;
46
+ const resetInactivity = () => {
47
+ clearTimeout(inactivityTimer);
48
+ inactivityTimer = setTimeout(() => {
49
+ showBanner();
50
+ }, 15e3);
51
+ };
52
+ const startListeners = () => {
53
+ document.addEventListener("mouseleave", handleMouseLeave);
54
+ window.addEventListener("scroll", handleScroll);
55
+ document.addEventListener("mousemove", resetInactivity);
56
+ document.addEventListener("keydown", resetInactivity);
57
+ };
58
+ const initTimeout = setTimeout(startListeners, 1e4);
59
+ resetInactivity();
60
+ return () => {
61
+ clearTimeout(initTimeout);
62
+ clearTimeout(inactivityTimer);
63
+ document.removeEventListener("mouseleave", handleMouseLeave);
64
+ window.removeEventListener("scroll", handleScroll);
65
+ document.removeEventListener("mousemove", resetInactivity);
66
+ document.removeEventListener("keydown", resetInactivity);
67
+ window.removeEventListener("scroll", detectScrollUp);
68
+ };
69
+ }, [enabled]);
70
+ useEffect(() => {
71
+ if (!isVisible) return;
72
+ const handleClickOutside = (e) => {
73
+ if (modalRef.current && !modalRef.current.contains(e.target)) {
74
+ setIsVisible(false);
75
+ }
76
+ };
77
+ document.addEventListener("mousedown", handleClickOutside);
78
+ return () => {
79
+ document.removeEventListener("mousedown", handleClickOutside);
80
+ };
81
+ }, [isVisible]);
82
+ return {
83
+ isVisible,
84
+ close: () => setIsVisible(false),
85
+ modalRef
86
+ };
87
+ };
88
+ export {
89
+ useExitIntentModal
90
+ };
@@ -163,3 +163,6 @@ export declare const rate_billboard: string;
163
163
  export declare const apy_billboard: string;
164
164
  export declare const body_copy: string;
165
165
  export declare const sub_bullets: string;
166
+ export declare const exit_intent_backdrop: string;
167
+ export declare const exit_intent: string;
168
+ export declare const modal_close_button: string;
@@ -29,6 +29,9 @@ var rate_billboard = "_1m7m2ay";
29
29
  var apy_billboard = "_1m7m2az";
30
30
  var body_copy = "_1m7m2a10";
31
31
  var sub_bullets = "_1m7m2a11";
32
+ var exit_intent_backdrop = "_1m7m2a12";
33
+ var exit_intent = "_1m7m2a13";
34
+ var modal_close_button = "_1m7m2a14";
32
35
  export {
33
36
  apy_billboard,
34
37
  billboard,
@@ -40,10 +43,13 @@ export {
40
43
  billboard_img,
41
44
  body,
42
45
  body_copy,
46
+ exit_intent,
47
+ exit_intent_backdrop,
43
48
  header,
44
49
  imagePlacement,
45
50
  image_background,
46
51
  mh_330,
52
+ modal_close_button,
47
53
  rate_billboard,
48
54
  rate_container,
49
55
  rate_pad,
@@ -31,4 +31,5 @@ export interface ImageBillboardInterface {
31
31
  textImageLineTwoBig?: ReactNode | string;
32
32
  textImageLineThreeSmall?: ReactNode | string;
33
33
  internalName?: string;
34
+ exitIntent?: boolean;
34
35
  }
@@ -1,3 +1,3 @@
1
1
  import { ImageBillboardInterface } from './ImageBillboard.interface';
2
2
 
3
- export declare const ImageBillboard: ({ id, variant, headline, bodyCopy, bordered, bullets, callToActionRow, eyebrow, image, imagePlacement: position, set, textImageLineOneSmall, textImageLineTwoBig, textImageLineThreeSmall, internalName, }: ImageBillboardInterface) => import("react/jsx-runtime").JSX.Element;
3
+ export declare const ImageBillboard: ({ id, variant, headline, bodyCopy, bordered, bullets, callToActionRow, eyebrow, image, imagePlacement: position, set, textImageLineOneSmall, textImageLineTwoBig, textImageLineThreeSmall, internalName, exitIntent, }: ImageBillboardInterface) => import("react/jsx-runtime").JSX.Element | null;