@axos-web-dev/shared-components 1.0.100-dev.3 → 1.0.100-dev.30
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.
- package/dist/ATMLocator/ATMLocator.js +3 -3
- package/dist/Article/Article.css.d.ts +9 -36
- package/dist/Article/Article.css.js +10 -8
- package/dist/Article/index.js +3 -2
- package/dist/ArticlesSet/ArticlesSet.css.d.ts +10 -70
- package/dist/ArticlesSet/ArticlesSet.js +1 -1
- package/dist/Auth/ErrorAlert.js +3 -3
- package/dist/Avatar/Avatar.module.js +7 -7
- package/dist/AwardsBanner/AwardsBanner.css.js +4 -1
- package/dist/AwardsItem/AwardsItem.css.js +1 -2
- package/dist/Blockquote/Blockquote.module.js +3 -3
- package/dist/Button/Button.css.d.ts +3 -3
- package/dist/Button/Button.js +3 -3
- package/dist/Calculators/ApyCalculator/ApyCalculator.css.d.ts +2 -30
- package/dist/Calculators/ApyCalculator/index.js +11 -5
- package/dist/Calculators/AxosOneCalculator/BalanceAPYCalculator.css.d.ts +1 -0
- package/dist/Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js +3 -1
- package/dist/Calculators/AxosOneCalculator/index.d.ts +3 -0
- package/dist/Calculators/AxosOneCalculator/index.js +48 -20
- package/dist/Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.d.ts +2 -30
- package/dist/Calculators/BuyDownCalculator/BuyDownCalculator.css.d.ts +0 -1
- package/dist/Calculators/BuyDownCalculator/BuyDownCalculator.css.js +2 -4
- package/dist/Calculators/BuyDownCalculator/index.d.ts +5 -1
- package/dist/Calculators/BuyDownCalculator/index.js +267 -141
- package/dist/Calculators/Calculator.d.ts +3 -0
- package/dist/Calculators/Calculator.js +10 -6
- package/dist/Calculators/calculator.css.d.ts +2 -8
- package/dist/CallToActionBar/CallToActionBar.css.d.ts +3 -1
- package/dist/CallToActionBar/CallToActionBar.css.js +22 -16
- package/dist/CallToActionBar/index.js +4 -3
- package/dist/Carousel/Carousel.css.d.ts +8 -19
- package/dist/Carousel/index.js +3 -3
- package/dist/Chatbot/Bubble.css.js +1 -0
- package/dist/Chatbot/Bubble.js +3 -3
- package/dist/Chatbot/ChatWindow.css.d.ts +4 -0
- package/dist/Chatbot/ChatWindow.css.js +8 -0
- package/dist/Chatbot/ChatWindow.d.ts +7 -0
- package/dist/Chatbot/ChatWindow.js +213 -24
- package/dist/Chatbot/Chatbot.css.js +0 -1
- package/dist/Chatbot/Chatbot.js +6 -3
- package/dist/Chatbot/EllipsisIcon.d.ts +4 -0
- package/dist/Chatbot/EllipsisIcon.js +19 -0
- package/dist/Chatbot/index.js +5 -1
- package/dist/Chatbot/store/messages.d.ts +1 -0
- package/dist/Chatbot/store/messages.js +2 -1
- package/dist/Chatbot/useHeadlessChat.d.ts +6 -1
- package/dist/Chatbot/useHeadlessChat.js +103 -20
- package/dist/Chevron/Chevron.css.d.ts +2 -2
- package/dist/Chevron/index.js +3 -3
- package/dist/CollectInformationAlert/index.js +1 -1
- package/dist/Comparison/Comparison.js +3 -3
- package/dist/Comparison/ComparisonSet.js +33 -24
- package/dist/ContentBanner/ContentBanner.css.js +2 -1
- package/dist/ExecutiveBio/ExecutiveBio.js +3 -3
- package/dist/FaqAccordion/index.js +3 -3
- package/dist/FooterSiteMap/AxosBank/FooterSiteMap.js +15 -8
- package/dist/Forms/ApplyNow.js +3 -3
- package/dist/Forms/CommercialDepositsNoLendingOption.d.ts +16 -0
- package/dist/Forms/CommercialDepositsNoLendingOption.js +330 -0
- package/dist/Forms/ContactUsBusiness.d.ts +1 -1
- package/dist/Forms/ContactUsBusiness.js +7 -7
- package/dist/Forms/ContactUsBusinessNameEmail.js +3 -3
- package/dist/Forms/ContactUsLVF.d.ts +5 -1
- package/dist/Forms/ContactUsLVF.js +8 -6
- package/dist/Forms/ContactUsNMLSId.js +3 -3
- package/dist/Forms/CraPublicFile.js +3 -3
- package/dist/Forms/EmailOnly.js +85 -65
- package/dist/Forms/FormEnums.js +6 -15
- package/dist/Forms/Forms.css.d.ts +8 -31
- package/dist/Forms/Forms.css.js +50 -44
- package/dist/Forms/MortgageRate/MortgageRateForm.js +23 -8
- package/dist/Forms/MortgageRate/MortgageRateWatch.js +3 -3
- package/dist/Forms/MortgageWarehouseLending.js +3 -3
- package/dist/Forms/QuickPricer/QuickPricerForm.js +1 -1
- package/dist/Forms/SalesforceFieldsForm.d.ts +5 -0
- package/dist/Forms/SalesforceFieldsForm.js +11 -1
- package/dist/Forms/SuccesForm.js +4 -4
- package/dist/Forms/index.d.ts +1 -0
- package/dist/Forms/index.js +6 -1
- package/dist/HeroBanner/HeroBanner.css.d.ts +5 -17
- package/dist/HeroBanner/HeroBanner.css.js +2 -1
- package/dist/HeroBanner/HeroBanner.js +2 -13
- package/dist/HeroBanner/SelectionBanner.css.d.ts +1 -19
- package/dist/HeroBanner/SelectionBanner.css.js +6 -6
- package/dist/Hyperlink/Hyperlink.css.d.ts +4 -4
- package/dist/Hyperlink/Hyperlink.css.js +4 -1
- package/dist/Hyperlink/index.js +3 -3
- package/dist/IconBillboard/IconBillboard.css.d.ts +6 -40
- package/dist/ImageBillboard/ImageBillboard.css.d.ts +5 -61
- package/dist/ImageBillboard/ImageBillboard.css.js +2 -1
- package/dist/ImageLink/ImageLink.js +3 -3
- package/dist/ImageLink/ImageLinkSet.js +3 -3
- package/dist/ImageLink/index.js +3 -3
- package/dist/Input/Dropdown.js +1 -0
- package/dist/Input/Input.css.d.ts +1 -0
- package/dist/Input/Input.css.js +10 -8
- package/dist/Input/index.js +2 -1
- package/dist/Insight/Featured/CategorySelector.js +3 -3
- package/dist/Insight/Featured/Featured.js +3 -3
- package/dist/Insight/Featured/Header.js +3 -3
- package/dist/Insight/Insight.css.d.ts +18 -0
- package/dist/Insight/Insight.css.js +44 -8
- package/dist/Insight/index.js +19 -1
- package/dist/LandingPageHeader/LandingPageHeader.css.d.ts +2 -0
- package/dist/LandingPageHeader/LandingPageHeader.css.js +6 -2
- package/dist/LandingPageHeader/LandingPageHeader.js +18 -9
- package/dist/LandingPageHeader/index.js +3 -1
- package/dist/LoadingIndicator/LoadingIndicator.css.d.ts +4 -4
- package/dist/Modal/Modal.css.d.ts +1 -0
- package/dist/Modal/Modal.css.js +5 -3
- package/dist/Modal/Modal.js +6 -6
- package/dist/NavigationMenu/AxosALTS/NavData.js +3 -3
- package/dist/NavigationMenu/AxosALTS/index.js +3 -3
- package/dist/NavigationMenu/AxosAdvisor/NavBar.css.d.ts +2 -0
- package/dist/NavigationMenu/AxosAdvisor/NavBar.css.js +7 -2
- package/dist/NavigationMenu/AxosAdvisor/NavBar.module.js +52 -52
- package/dist/NavigationMenu/AxosAdvisor/index.js +39 -21
- package/dist/NavigationMenu/AxosAdvisorServices/NavBar.css.d.ts +2 -0
- package/dist/NavigationMenu/AxosAdvisorServices/NavBar.css.js +7 -2
- package/dist/NavigationMenu/AxosAdvisorServices/NavBar.module.js +53 -53
- package/dist/NavigationMenu/AxosAdvisorServices/SubNavbar.css.d.ts +1 -1
- package/dist/NavigationMenu/AxosAdvisorServices/SubNavbar.css.js +2 -2
- package/dist/NavigationMenu/AxosAdvisorServices/index.js +14 -8
- package/dist/NavigationMenu/AxosBank/MobileMenu/MobileMenu.js +2 -2
- package/dist/NavigationMenu/AxosBank/MobileMenu/MobileMenu.module.js +16 -16
- package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.d.ts +5 -7
- package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.js +12 -14
- package/dist/NavigationMenu/AxosBank/NavBar.css.js +2 -1
- package/dist/NavigationMenu/AxosBank/NavBar.module.js +41 -41
- package/dist/NavigationMenu/AxosBank/NavData.js +3 -3
- package/dist/NavigationMenu/AxosBank/SubNavBar.js +274 -279
- package/dist/NavigationMenu/AxosBank/SubNavbar.css.d.ts +2 -0
- package/dist/NavigationMenu/AxosBank/SubNavbar.css.js +4 -0
- package/dist/NavigationMenu/AxosBank/index.js +3 -3
- package/dist/NavigationMenu/AxosClearing/NavBar.module.js +37 -37
- package/dist/NavigationMenu/AxosFiduciary/NavBar.module.js +41 -41
- package/dist/NavigationMenu/LaVictoire/NavData.js +3 -3
- package/dist/NavigationMenu/LaVictoire/index.js +3 -3
- package/dist/NavigationMenu/NavDataJson.js +3 -3
- package/dist/NavigationMenu/Navbar.js +3 -3
- package/dist/NavigationMenu/SignInNavButton.js +3 -3
- package/dist/PageNavItem/PageNavItem.css.d.ts +4 -22
- package/dist/Pagination/Pagination.js +6 -6
- package/dist/SetContainer/SetContainer.js +3 -3
- package/dist/SocialMediaBar/iconsRepository.js +3 -3
- package/dist/StepItem/StepItem.css.d.ts +8 -36
- package/dist/StepItemSet/StepItemSet.css.d.ts +5 -32
- package/dist/StepItemSet/StepItemSet.css.js +9 -5
- package/dist/StepItemSet/StepItemSet.d.ts +6 -0
- package/dist/StepItemSet/StepItemSet.js +22 -3
- package/dist/StepItemSet/index.js +2 -1
- package/dist/Table/Table.css.d.ts +4 -3
- package/dist/Table/Table.css.js +5 -5
- package/dist/Table/Table.js +1 -1
- package/dist/VideoTile/VideoTile.js +3 -3
- package/dist/VideoWrapper/index.js +3 -3
- package/dist/WalnutIframe/wrapper.module.js +3 -3
- package/dist/assets/Accordion/Accordion.css +2 -2
- package/dist/assets/Article/Article.css +87 -86
- package/dist/assets/ArticlesSet/ArticlesSet.css +26 -56
- package/dist/assets/Auth/SignIn.css +12 -12
- package/dist/assets/Avatar/Avatar.css.css +59 -59
- package/dist/assets/AwardsBanner/AwardsBanner.css +1 -1
- package/dist/assets/AwardsItem/AwardsItem.css +3 -4
- package/dist/assets/Blockquote/Blockquote.css.css +72 -68
- package/dist/assets/Button/Button.css +28 -28
- package/dist/assets/Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css +8 -8
- package/dist/assets/Calculators/ApyCalculator/ApyCalculator.css +12 -21
- package/dist/assets/Calculators/AxosOneCalculator/BalanceAPYCalculator.css +31 -11
- package/dist/assets/Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css +20 -32
- package/dist/assets/Calculators/BuyDownCalculator/BuyDownCalculator.css +15 -21
- package/dist/assets/Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css +9 -9
- package/dist/assets/Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css +9 -9
- package/dist/assets/Calculators/SummitApyCalculator/BalanceAPYCalculator.css +18 -10
- package/dist/assets/Calculators/calculator.css +9 -15
- package/dist/assets/CallToActionBar/CallToActionBar.css +95 -69
- package/dist/assets/Carousel/Carousel.css +27 -41
- package/dist/assets/Chatbot/ChatWindow.css +56 -0
- package/dist/assets/Chevron/Chevron.css +11 -10
- package/dist/assets/CollectInformationAlert/CollectInformationAlert.css +4 -3
- package/dist/assets/Comparison/Comparison.css +8 -5
- package/dist/assets/ContentBanner/ContentBanner.css +14 -8
- package/dist/assets/DownloadTile/DownloadTile.css +6 -6
- package/dist/assets/ExecutiveBio/ExecutiveBio.css +27 -27
- package/dist/assets/FaqAccordion/FaqAccordion.css +5 -5
- package/dist/assets/FooterDisclosure/FooterDisclosure.css +1 -1
- package/dist/assets/FooterSiteMap/AxosBank/FooterSiteMap.css +3 -8
- package/dist/assets/Forms/Forms.css +176 -165
- package/dist/assets/Forms/QuickPricer/UserInformation.css +1 -1
- package/dist/assets/HeroBanner/HeroBanner.css +85 -76
- package/dist/assets/HeroBanner/LargeBanner.css +15 -15
- package/dist/assets/HeroBanner/SelectionBanner.css +15 -29
- package/dist/assets/Hyperlink/Hyperlink.css +4 -4
- package/dist/assets/IconBillboard/IconBillboard.css +32 -48
- package/dist/assets/ImageBillboard/ImageBillboard.css +59 -63
- package/dist/assets/Input/Input.css +54 -47
- package/dist/assets/Inputs/Input.css +4 -4
- package/dist/assets/Insight/Featured/CategorySelector.css +1 -1
- package/dist/assets/Insight/Insight.css +212 -43
- package/dist/assets/Interstitial/Interstitial-variants.css +3 -3
- package/dist/assets/LandingPageHeader/LandingPageHeader.css +37 -4
- package/dist/assets/LoadingIndicator/LoadingIndicator.css +5 -5
- package/dist/assets/Modal/Modal.css +17 -28
- package/dist/assets/NavigationMenu/AxosALTS/NavBar.css +1 -1
- package/dist/assets/NavigationMenu/AxosAdvisor/NavBar.css +25 -2
- package/dist/assets/NavigationMenu/AxosAdvisor/NavBar.css.css +609 -597
- package/dist/assets/NavigationMenu/AxosAdvisor/SubNavbar.css +5 -4
- package/dist/assets/NavigationMenu/AxosAdvisorServices/NavBar.css +25 -2
- package/dist/assets/NavigationMenu/AxosAdvisorServices/NavBar.css.css +630 -618
- package/dist/assets/NavigationMenu/AxosAdvisorServices/SubNavbar.css +22 -4
- package/dist/assets/NavigationMenu/AxosBank/MobileMenu/MobileMenu.css.css +192 -191
- package/dist/assets/NavigationMenu/AxosBank/NavBar.css +21 -9
- package/dist/assets/NavigationMenu/AxosBank/NavBar.css.css +445 -473
- package/dist/assets/NavigationMenu/AxosBank/SubNavbar.css +35 -1
- package/dist/assets/NavigationMenu/AxosClearing/NavBar.css.css +484 -458
- package/dist/assets/NavigationMenu/AxosFiduciary/NavBar.css.css +427 -426
- package/dist/assets/PageNavItem/PageNavItem.css +16 -33
- package/dist/assets/Pagination/Pagination.css +1 -1
- package/dist/assets/SetContainer/SetContainer.css +4 -4
- package/dist/assets/StepItem/StepItem.css +26 -42
- package/dist/assets/StepItemSet/StepItemSet.css +40 -36
- package/dist/assets/Tab/Tab.css +12 -12
- package/dist/assets/Table/Table.css +87 -93
- package/dist/assets/TextBlock/TextBlock.css +1 -1
- package/dist/assets/TopicalNavItem/TopicalNavItem.css +2 -2
- package/dist/assets/TopicalNavSet/TopicalNavSet.css +1 -1
- package/dist/assets/VideoTile/VideoTile.css +1 -1
- package/dist/assets/WalnutIframe/wrapper.css.css +7 -8
- package/dist/assets/globals.css +11 -7
- package/dist/assets/icons/ArrowIcon/ArrowIcon.css +3 -3
- package/dist/assets/icons/DownloadIcon/DownloadIcon.css +1 -1
- package/dist/assets/icons/FollowIcon/FollowIcon.css +1 -1
- package/dist/assets/themes/axos.css +30 -30
- package/dist/assets/themes/premier.css +31 -31
- package/dist/assets/themes/victorie.css +23 -23
- package/dist/icons/CheckCircle.js +1 -1
- package/dist/icons/CheckCircleLight.js +1 -1
- package/dist/icons/CheckIcon/index.js +1 -1
- package/dist/icons/Clock/index.js +6 -6
- package/dist/icons/Logos/SPB.d.ts +4 -0
- package/dist/icons/Logos/SPB.js +132 -0
- package/dist/icons/QuoteIconGrey.js +2 -2
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.js +2 -0
- package/dist/main.js +55 -21
- package/dist/themes/axos.css.d.ts +12 -12
- package/dist/themes/axos.css.js +1 -1
- package/dist/utils/allowedAxosDomains.js +2 -1
- package/package.json +136 -136
|
@@ -3,7 +3,7 @@ import { jsxs, jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
4
4
|
import { Button } from "../../Button/Button.js";
|
|
5
5
|
import "../../Button/Button.css.js";
|
|
6
|
-
import { useState } from "react";
|
|
6
|
+
import { useState, useEffect } from "react";
|
|
7
7
|
import "react-use";
|
|
8
8
|
import { Program, Fico, BuydownRate, BuydownTerm, LoanRates } from "../../Forms/FormEnums.js";
|
|
9
9
|
import { Checkbox } from "../../Input/Checkbox.js";
|
|
@@ -16,14 +16,14 @@ import "../../Input/InputAmount.js";
|
|
|
16
16
|
import "../../Input/InputPhone.js";
|
|
17
17
|
import "../../Input/InputTextArea.js";
|
|
18
18
|
import "../../Input/DownPaymentInput.js";
|
|
19
|
-
import
|
|
19
|
+
import "../../Input/RadioButton.js";
|
|
20
20
|
import { PercentageInput } from "../../Input/PercentageInput.js";
|
|
21
21
|
import "../../utils/allowedAxosDomains.js";
|
|
22
22
|
import { getVariant } from "../../utils/getVariant.js";
|
|
23
23
|
import clsx from "clsx";
|
|
24
24
|
import { useForm, FormProvider } from "react-hook-form";
|
|
25
25
|
import { z } from "zod";
|
|
26
|
-
import { calc_container, calculator_section, section_header, theme_header, mt_8, buydown_calculator_form, row_form,
|
|
26
|
+
import { calc_container, calculator_section, section_header, theme_header, mt_8, buydown_calculator_form, row_form, calculate_row, form_wrapper, form_disclosure } from "./BuyDownCalculator.css.js";
|
|
27
27
|
const BuyDownCalculator = ({
|
|
28
28
|
header,
|
|
29
29
|
body,
|
|
@@ -39,14 +39,18 @@ const BuyDownCalculator = ({
|
|
|
39
39
|
const [finalNoteRate, setFinalNoteRate] = useState("");
|
|
40
40
|
const [manuContributionPercentage, setManuContributionPercentage] = useState("");
|
|
41
41
|
const [buydownPayment, setBuydownPayment] = useState("");
|
|
42
|
-
const [manuContributionAmount, setManuContributionAmount] = useState("");
|
|
43
42
|
const [nonBuydownPayment, setNonBuydownPayment] = useState("");
|
|
44
43
|
const [totalBuydownCost, setTotalBuydownCost] = useState("");
|
|
45
44
|
const [monthlySavings, setMonthlySavings] = useState("");
|
|
46
45
|
const [dealerContributionAmount, setDealerContributionAmount] = useState("");
|
|
47
46
|
const [enableFullTimeCharter, setEnableFullTimeCharter] = useState(false);
|
|
48
47
|
const [disableMooringOutside, setDisableMooringOutside] = useState(false);
|
|
49
|
-
const [
|
|
48
|
+
const [isDealerContributionDisabled, setIsDealerContributionDisabled] = useState(false);
|
|
49
|
+
const [
|
|
50
|
+
isManufacturerContributionDisabled,
|
|
51
|
+
setIsManufacturerContributionDisabled
|
|
52
|
+
] = useState(false);
|
|
53
|
+
const [ltvDiscountApplied, setLtvDiscountApplied] = useState(false);
|
|
50
54
|
const schema = z.object({
|
|
51
55
|
purchasePrice: z.string().min(1, { message: "Loan amount is required." }).transform((val) => {
|
|
52
56
|
return formatToNumber(val);
|
|
@@ -54,8 +58,13 @@ const BuyDownCalculator = ({
|
|
|
54
58
|
downpayment: z.string().min(1, { message: "Down Payment is required." }).transform((val) => {
|
|
55
59
|
return formatToNumber(val);
|
|
56
60
|
}),
|
|
57
|
-
dealerContribution: z.string()
|
|
58
|
-
|
|
61
|
+
dealerContribution: z.union([z.string(), z.number()]).optional().transform((val) => {
|
|
62
|
+
if (typeof val === "number") return val;
|
|
63
|
+
return val ? formatToNumber(val) : 0;
|
|
64
|
+
}),
|
|
65
|
+
manufacturerContributionAmount: z.union([z.string(), z.number()]).optional().transform((val) => {
|
|
66
|
+
if (typeof val === "number") return val;
|
|
67
|
+
return val ? formatToNumber(val) : 0;
|
|
59
68
|
}),
|
|
60
69
|
program: z.string().min(1, { message: "Program is required." }),
|
|
61
70
|
fico: z.string().min(1, { message: "FICO is required." }),
|
|
@@ -66,7 +75,32 @@ const BuyDownCalculator = ({
|
|
|
66
75
|
return formatToNumber(val);
|
|
67
76
|
})
|
|
68
77
|
}).superRefine((values, ctx) => {
|
|
69
|
-
const {
|
|
78
|
+
const {
|
|
79
|
+
purchasePrice,
|
|
80
|
+
downpayment,
|
|
81
|
+
program,
|
|
82
|
+
buydownTerm,
|
|
83
|
+
dealerContribution,
|
|
84
|
+
manufacturerContributionAmount
|
|
85
|
+
} = values;
|
|
86
|
+
if (dealerContribution > 0 && manufacturerContributionAmount > 0) {
|
|
87
|
+
ctx.addIssue({
|
|
88
|
+
code: z.ZodIssueCode.custom,
|
|
89
|
+
path: ["dealerContribution"],
|
|
90
|
+
message: "Cannot specify both Dealer Contribution and Manufacturer Contribution Amount. Please choose one."
|
|
91
|
+
});
|
|
92
|
+
ctx.addIssue({
|
|
93
|
+
code: z.ZodIssueCode.custom,
|
|
94
|
+
path: ["manufacturerContributionAmount"],
|
|
95
|
+
message: "Cannot specify both Dealer Contribution and Manufacturer Contribution Amount. Please choose one."
|
|
96
|
+
});
|
|
97
|
+
} else if (dealerContribution === 0 && manufacturerContributionAmount === 0) {
|
|
98
|
+
ctx.addIssue({
|
|
99
|
+
code: z.ZodIssueCode.custom,
|
|
100
|
+
path: ["dealerContribution"],
|
|
101
|
+
message: "Either Dealer Contribution or Manufacturer Contribution Amount is required."
|
|
102
|
+
});
|
|
103
|
+
}
|
|
70
104
|
if (program === "3/6 SOFR ARM" && (buydownTerm === 4 || buydownTerm === 5)) {
|
|
71
105
|
ctx.addIssue({
|
|
72
106
|
code: z.ZodIssueCode.custom,
|
|
@@ -77,7 +111,6 @@ const BuyDownCalculator = ({
|
|
|
77
111
|
if (purchasePrice && downpayment) {
|
|
78
112
|
const financedAmount2 = purchasePrice - downpayment;
|
|
79
113
|
const range = getRange(financedAmount2);
|
|
80
|
-
const disableLTV = checkLTVStatus(downpayment, purchasePrice);
|
|
81
114
|
if (financedAmount2 < 0) {
|
|
82
115
|
ctx.addIssue({
|
|
83
116
|
code: z.ZodIssueCode.custom,
|
|
@@ -89,11 +122,6 @@ const BuyDownCalculator = ({
|
|
|
89
122
|
const loanRange2 = getRange(financedAmount2, program);
|
|
90
123
|
setLoanRange(loanRange2);
|
|
91
124
|
}
|
|
92
|
-
if (!disableLTV) {
|
|
93
|
-
setDisableLTVAbove60(false);
|
|
94
|
-
} else {
|
|
95
|
-
setDisableLTVAbove60(true);
|
|
96
|
-
}
|
|
97
125
|
}
|
|
98
126
|
if (updateFicoRequirements(range, program) === false) {
|
|
99
127
|
ctx.addIssue({
|
|
@@ -114,10 +142,24 @@ const BuyDownCalculator = ({
|
|
|
114
142
|
handleSubmit,
|
|
115
143
|
register,
|
|
116
144
|
setValue,
|
|
145
|
+
watch,
|
|
146
|
+
trigger,
|
|
117
147
|
formState: { errors, isValid }
|
|
118
148
|
} = methods;
|
|
149
|
+
const watchedFields = watch(["purchasePrice", "downpayment", "program"]);
|
|
150
|
+
useEffect(() => {
|
|
151
|
+
const [purchasePrice, downpayment, program] = watchedFields;
|
|
152
|
+
if (purchasePrice && downpayment && program) {
|
|
153
|
+
const purchasePriceNum = typeof purchasePrice === "string" ? formatToNumber(purchasePrice) : purchasePrice;
|
|
154
|
+
const downpaymentNum = typeof downpayment === "string" ? formatToNumber(downpayment) : downpayment;
|
|
155
|
+
if (purchasePriceNum > 0 && downpaymentNum >= 0 && purchasePriceNum > downpaymentNum) {
|
|
156
|
+
const financedAmount2 = purchasePriceNum - downpaymentNum;
|
|
157
|
+
const loanRange2 = getRange(financedAmount2, program);
|
|
158
|
+
setLoanRange(loanRange2);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}, [watchedFields]);
|
|
119
162
|
const calculator_variant = getVariant(variant);
|
|
120
|
-
const enableDependentInputs = enableFullTimeCharter;
|
|
121
163
|
const formatToNumber = (value) => {
|
|
122
164
|
const cleanValue = value.replace(/[%$, ]/gi, "");
|
|
123
165
|
return parseFloat(cleanValue);
|
|
@@ -140,7 +182,7 @@ const BuyDownCalculator = ({
|
|
|
140
182
|
const percentage = downpayment / purchasePrice * 100;
|
|
141
183
|
const loanToValue2 = 100 - percentage;
|
|
142
184
|
if (loanToValue2 <= 60) return false;
|
|
143
|
-
|
|
185
|
+
return true;
|
|
144
186
|
};
|
|
145
187
|
const getRange = (financedAmount2, program, forRates) => {
|
|
146
188
|
let range = "";
|
|
@@ -224,6 +266,32 @@ const BuyDownCalculator = ({
|
|
|
224
266
|
setDisableMooringOutside(true);
|
|
225
267
|
}
|
|
226
268
|
};
|
|
269
|
+
const handleDealerContributionChange = (event) => {
|
|
270
|
+
const value = event.target.value;
|
|
271
|
+
const numericValue = formatToNumber(value);
|
|
272
|
+
if (numericValue > 0) {
|
|
273
|
+
setIsManufacturerContributionDisabled(true);
|
|
274
|
+
setValue("manufacturerContributionAmount", 0);
|
|
275
|
+
} else {
|
|
276
|
+
setIsManufacturerContributionDisabled(false);
|
|
277
|
+
}
|
|
278
|
+
setTimeout(() => {
|
|
279
|
+
trigger(["dealerContribution", "manufacturerContributionAmount"]);
|
|
280
|
+
}, 0);
|
|
281
|
+
};
|
|
282
|
+
const handleManufacturerContributionChange = (event) => {
|
|
283
|
+
const value = event.target.value;
|
|
284
|
+
const numericValue = formatToNumber(value);
|
|
285
|
+
if (numericValue > 0) {
|
|
286
|
+
setIsDealerContributionDisabled(true);
|
|
287
|
+
setValue("dealerContribution", 0);
|
|
288
|
+
} else {
|
|
289
|
+
setIsDealerContributionDisabled(false);
|
|
290
|
+
}
|
|
291
|
+
setTimeout(() => {
|
|
292
|
+
trigger(["dealerContribution", "manufacturerContributionAmount"]);
|
|
293
|
+
}, 0);
|
|
294
|
+
};
|
|
227
295
|
const updateFicoRequirements = (loanRangeValue, program) => {
|
|
228
296
|
const ficoOptionsToDisable = ["700-719", "720-759"];
|
|
229
297
|
const ficoSelect = document.getElementById("fico");
|
|
@@ -283,23 +351,34 @@ const BuyDownCalculator = ({
|
|
|
283
351
|
}
|
|
284
352
|
return rate;
|
|
285
353
|
};
|
|
286
|
-
const calculateAdjustments = () => {
|
|
354
|
+
const calculateAdjustments = (purchasePrice, downpayment) => {
|
|
287
355
|
let total = 0;
|
|
288
356
|
const checkboxes = document.querySelectorAll(
|
|
289
|
-
'input[type="checkbox"]:checked
|
|
357
|
+
'input[type="checkbox"]:checked'
|
|
290
358
|
);
|
|
291
359
|
checkboxes.forEach((checkbox) => {
|
|
292
360
|
total += parseFloat(checkbox.value);
|
|
293
361
|
});
|
|
362
|
+
if (purchasePrice && downpayment && purchasePrice > 0 && downpayment >= 0) {
|
|
363
|
+
const ltvStatus = checkLTVStatus(downpayment, purchasePrice);
|
|
364
|
+
if (!ltvStatus) {
|
|
365
|
+
total += -0.35;
|
|
366
|
+
setLtvDiscountApplied(true);
|
|
367
|
+
} else {
|
|
368
|
+
setLtvDiscountApplied(false);
|
|
369
|
+
}
|
|
370
|
+
} else {
|
|
371
|
+
setLtvDiscountApplied(false);
|
|
372
|
+
}
|
|
294
373
|
return total;
|
|
295
374
|
};
|
|
296
|
-
const calculateRates = (program, fico, financedAmount2, buydownRate) => {
|
|
375
|
+
const calculateRates = (program, fico, financedAmount2, buydownRate, purchasePrice, downpayment) => {
|
|
297
376
|
const minRate = 6.94;
|
|
298
377
|
const loanRange2 = getRange(financedAmount2, program, true);
|
|
299
378
|
const startingRate = parseFloat(
|
|
300
379
|
getInterestRate(program, fico, loanRange2).replace(/[%,]/g, "")
|
|
301
380
|
);
|
|
302
|
-
const rateAdjustments = calculateAdjustments();
|
|
381
|
+
const rateAdjustments = calculateAdjustments(purchasePrice, downpayment);
|
|
303
382
|
const adjustedRate = startingRate + rateAdjustments;
|
|
304
383
|
const finalNoteRateValue = Math.max(minRate, adjustedRate);
|
|
305
384
|
const finalNoteRate2 = formatToPercentage(finalNoteRateValue);
|
|
@@ -383,28 +462,35 @@ const BuyDownCalculator = ({
|
|
|
383
462
|
setTotalBuydownCost(formatToCurrency(TBC));
|
|
384
463
|
return TBC;
|
|
385
464
|
};
|
|
386
|
-
const calculateManufacturerContribution = (dealerContribution) => {
|
|
387
|
-
|
|
465
|
+
const calculateManufacturerContribution = (dealerContribution, manufacturerContributionAmount, totalBuydownCost2) => {
|
|
466
|
+
let manufacturerContribution;
|
|
467
|
+
if (manufacturerContributionAmount > 0) {
|
|
468
|
+
manufacturerContribution = manufacturerContributionAmount / totalBuydownCost2 * 100;
|
|
469
|
+
} else {
|
|
470
|
+
manufacturerContribution = 100 - dealerContribution;
|
|
471
|
+
}
|
|
388
472
|
const percentage = formatToPercentage(manufacturerContribution);
|
|
389
473
|
setManuContributionPercentage(percentage);
|
|
390
474
|
return manufacturerContribution;
|
|
391
475
|
};
|
|
392
|
-
const
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
476
|
+
const calculateDealerContributionAmount = (dealerContribution, manufacturerContributionAmount, totalBuydownCost2) => {
|
|
477
|
+
let dealerContributionValue;
|
|
478
|
+
if (dealerContribution > 0) {
|
|
479
|
+
dealerContributionValue = totalBuydownCost2 * (dealerContribution / 100);
|
|
480
|
+
} else {
|
|
481
|
+
dealerContributionValue = totalBuydownCost2 - manufacturerContributionAmount;
|
|
482
|
+
}
|
|
399
483
|
const formattedAmount = formatToCurrency(dealerContributionValue);
|
|
400
484
|
setDealerContributionAmount(formattedAmount);
|
|
401
485
|
};
|
|
402
486
|
const onSubmit = (data) => {
|
|
403
487
|
if (isValid) {
|
|
488
|
+
setLtvDiscountApplied(false);
|
|
404
489
|
const {
|
|
405
490
|
buydownRate,
|
|
406
491
|
buydownTerm,
|
|
407
492
|
dealerContribution,
|
|
493
|
+
manufacturerContributionAmount,
|
|
408
494
|
downpayment,
|
|
409
495
|
fico,
|
|
410
496
|
program,
|
|
@@ -419,7 +505,9 @@ const BuyDownCalculator = ({
|
|
|
419
505
|
program,
|
|
420
506
|
fico,
|
|
421
507
|
financedAmountValue,
|
|
422
|
-
buydownRate
|
|
508
|
+
buydownRate,
|
|
509
|
+
purchasePrice,
|
|
510
|
+
downpayment
|
|
423
511
|
);
|
|
424
512
|
const buydownPayment2 = calculateBuydownPayment(
|
|
425
513
|
buydownRate,
|
|
@@ -436,9 +524,16 @@ const BuyDownCalculator = ({
|
|
|
436
524
|
financedAmountValue,
|
|
437
525
|
buydownTerm
|
|
438
526
|
);
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
527
|
+
calculateManufacturerContribution(
|
|
528
|
+
dealerContribution,
|
|
529
|
+
manufacturerContributionAmount,
|
|
530
|
+
totalBuydownCost2
|
|
531
|
+
);
|
|
532
|
+
calculateDealerContributionAmount(
|
|
533
|
+
dealerContribution,
|
|
534
|
+
manufacturerContributionAmount,
|
|
535
|
+
totalBuydownCost2
|
|
536
|
+
);
|
|
442
537
|
}
|
|
443
538
|
};
|
|
444
539
|
return /* @__PURE__ */ jsxs("section", { className: `${calc_container({ variant: calculator_variant })}`, children: [
|
|
@@ -495,16 +590,40 @@ const BuyDownCalculator = ({
|
|
|
495
590
|
PercentageInput,
|
|
496
591
|
{
|
|
497
592
|
id: "dealerContribution",
|
|
498
|
-
...register("dealerContribution", {
|
|
593
|
+
...register("dealerContribution", {
|
|
594
|
+
required: false,
|
|
595
|
+
onChange: handleDealerContributionChange
|
|
596
|
+
}),
|
|
499
597
|
sizes: "medium",
|
|
500
598
|
placeholder: "0.00%",
|
|
501
599
|
label: "Dealer Contribution",
|
|
502
|
-
required:
|
|
600
|
+
required: false,
|
|
503
601
|
error: !!errors["dealerContribution"],
|
|
504
602
|
helperText: errors["dealerContribution"]?.message,
|
|
505
|
-
variant: calculator_variant
|
|
603
|
+
variant: calculator_variant,
|
|
604
|
+
disabled: isDealerContributionDisabled
|
|
506
605
|
}
|
|
507
606
|
) }),
|
|
607
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
608
|
+
CurrencyInput,
|
|
609
|
+
{
|
|
610
|
+
id: "manufacturerContributionAmount",
|
|
611
|
+
...register("manufacturerContributionAmount", {
|
|
612
|
+
required: false,
|
|
613
|
+
onChange: handleManufacturerContributionChange
|
|
614
|
+
}),
|
|
615
|
+
sizes: "medium",
|
|
616
|
+
placeholder: "$0.00",
|
|
617
|
+
label: "Manufacturer Contribution Amount",
|
|
618
|
+
required: false,
|
|
619
|
+
error: !!errors["manufacturerContributionAmount"],
|
|
620
|
+
helperText: errors["manufacturerContributionAmount"]?.message,
|
|
621
|
+
variant: calculator_variant,
|
|
622
|
+
disabled: isManufacturerContributionDisabled
|
|
623
|
+
}
|
|
624
|
+
) })
|
|
625
|
+
] }),
|
|
626
|
+
/* @__PURE__ */ jsxs("div", { className: `${row_form}`, children: [
|
|
508
627
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
|
|
509
628
|
Dropdown,
|
|
510
629
|
{
|
|
@@ -526,9 +645,7 @@ const BuyDownCalculator = ({
|
|
|
526
645
|
Program.map((item) => /* @__PURE__ */ jsx("option", { value: item.value, children: item.text }, item.value))
|
|
527
646
|
]
|
|
528
647
|
}
|
|
529
|
-
) })
|
|
530
|
-
] }),
|
|
531
|
-
/* @__PURE__ */ jsxs("div", { className: `${row_form}`, children: [
|
|
648
|
+
) }),
|
|
532
649
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
|
|
533
650
|
Dropdown,
|
|
534
651
|
{
|
|
@@ -546,7 +663,9 @@ const BuyDownCalculator = ({
|
|
|
546
663
|
Fico.map((item) => /* @__PURE__ */ jsx("option", { value: item.value, children: item.text }, item.value))
|
|
547
664
|
]
|
|
548
665
|
}
|
|
549
|
-
) })
|
|
666
|
+
) })
|
|
667
|
+
] }),
|
|
668
|
+
/* @__PURE__ */ jsxs("div", { className: `${row_form}`, children: [
|
|
550
669
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
551
670
|
Input,
|
|
552
671
|
{
|
|
@@ -558,10 +677,8 @@ const BuyDownCalculator = ({
|
|
|
558
677
|
variant: calculator_variant,
|
|
559
678
|
value: loanRange
|
|
560
679
|
}
|
|
561
|
-
) })
|
|
562
|
-
|
|
563
|
-
/* @__PURE__ */ jsxs("div", { className: `${row_form}`, children: [
|
|
564
|
-
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
|
|
680
|
+
) }),
|
|
681
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
565
682
|
Dropdown,
|
|
566
683
|
{
|
|
567
684
|
id: "buydownRate",
|
|
@@ -574,85 +691,82 @@ const BuyDownCalculator = ({
|
|
|
574
691
|
error: !!errors.buydownRate,
|
|
575
692
|
helperText: errors.buydownRate?.message,
|
|
576
693
|
variant: calculator_variant,
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
BuydownRate.map((item) => /* @__PURE__ */ jsx("option", { value: item.value, children: item.text }, item.value))
|
|
581
|
-
]
|
|
582
|
-
}
|
|
583
|
-
) }),
|
|
584
|
-
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
|
|
585
|
-
Dropdown,
|
|
586
|
-
{
|
|
587
|
-
id: "buydownTerm",
|
|
588
|
-
...register("buydownTerm", {
|
|
589
|
-
required: true,
|
|
590
|
-
deps: ["program"]
|
|
591
|
-
}),
|
|
592
|
-
label: "Buydown Term (1-5 Years)",
|
|
593
|
-
sizes: "medium",
|
|
594
|
-
required: true,
|
|
595
|
-
error: !!errors.buydownTerm,
|
|
596
|
-
helperText: errors.buydownTerm?.message,
|
|
597
|
-
variant: calculator_variant,
|
|
598
|
-
defaultValue: 0,
|
|
599
|
-
children: [
|
|
600
|
-
/* @__PURE__ */ jsx("option", { value: "", disabled: true, children: "Select Buydown Term" }),
|
|
601
|
-
BuydownTerm.map((item) => /* @__PURE__ */ jsx("option", { value: item.value, children: item.text }, item.value))
|
|
602
|
-
]
|
|
694
|
+
disabled: true,
|
|
695
|
+
defaultValue: 3.74,
|
|
696
|
+
children: BuydownRate.map((item) => /* @__PURE__ */ jsx("option", { value: item.value, children: item.text }, item.value))
|
|
603
697
|
}
|
|
604
698
|
) })
|
|
605
699
|
] }),
|
|
606
|
-
/* @__PURE__ */ jsx("div", {
|
|
700
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
701
|
+
Dropdown,
|
|
702
|
+
{
|
|
703
|
+
id: "buydownTerm",
|
|
704
|
+
...register("buydownTerm", {
|
|
705
|
+
required: true,
|
|
706
|
+
deps: ["program"]
|
|
707
|
+
}),
|
|
708
|
+
label: "Buydown Term",
|
|
709
|
+
sizes: "medium",
|
|
710
|
+
required: true,
|
|
711
|
+
error: !!errors.buydownTerm,
|
|
712
|
+
helperText: errors.buydownTerm?.message,
|
|
713
|
+
variant: calculator_variant,
|
|
714
|
+
disabled: true,
|
|
715
|
+
defaultValue: 3,
|
|
716
|
+
children: BuydownTerm.map((item) => /* @__PURE__ */ jsx("option", { value: item.value, children: item.text }, item.value))
|
|
717
|
+
}
|
|
718
|
+
) }) }),
|
|
719
|
+
/* @__PURE__ */ jsx("div", { className: `${row_form}`, children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("label", { children: "Loan Level Rate Adjustments. Rate Adjustments are subject to change, are limited, and restricted by floor rate." }) }) }),
|
|
607
720
|
/* @__PURE__ */ jsxs("div", { className: `${row_form}`, children: [
|
|
608
|
-
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { className: row_form, children: /* @__PURE__ */ jsxs(
|
|
609
|
-
RadioButtonSet,
|
|
610
|
-
{
|
|
611
|
-
id: "dependentInputs",
|
|
612
|
-
label: "Limit One",
|
|
613
|
-
sizes: "medium",
|
|
614
|
-
variant,
|
|
615
|
-
direction: "column",
|
|
616
|
-
disabled: !enableDependentInputs,
|
|
617
|
-
className: limit_one,
|
|
618
|
-
children: [
|
|
619
|
-
/* @__PURE__ */ jsx(
|
|
620
|
-
RadioButton,
|
|
621
|
-
{
|
|
622
|
-
id: "mooringOutsideContinentalUS",
|
|
623
|
-
...register("mooringOutsideContinentalUS"),
|
|
624
|
-
value: 0.5,
|
|
625
|
-
radioText: "Mooring Outside Continental U.S. (Includes Puerto Rico,\n Hawaii, and Alaska) (Does not apply to Full Time Charter)\n +0.500",
|
|
626
|
-
groupName: "dependentInputs",
|
|
627
|
-
disabled: disableMooringOutside
|
|
628
|
-
}
|
|
629
|
-
),
|
|
630
|
-
/* @__PURE__ */ jsx(
|
|
631
|
-
RadioButton,
|
|
632
|
-
{
|
|
633
|
-
id: "operatingAccount",
|
|
634
|
-
...register("operatingAccount"),
|
|
635
|
-
value: -0.25,
|
|
636
|
-
radioText: "Open and fund an LLC Operating Account with Axos - 0.25",
|
|
637
|
-
groupName: "dependentInputs"
|
|
638
|
-
}
|
|
639
|
-
)
|
|
640
|
-
]
|
|
641
|
-
}
|
|
642
|
-
) }) }),
|
|
643
721
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
644
|
-
/* @__PURE__ */ jsx("div", {
|
|
722
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
723
|
+
Checkbox,
|
|
724
|
+
{
|
|
725
|
+
id: "mooringOutsideContinentalUS",
|
|
726
|
+
...register("mooringOutsideContinentalUS"),
|
|
727
|
+
sizes: "medium",
|
|
728
|
+
variant: calculator_variant,
|
|
729
|
+
value: 0.5,
|
|
730
|
+
disabled: !enableFullTimeCharter || disableMooringOutside,
|
|
731
|
+
children: "Mooring Outside Continental U.S. (Includes Puerto Rico, Hawaii, and Alaska) (Does not apply to Full Time Charter) +0.500"
|
|
732
|
+
}
|
|
733
|
+
) }),
|
|
734
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
645
735
|
Checkbox,
|
|
646
736
|
{
|
|
647
|
-
id: "
|
|
648
|
-
...register("
|
|
737
|
+
id: "operatingAccount",
|
|
738
|
+
...register("operatingAccount"),
|
|
649
739
|
sizes: "medium",
|
|
650
|
-
variant,
|
|
651
|
-
value: -0.
|
|
652
|
-
disabled:
|
|
653
|
-
children: "
|
|
740
|
+
variant: calculator_variant,
|
|
741
|
+
value: -0.25,
|
|
742
|
+
disabled: !enableFullTimeCharter,
|
|
743
|
+
children: "Open and fund an LLC Operating Account with Axos - 0.25"
|
|
654
744
|
}
|
|
655
745
|
) }),
|
|
746
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
747
|
+
Checkbox,
|
|
748
|
+
{
|
|
749
|
+
id: "vesselOver15Years",
|
|
750
|
+
...register("vesselOver15Years"),
|
|
751
|
+
sizes: "medium",
|
|
752
|
+
variant: calculator_variant,
|
|
753
|
+
value: 1.25,
|
|
754
|
+
children: "Vessel > 15 Years +1.250"
|
|
755
|
+
}
|
|
756
|
+
) }),
|
|
757
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
758
|
+
Checkbox,
|
|
759
|
+
{
|
|
760
|
+
id: "highPerformanceBoats",
|
|
761
|
+
...register("highPerformanceBoats"),
|
|
762
|
+
sizes: "medium",
|
|
763
|
+
variant: calculator_variant,
|
|
764
|
+
value: 0.5,
|
|
765
|
+
children: "High Performance Boats (>4 Engines) +0.500"
|
|
766
|
+
}
|
|
767
|
+
) })
|
|
768
|
+
] }),
|
|
769
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
656
770
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
657
771
|
Checkbox,
|
|
658
772
|
{
|
|
@@ -661,7 +775,29 @@ const BuyDownCalculator = ({
|
|
|
661
775
|
sizes: "medium",
|
|
662
776
|
variant: calculator_variant,
|
|
663
777
|
value: -0.125,
|
|
664
|
-
children: "
|
|
778
|
+
children: "Floor Plan Dealer Incentive -0.125"
|
|
779
|
+
}
|
|
780
|
+
) }),
|
|
781
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
782
|
+
Checkbox,
|
|
783
|
+
{
|
|
784
|
+
id: "retailCheckingAccount",
|
|
785
|
+
...register("retailCheckingAccount"),
|
|
786
|
+
sizes: "medium",
|
|
787
|
+
variant: calculator_variant,
|
|
788
|
+
value: -0.125,
|
|
789
|
+
children: "Retail Checking Account w/ACH and Minimum of 3 Months P&I Balance -0.125"
|
|
790
|
+
}
|
|
791
|
+
) }),
|
|
792
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
793
|
+
Checkbox,
|
|
794
|
+
{
|
|
795
|
+
id: "electricMotorHybrid",
|
|
796
|
+
...register("electricMotorHybrid"),
|
|
797
|
+
sizes: "medium",
|
|
798
|
+
variant: calculator_variant,
|
|
799
|
+
value: -0.25,
|
|
800
|
+
children: "100% Electric Motor / Hybrid -0.250"
|
|
665
801
|
}
|
|
666
802
|
) }),
|
|
667
803
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
@@ -756,7 +892,8 @@ const BuyDownCalculator = ({
|
|
|
756
892
|
label: "Final Note Rate",
|
|
757
893
|
disabled: true,
|
|
758
894
|
variant: calculator_variant,
|
|
759
|
-
value: finalNoteRate
|
|
895
|
+
value: finalNoteRate,
|
|
896
|
+
helperText: ltvDiscountApplied && "LTV discount applied"
|
|
760
897
|
}
|
|
761
898
|
) })
|
|
762
899
|
] }),
|
|
@@ -777,7 +914,7 @@ const BuyDownCalculator = ({
|
|
|
777
914
|
{
|
|
778
915
|
id: "buydownPayment",
|
|
779
916
|
sizes: "medium",
|
|
780
|
-
label: "
|
|
917
|
+
label: "Monthly payment WITH buydown",
|
|
781
918
|
disabled: true,
|
|
782
919
|
variant: calculator_variant,
|
|
783
920
|
value: buydownPayment
|
|
@@ -788,23 +925,23 @@ const BuyDownCalculator = ({
|
|
|
788
925
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
789
926
|
CurrencyInput,
|
|
790
927
|
{
|
|
791
|
-
id: "
|
|
928
|
+
id: "nonBuydownPayment",
|
|
792
929
|
sizes: "medium",
|
|
793
|
-
label: "
|
|
930
|
+
label: "Monthly Payment WITHOUT buydown",
|
|
794
931
|
disabled: true,
|
|
795
932
|
variant: calculator_variant,
|
|
796
|
-
value:
|
|
933
|
+
value: nonBuydownPayment
|
|
797
934
|
}
|
|
798
935
|
) }),
|
|
799
936
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
800
937
|
CurrencyInput,
|
|
801
938
|
{
|
|
802
|
-
id: "
|
|
939
|
+
id: "totalBuydownCost",
|
|
803
940
|
sizes: "medium",
|
|
804
|
-
label: "
|
|
941
|
+
label: "Total Buydown Cost",
|
|
805
942
|
disabled: true,
|
|
806
943
|
variant: calculator_variant,
|
|
807
|
-
value:
|
|
944
|
+
value: totalBuydownCost
|
|
808
945
|
}
|
|
809
946
|
) })
|
|
810
947
|
] }),
|
|
@@ -812,38 +949,27 @@ const BuyDownCalculator = ({
|
|
|
812
949
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
813
950
|
CurrencyInput,
|
|
814
951
|
{
|
|
815
|
-
id: "
|
|
952
|
+
id: "monthlySavings",
|
|
816
953
|
sizes: "medium",
|
|
817
|
-
label: "
|
|
954
|
+
label: "Monthly Savings",
|
|
818
955
|
disabled: true,
|
|
819
956
|
variant: calculator_variant,
|
|
820
|
-
value:
|
|
957
|
+
value: monthlySavings
|
|
821
958
|
}
|
|
822
959
|
) }),
|
|
823
960
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
824
961
|
CurrencyInput,
|
|
825
962
|
{
|
|
826
|
-
id: "
|
|
963
|
+
id: "dealerContributionAmount",
|
|
827
964
|
sizes: "medium",
|
|
828
|
-
label: "
|
|
965
|
+
label: "Dealer Contribution Amount",
|
|
829
966
|
disabled: true,
|
|
830
967
|
variant: calculator_variant,
|
|
831
|
-
value:
|
|
968
|
+
value: dealerContributionAmount,
|
|
969
|
+
helperText: "Dealer reserve offset not included in this amount."
|
|
832
970
|
}
|
|
833
971
|
) })
|
|
834
|
-
] })
|
|
835
|
-
/* @__PURE__ */ jsx("div", { className: `${row_form}`, children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
836
|
-
CurrencyInput,
|
|
837
|
-
{
|
|
838
|
-
id: "dealerContributionAmount",
|
|
839
|
-
sizes: "medium",
|
|
840
|
-
label: "Dealer Contribution Amount",
|
|
841
|
-
disabled: true,
|
|
842
|
-
variant: calculator_variant,
|
|
843
|
-
value: dealerContributionAmount,
|
|
844
|
-
helperText: "Dealer reserve offset not included in this amount."
|
|
845
|
-
}
|
|
846
|
-
) }) })
|
|
972
|
+
] })
|
|
847
973
|
]
|
|
848
974
|
}
|
|
849
975
|
) }),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IconBillboardProps } from '../IconBillboard/IconBillboard.interface';
|
|
2
2
|
import { default as React } from 'react';
|
|
3
|
+
import { ChevronProps } from '../Chevron/Chevron.interface';
|
|
3
4
|
|
|
4
5
|
export interface CalculatorProps {
|
|
5
6
|
id?: string;
|
|
@@ -11,5 +12,7 @@ export interface CalculatorProps {
|
|
|
11
12
|
bodyCopy?: React.ReactNode;
|
|
12
13
|
disclosure?: React.ReactNode;
|
|
13
14
|
marketingTiles?: IconBillboardProps[];
|
|
15
|
+
initialBalance?: number;
|
|
16
|
+
callToActionRow?: ChevronProps[];
|
|
14
17
|
}
|
|
15
18
|
export declare const Calculator: (props: CalculatorProps) => import("react/jsx-runtime").JSX.Element;
|