{"version":3,"sources":["webpack://elevations-credit-union/./src/components/calculators/CalculatorModule.js","webpack://elevations-credit-union/./src/components/calculators/utils.js","webpack://elevations-credit-union/./src/utilities/computeTopOffset.js","webpack://elevations-credit-union/./src/utilities/useEnabledOnClient.js","webpack://elevations-credit-union/./src/components/calculators/Home/hom03-MonthlyPayment.js","webpack://elevations-credit-union/./src/components/calculators/Home/hom06-RentOrBuy.js","webpack://elevations-credit-union/./src/components/calculators/Home/hom14-HomeEquity.js","webpack://elevations-credit-union/./src/components/calculators/Home/hom02-Refinance.js","webpack://elevations-credit-union/./src/components/calculators/Home/hom09-TaxSavings.js","webpack://elevations-credit-union/./src/components/calculators/Auto/aut03-MonthlyPayment.js","webpack://elevations-credit-union/./src/components/calculators/Auto/aut06-Afford.js","webpack://elevations-credit-union/./src/components/calculators/Auto/aut01-LeaseOrPurchase.js","webpack://elevations-credit-union/./src/components/calculators/Auto/aut07-Refinance.js","webpack://elevations-credit-union/./src/components/calculators/PersonalFinance/det03-MonthlyPayment.js","webpack://elevations-credit-union/./src/components/calculators/PersonalFinance/det06-DebtConsolidation.js","webpack://elevations-credit-union/./src/components/calculators/PersonalFinance/det11-Transfer.js","webpack://elevations-credit-union/./src/components/calculators/PersonalFinance/det01-Payoff.js","webpack://elevations-credit-union/./src/components/calculators/PersonalFinance/bud07-NetWorth.js","webpack://elevations-credit-union/./src/components/calculators/PersonalFinance/bud09-CashFlow.js","webpack://elevations-credit-union/./src/components/calculators/PersonalFinance/bud04-PayDownDebt.js","webpack://elevations-credit-union/./src/components/calculators/PersonalFinance/col02-StudentLoans.js","webpack://elevations-credit-union/./src/components/calculators/Wealth/inc07-InvestmentGrowth.js","webpack://elevations-credit-union/./src/components/modules/CalculatorSectionModule/components/TableOfContents.js","webpack://elevations-credit-union/./src/components/modules/CalculatorSectionModule/components/TableOfContents.module.scss","webpack://elevations-credit-union/./src/components/modules/CalculatorSectionModule/CalculatorSectionModule.module.scss","webpack://elevations-credit-union/./src/components/modules/CalculatorSectionModule/CalculatorSectionModule.js","webpack://elevations-credit-union/./src/containers/calculators/constants.js","webpack://elevations-credit-union/./src/templates/staticTemplate.js","webpack://elevations-credit-union/./node_modules/lodash/kebabCase.js","webpack://elevations-credit-union/./src/components/calculators/CalculatorModule.module.scss"],"names":["CalculatorModule","calculator","data-qa","className","styles","i18nKey","formatNumber","num","toString","replace","formatPercentage","value","currencyFormatter","Intl","NumberFormat","style","currency","minimumFractionDigits","formatCurrency","format","formatMonths","parseInt","node","rootNode","curtop","curtopscroll","offsetParent","offsetTop","scrollTop","useState","isDisabled","setIsDisabled","useEffect","LOAN_TERMS","validationSchema","loanAmount","min","interestRate","termMonths","max","propertyValue","propertyTaxes","hazardInsurance","pmi","MonthlyPaymentCalculator","useTranslation","t","language","split","countryCode","disabledField","setDisabledField","calcResults","setCalcResults","storedFormData","setStoredFormData","disabled","useEnabledOnClient","useForm","mode","defaultValues","amortization","register","errors","handleSubmit","inProgress","setInProgress","alert","showAlert","dismissAlert","useCallback","resultsContainer","useRef","resultsHeader","handleSubmitValid","formData","payload","username","process","password","chartWidth","chartHeight","barColor1","barColor2","barColor3","estimateTipmi","axios","response","status","Boolean","data","error","Error","statusText","window","scrollTo","top","computeOffsetTop","current","behavior","focus","type","title","defaultValue","message","xs","variant","onDismiss","action","method","noValidate","autoComplete","onSubmit","classNames","lg","label","id","name","ref","formatError","autoFocus","autoSelect","map","years","onChange","e","target","alignment","loading","alt","icon","faTimes","faCheck","Heading","element","size","tabIndex","forwardedRef","responseText","summary","role","colSpan","scope","pandi","monthlyTaxes","monthlyInsurance","monthlyPmi","pandiTipmi","src","chartUrl","year","length","Fragment","period","beginningBalance","principal","interest","payment","endingBalance","rent","fees","rentIns","rentIncr","purchase","growth","realtorFees","loan","rate","term","closingCosts","homeowners","taxes","maint","analysis","taxBracket","beforeTaxReturn","inf","RentOrBuyCalculator","standardDeduction","step","rentTotal","paymentsTotal","closingCostsTotal","insuranceTotal","taxesTotal","maintenanceTotal","oppcostTotal","taxsavingsTotal","appreciationTotal","principalTotal","realtorFeesTotal","totalcostRent","totalcostBuy","pvtotalcostRent","pvtotalcostBuy","difference","HomeEquityCalculator","homeValue","mortgageBalance","ltv","aria-label","Number","ltvCol1","ltvCol2","ltvCol3","ltvCol4","ltvCol5","lineCol1","lineCol2","lineCol3","lineCol4","lineCol5","RefinanceCalculator","currentTerm","refinanceRate","refinanceTerm","originationFee","discountPoints","refinanceFees","responseText2","responseText3","aria-atomic","currentTerm0","traditionalTerm","enhancedTerm","currentPayment","traditionalPayment","enhancedPayment","traditionalBreakeven","enhancedBreakeven","currentInterest","traditionalInterest","enhancedInterest","TaxSavingsCalculator","taxSavings","AutoMonthlyPaymentCalculator","tableFormat","setTableFormat","purchasePrice","cashRebate","tradeIn","tradeInOwed","downPayment","AutoAffordCalculator","monthlyPayment","AutoLeaseCalculator","rebate","leasePayment","leaseDeposit","salesTax","purchaseCosts","loanRate","residualValue","totalLeasePayments","totalLease","yearlyLease","parseFloat","interestPaid","totalPurchase","yearlyPurchase","AutoRefinanceCalculator","currentBalance","currentRate","proposedRate","getValues","validate","rate1","rate2","currentMonths","proposedPayment","proposedMonths","proposedInterest","PFPaymentCalculator","termYears","cc1Balance","cc1Rate","cc2Balance","cc2Rate","cc3Balance","cc3Rate","cc4Balance","cc4Rate","auto1Balance","auto1Rate","auto2Balance","auto2Rate","rvBalance","rvRate","other1Balance","other1Rate","other2Balance","other2Rate","other3Balance","other3Rate","PFDebtConsolidationCalculator","creditCardLabel","autoLoanLabel","otherLoanLabel","fieldGroups","fields","cc1Payment","cc2Payment","cc3Payment","cc4Payment","auto1Payment","auto2Payment","rvPayment","other1Payment","other2Payment","other3Payment","group","field","fieldName","visuallyHideLabel","debtBalance","debtPayment","debtInterest","debtTerm","consBalance","consPayment","consInterest","consTerm","recommendSavings","recommendInterest","recommendTerm","PFTransferCalculator","currentBalance1","currentRate1","currentBalance2","currentRate2","currentBalance3","currentRate3","currentBalance4","currentRate4","introRate","introTerm","regularRate","annualFee","transferFeePercent","transferFeeMaximum","PFPayoffCalculator","ccBalance","ccRate","minpaymentRate","minpaymentAmount","skipPayment","additionalPayment","percent","residence","vacation","furnishings","autos","realEstate","art","stocks","varAnnuities","limitedPartner","business","fixedAnnuities","trustDeeds","otherFixed","govtBonds","muniBonds","corpBonds","faceCertificates","debtMutuals","checking","savings","moneyMarket","cd","otherCash","homeMortgage","otherMortgage","autoLoan","bankLoan","personalLoan","creditCards","otherDebts","PFNetWorthCalculator","assets","totalName","liabilities","valueOfLabel","groupIndex","row","rowIndex","width","idx","totalAssets","totalLiabilities","netWorth","PFCashFlowCalculator","wages","dividends","socialsecurity","pensions","alimony","otherincome","charity","mortgage","autoloan","persloan","cc","fedtaxes","statetaxes","fica","retaxes","othertaxes","utilities","repairs","food","clothing","education","childcare","autoexp","transexp","lifeins","autoins","medical","entertain","travel","club","hobbies","gifts","homeimp","services","other","chunkArray","array","chunkSize","index","arrayLength","tempArray","chunk","slice","push","item","monthly","category","annual","PFPayDownDebtCalculator","debtInterestRate","interestDeductible","interestTaxable","monthlySurplus","PFStudentLoanCalculator","expectedIncome","InvestmentGrowthCalculator","initialBalance","annualSavings","btReturnTaxable","btReturnDeferred","btReturnFree","numberValidationMessage","validationYearMessage","taxBracketMessage","atReturnTaxable","fvTaxable","fvDeferred","fvFree","fvatTaxable","fvatDeferred","fvatFree","TableOfContents","anchorLinkSections","anchorLinkSection","Eyebrow","subtitle","anchorLinks","anchor","Link","to","activeClassName","Section","CalculatorSectionModule","pageTitle","sections","calcTips","md","section","sectionId","kebabCase","sectionTitle","listType","richBody","usePages","mortgagePage","urlPath","partiallyActive","autoPage","personalFinancePage","wealthManagementPage","calculatorsPage","children","StaticTemplate","i18n","navMenus","useStaticQuery","allContentfulNavigationMenu","edges","reduce","acc","edge","node_locale","content","navigationItems","internal","menu","JSON","parse","items","propTypes","PropTypes","location","createCompounder","result","word","toLowerCase","module","exports","Card","Disclaimer","Fieldset","withMargin","Legend","Submit","ShortMessage","TimesIcon","CheckIcon","HasAlert","Results","ResultsHeading","ResultsTableOverflow","ResultsTable","ResultsTableLeft","ResultsTableCenter","ResultsTableHeader","ResultsTableTotalLine","ExampleText"],"mappings":"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","file":"903fbb79a8c3df30e8cf7c8244643e0da4cd4573-0e0fe8018aed159d61dd.js","sourcesContent":["/* eslint-disable react/no-danger */\nimport PropTypes from 'prop-types'\nimport { Trans } from 'react-i18next'\nimport { Caption } from '../typography/Caption'\nimport * as styles from './CalculatorModule.module.scss'\n\nconst CalculatorModule = ({ calculator }) => {\n return (\n
\n
\n {calculator}\n \n \n This information may help you analyze your financial needs. It is based on information\n and assumptions provided by you regarding your goals, expectations and financial\n situation. The calculations do not infer that the company assumes any fiduciary duties.\n The calculations provided should not be construed as financial, legal or tax advice. In\n addition, such information should not be relied upon as the only source of information.\n This information is supplied from sources we believe to be reliable but we cannot\n guarantee its accuracy. Hypothetical illustrations may provide historical or current\n performance information. Past performance does not guarantee nor indicate future\n results.\n \n \n
\n
\n )\n}\n\nCalculatorModule.propTypes = {\n calculator: PropTypes.element.isRequired,\n}\n\nexport { CalculatorModule }\nexport default CalculatorModule\n","// Add commas to long numbers\nexport const formatNumber = num => {\n return num.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')\n}\n\n// Turn whole numbers into percentages\nexport const formatPercentage = value => {\n return value / 100\n}\n\n// Turn decimals into whole percentages\nexport const displayPercentage = value => {\n return value * 100\n}\n\n// Check to see if a rate is larger than another rate\nexport const compareRates = (rate1, rate2) => {\n if (parseFloat(rate2) > parseFloat(rate1)) {\n return true\n }\n return false\n}\n\n// Currency formatting\nconst currencyFormatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n})\n\nexport const formatCurrency = value => {\n return currencyFormatter.format(value)\n}\n\nexport const formatMonths = value => {\n return parseInt(value, 10)\n}\n","function computeTopOffset(node) {\n if (!node) {\n return 0\n }\n\n let rootNode = node\n let curtop = 0\n let curtopscroll = 0\n\n if (rootNode.offsetParent) {\n do {\n curtop += rootNode.offsetTop\n curtopscroll += rootNode.offsetParent ? rootNode.offsetParent.scrollTop : 0\n // eslint-disable-next-line no-cond-assign\n } while ((rootNode = rootNode.offsetParent))\n\n return curtop - curtopscroll\n }\n}\n\nexport default computeTopOffset\n","import { useEffect, useState } from 'react'\n\nconst useEnabledOnClient = () => {\n const [isDisabled, setIsDisabled] = useState(true)\n\n useEffect(() => {\n setIsDisabled(false)\n }, [])\n\n return isDisabled\n}\n\nexport default useEnabledOnClient\n","import { Fragment, useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage, formatNumber } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Select } from '../../select'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\n// allowable loan terms (in years)\nconst LOAN_TERMS = [10, 15, 20, 25, 30]\n\nconst validationSchema = {\n loanAmount: { min: 0 },\n interestRate: {\n // min: 0,\n // max: 40,\n },\n termMonths: {\n min: 1,\n max: 360,\n },\n propertyValue: {\n min: 0,\n max: 999999999,\n },\n propertyTaxes: {\n min: 0,\n max: 999999999,\n },\n hazardInsurance: {\n min: 0,\n max: 999999999,\n },\n pmi: {\n min: 0,\n max: 999999999,\n },\n}\n\nconst MonthlyPaymentCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [disabledField, setDisabledField] = useState(true)\n const [calcResults, setCalcResults] = useState()\n const [storedFormData, setStoredFormData] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n loanAmount: 0,\n interestRate: 6,\n termMonths: 360,\n propertyValue: 0,\n propertyTaxes: 0,\n hazardInsurance: 0,\n amortization: 2,\n pmi: 0,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setStoredFormData(formData)\n\n try {\n const url = 'https://www.calcxml.com/rest/hom03'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Hom03JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n loanAmount: formData.loanAmount,\n interestRate: formatPercentage(formData.interestRate),\n termMonths: formData.termMonths,\n amortization: formData.amortization,\n propertyValue: formData.propertyValue,\n estimateTipmi: formData.estimateTipmi,\n propertyTaxes: formData.propertyTaxes,\n hazardInsurance: formData.hazardInsurance,\n pmi: formData.pmi,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('MonthlyPayment.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n const setDisabledFields = e => {\n if (e.target.value === 'N') {\n setDisabledField(false)\n } else {\n setDisabledField(true)\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('MonthlyPayment.firstLegend', {\n defaultValue: 'Mortgage loan information',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n {LOAN_TERMS.map(years => (\n {years}\n ))}\n \n \n \n \n \n {t('MonthlyPayment.amortization.yearly', {\n defaultValue: 'Yearly',\n })}\n \n \n {t('MonthlyPayment.amortization.monthly', {\n defaultValue: 'Monthly',\n })}\n \n \n \n \n
\n\n
\n \n {t('MonthlyPayment.secondLegend', {\n defaultValue: 'Property information',\n })}\n \n \n \n \n \n\n \n \n \n {t('MonthlyPayment.estimateTipmiOptions.yes', {\n defaultValue: 'Yes',\n })}\n \n \n {t('MonthlyPayment.estimateTipmiOptions.no', {\n defaultValue: 'No',\n })}\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n
\n\n \n \n {t('MonthlyPayment.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('MonthlyPayment.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('MonthlyPayment.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('MonthlyPayment.resultHeadline', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('MonthlyPayment.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('MonthlyPayment.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n {t('MonthlyPayment.loanInformation', {\n defaultValue: 'Loan information',\n })}\n
\n {t('MonthlyPayment.LoanAmount', {\n defaultValue: 'Loan amount',\n })}\n ${formatNumber(storedFormData.loanAmount)}
\n {t('MonthlyPayment.AnnualInterestRate', {\n defaultValue: 'Annual interest rate',\n })}\n {storedFormData.interestRate}%
\n {t('MonthlyPayment.numberOfMonths', {\n defaultValue: 'Number of months',\n })}\n {storedFormData.termMonths}
\n {t('MonthlyPayment.monthlyPrincipalInterestPayment', {\n defaultValue: 'Monthly principal and interest payment',\n })}\n {calcResults.pandi}
\n {t('MonthlyPayment.monthlyPropertyTaxes', {\n defaultValue: 'Monthly property taxes',\n })}\n {calcResults.monthlyTaxes}
\n {t('MonthlyPayment.monthlyHazardInsurance', {\n defaultValue: 'Monthly hazard insurance',\n })}\n {calcResults.monthlyInsurance}
\n {t('MonthlyPayment.monthlyPMI', {\n defaultValue: 'Monthly PMI (if applicable)',\n })}\n {calcResults.monthlyPmi}
\n {t('MonthlyPayment.totalMonthlyPayment', {\n defaultValue:\n 'Total monthly payment (including taxes, insurance, and PMI if applicable)',\n })}\n {calcResults.pandiTipmi}
\n\n \n {t('MonthlyPayment.graph', {\n defaultValue: 'Graph',\n })}\n \n \n\n {calcResults.year && calcResults.year.length > 0 && (\n \n \n {t('MonthlyPayment.amortizationTable', {\n defaultValue: 'Amortization Table',\n })}\n \n\n \n \n {t('MonthlyPayment.amortizationTable', {\n defaultValue: 'Amortization Table',\n })}\n \n\n \n \n \n {storedFormData.amortization === '2'\n ? t('MonthlyPayment.year', {\n defaultValue: 'Year',\n })\n : t('MonthlyPayment.month', {\n defaultValue: 'Month',\n })}\n \n \n {t('MonthlyPayment.beginningBalance', {\n defaultValue: 'Beginning Balance',\n })}\n \n \n {t('MonthlyPayment.principal', {\n defaultValue: 'Principal',\n })}\n \n \n {t('MonthlyPayment.interest', {\n defaultValue: 'Interest',\n })}\n \n \n {t('MonthlyPayment.payment', {\n defaultValue: 'Payment',\n })}\n \n \n {t('MonthlyPayment.endingBalance', {\n defaultValue: 'Ending Balance',\n })}\n \n \n\n {calcResults.year.map(year => (\n \n {year.period}\n {year.beginningBalance}\n {year.principal}\n {year.interest}\n {year.payment}\n {year.endingBalance}\n \n ))}\n \n \n \n )}\n
\n )}\n
\n )\n}\n\nexport { MonthlyPaymentCalculator }\nexport default MonthlyPaymentCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport { formatPercentage } from '../utils'\nimport formatError from '../../../utilities/formatError'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Select } from '../../select'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n rent: { min: 0, max: 999999999 },\n fees: { min: 0, max: 999999999 },\n rentIns: { min: 0, max: 999999999 },\n rentIncr: { min: 0, max: 10 },\n purchase: { min: 0, max: 999999999 },\n growth: { min: 0, max: 10 },\n realtorFees: { min: 0, max: 100 },\n loan: { min: 0, max: 999999999 },\n rate: { min: 0, max: 40 },\n term: { min: 1, max: 40 },\n closingCosts: { min: 0, max: 999999999 },\n homeowners: { min: 0, max: 999999999 },\n taxes: { min: 0, max: 999999999 },\n maint: { min: 0, max: 999999999 },\n analysis: { min: 1, max: 30 },\n taxBracket: { min: 0, max: 75 },\n beforeTaxReturn: { min: -12, max: 12 },\n inf: { min: 0, max: 10 },\n}\n\nconst RentOrBuyCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n rent: 0,\n fees: 0,\n rentIns: 0,\n rentIncr: 0,\n purchase: 0,\n growth: 5,\n realtorFees: 6,\n loan: 0,\n rate: 5,\n term: 30,\n closingCosts: 3,\n homeowners: 0,\n taxes: 0,\n maint: 0,\n analysis: 30,\n taxBracket: 22,\n beforeTaxReturn: 8,\n inf: 3.5,\n standardDeduction: 'Y',\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n\n try {\n const url = 'https://www.calcxml.com/rest/hom06'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Hom06JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n rent: formData.rent,\n fees: formData.fees,\n rentIns: formData.rentIns,\n rentIncr: formatPercentage(formData.rentIncr),\n purchase: formData.purchase,\n growth: formatPercentage(formData.growth),\n realtorFees: formatPercentage(formData.realtorFees),\n loan: formData.loan,\n rate: formatPercentage(formData.rate),\n term: formData.term,\n closingCosts: formData.closingCosts,\n homeowners: formData.homeowners,\n taxes: formData.taxes,\n maint: formData.maint,\n analysis: formData.analysis,\n taxBracket: formatPercentage(formData.taxBracket),\n beforeTaxReturn: formatPercentage(formData.beforeTaxReturn),\n inf: formatPercentage(formData.inf),\n standardDeduction: formData.standardDeduction,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('RentOrBuyCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('RentOrBuyCalculator.firstLegend', {\n defaultValue: 'Rent assumptions',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n\n
\n \n {t('RentOrBuyCalculator.secondLegend', {\n defaultValue: 'Purchase assumptions',\n })}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n\n
\n \n {t('RentOrBuyCalculator.thirdLegend', {\n defaultValue: 'Other assumptions',\n })}\n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n {t('RentOrBuyCalculator.standardDeductionOptions.no', {\n defaultValue: 'No, I itemize',\n })}\n \n \n {t('RentOrBuyCalculator.standardDeductionOptions.yes', {\n defaultValue: 'Yes',\n })}\n \n \n \n \n
\n\n \n \n {t('RentOrBuyCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('RentOrBuyCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n {alert && alert.type === 'success' && (\n \n \n {t('RentOrBuyCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('RentOrBuyCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n \n {t('RentOrBuyCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('RentOrBuyCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n {t('RentOrBuyCalculator.rentVsBuy', {\n defaultValue: 'Rent vs. buy analysis',\n })}\n \n {t('RentOrBuyCalculator.rent', {\n defaultValue: 'Rent',\n })}\n \n {t('RentOrBuyCalculator.buy', {\n defaultValue: 'Buy',\n })}\n
\n {t('RentOrBuyCalculator.rentAndFees', {\n defaultValue: 'Rent and fees',\n })}\n \n {calcResults.rentTotal}\n
\n {t('RentOrBuyCalculator.mortgagePayments', {\n defaultValue: 'Mortgage payments',\n })}\n \n \n {calcResults.paymentsTotal}
\n {t('RentOrBuyCalculator.closingCosts', {\n defaultValue: 'Closing costs',\n })}\n +\n {calcResults.closingCostsTotal}
\n {t('RentOrBuyCalculator.propertyInsurance', {\n defaultValue: 'Property insurance',\n })}\n +\n {calcResults.insuranceTotal}
\n {t('RentOrBuyCalculator.propertyTaxes', {\n defaultValue: 'Property taxes',\n })}\n +\n {calcResults.taxesTotal}
\n {t('RentOrBuyCalculator.maintenance', {\n defaultValue: 'Maintenance',\n })}\n +\n {calcResults.maintenanceTotal}
\n {t('RentOrBuyCalculator.opportunityCost', {\n defaultValue: 'Opportunity cost (tied-up equity)',\n })}\n +\n {calcResults.oppcostTotal}
\n {t('RentOrBuyCalculator.taxSavings', {\n defaultValue: 'Tax savings (interest/taxes)',\n })}\n -\n {calcResults.taxsavingsTotal}
\n {t('RentOrBuyCalculator.appreciation', {\n defaultValue: 'Appreciation',\n })}\n -\n {calcResults.appreciationTotal}
\n {t('RentOrBuyCalculator.principalReduction', {\n defaultValue: 'Principal reduction',\n })}\n -\n {calcResults.principalTotal}
\n {t('RentOrBuyCalculator.realtorFeesOnFutureSale', {\n defaultValue: 'Realtor fees on future sale',\n })}\n +\n {calcResults.realtorFeesTotal}
\n {t('RentOrBuyCalculator.totalCost', {\n defaultValue: 'Total cost',\n })}\n ={calcResults.totalcostRent}{calcResults.totalcostBuy}
\n {t('RentOrBuyCalculator.presentValueAtInflation', {\n defaultValue: 'Present value at inflation',\n })}\n \n {calcResults.pvtotalcostRent}{calcResults.pvtotalcostBuy}
\n {t('RentOrBuyCalculator.difference', {\n defaultValue: 'Difference',\n })}\n \n \n {calcResults.difference}
\n\n \n {t('RentOrBuyCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { RentOrBuyCalculator }\nexport default RentOrBuyCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage, formatNumber } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n homeValue: { min: 0, max: 999999999 },\n mortgageBalance: { min: 0, max: 999999999 },\n ltv: { min: 0, max: 90 },\n}\n\nconst HomeEquityCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [storedFormData, setStoredFormData] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n homeValue: 0,\n mortgageBalance: 0,\n ltv: 75,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setStoredFormData(formData)\n\n try {\n const url = 'https://www.calcxml.com/rest/hom14'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Hom14JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n homeValue: formData.homeValue,\n mortgageBalance: formData.mortgageBalance,\n ltv: formatPercentage(formData.ltv),\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('HomeEquityCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('HomeEquityCalculator.assumptions', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n
\n\n \n \n {t('HomeEquityCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('HomeEquityCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('HomeEquityCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('HomeEquityCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('HomeEquityCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('HomeEquityCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n {`${Number(storedFormData.ltv) - 10}%`}{`${Number(storedFormData.ltv) - 5}%`}{`${storedFormData.ltv}%`}{`${Number(storedFormData.ltv) + 5}%`}{`${Number(storedFormData.ltv) + 10}%`}
\n {t('HomeEquityCalculator.homeValue', {\n defaultValue: 'Home value',\n })}\n ${formatNumber(storedFormData.homeValue)}${formatNumber(storedFormData.homeValue)}${formatNumber(storedFormData.homeValue)}${formatNumber(storedFormData.homeValue)}${formatNumber(storedFormData.homeValue)}
\n {t('HomeEquityCalculator.TotalLoanToValue', {\n defaultValue: 'Total loan-to-value (LTV)',\n })}\n {calcResults.ltvCol1}{calcResults.ltvCol2}{calcResults.ltvCol3}{calcResults.ltvCol4}{calcResults.ltvCol5}
\n {t('HomeEquityCalculator.LessCurrentMortgageBalance', {\n defaultValue: 'Less: current mortgage balance',\n })}\n ${formatNumber(storedFormData.mortgageBalance)}${formatNumber(storedFormData.mortgageBalance)}${formatNumber(storedFormData.mortgageBalance)}${formatNumber(storedFormData.mortgageBalance)}${formatNumber(storedFormData.mortgageBalance)}
\n {t('HomeEquityCalculator.EqualsAdditionalLineOfCredit', {\n defaultValue: 'Equals: additional line of credit',\n })}\n {calcResults.lineCol1}{calcResults.lineCol2}{calcResults.lineCol3}{calcResults.lineCol4}{calcResults.lineCol5}
\n\n \n {t('HomeEquityCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { HomeEquityCalculator }\nexport default HomeEquityCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Select } from '../../select'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\n// allowable loan terms (in years)\nconst LOAN_TERMS = [10, 15, 20, 25, 30]\n\nconst validationSchema = {\n loanAmount: { min: 0 },\n interestRate: {\n min: 0,\n max: 40,\n },\n currentTerm: {\n min: 1,\n max: 360,\n },\n refinanceRate: {\n min: 0,\n max: 40,\n },\n refinanceTerm: {\n min: 1,\n max: 360,\n },\n originationFee: {\n min: 0,\n max: 5,\n },\n discountPoints: {\n min: 0,\n max: 5,\n },\n refinanceFees: {\n min: 0,\n max: 999999999,\n },\n}\n\nconst RefinanceCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n loanAmount: 0,\n interestRate: 5,\n currentTerm: 360,\n refinanceRate: 3.5,\n refinanceTerm: 360,\n originationFee: 1,\n discountPoints: 0,\n refinanceFees: 2500,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n\n try {\n const url = 'https://www.calcxml.com/rest/hom02'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Hom02JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n loanAmount: formData.loanAmount,\n interestRate: formatPercentage(formData.interestRate),\n currentTerm: formData.currentTerm,\n refinanceRate: formatPercentage(formData.refinanceRate),\n refinanceTerm: formData.refinanceTerm,\n originationFee: formatPercentage(formData.originationFee),\n discountPoints: formatPercentage(formData.discountPoints),\n refinanceFees: formData.refinanceFees,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('RefinanceCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('RefinanceCalculator.firstLegend', {\n defaultValue: 'Current loan information',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n
\n\n
\n \n {t('RefinanceCalculator.secondLegend', {\n defaultValue: 'Proposed loan information',\n })}\n \n \n \n \n \n\n \n \n {LOAN_TERMS.map(years => (\n {years}\n ))}\n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n
\n\n \n \n {t('RefinanceCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('RefinanceCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('RefinanceCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('RefinanceCalculator.resutls', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n

{calcResults.responseText2}

\n

{calcResults.responseText3}

\n\n \n {t('RefinanceCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('RefinanceCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n \n {t('RefinanceCalculator.currentMortgage', {\n defaultValue: 'Current mortgage',\n })}\n \n {t('RefinanceCalculator.traditionalRefinance', {\n defaultValue: 'Traditional refinance',\n })}\n \n {t('RefinanceCalculator.enhancedRefinance', {\n defaultValue: 'Enhanced refinance',\n })}\n
\n {t('RefinanceCalculator.term', {\n defaultValue: 'Term',\n })}\n {calcResults.currentTerm0}{calcResults.traditionalTerm}{calcResults.enhancedTerm}
\n {t('RefinanceCalculator.payment', {\n defaultValue: 'Payment',\n })}\n {calcResults.currentPayment}{calcResults.traditionalPayment}{calcResults.enhancedPayment}
\n {t('RefinanceCalculator.breakeven', {\n defaultValue: 'Breakeven',\n })}\n \n {t('RefinanceCalculator.na', {\n defaultValue: 'N/A',\n })}\n {calcResults.traditionalBreakeven}{calcResults.enhancedBreakeven}
\n {t('RefinanceCalculator.totalInterest', {\n defaultValue: 'Total interest',\n })}\n {calcResults.currentInterest}{calcResults.traditionalInterest}{calcResults.enhancedInterest}
\n\n \n {t('RefinanceCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { RefinanceCalculator }\nexport default RefinanceCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Select } from '../../select'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n loanAmount: { min: 0, max: 750000 },\n interestRate: {\n min: 0,\n max: 40,\n },\n termMonths: {\n min: 1,\n max: 360,\n },\n taxBracket: {\n min: 0,\n max: 75,\n },\n amortization: {},\n}\n\nconst TaxSavingsCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [storedFormData, setStoredFormData] = useState()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n loanAmount: 0,\n interestRate: 5,\n termMonths: 360,\n taxBracket: 75,\n amortization: 1,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setStoredFormData(formData)\n\n try {\n const url = 'https://www.calcxml.com/rest/hom09'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Hom09JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n loanAmount: formData.loanAmount,\n interestRate: formatPercentage(formData.interestRate),\n termMonths: formData.termMonths,\n taxBracket: formatPercentage(formData.taxBracket),\n amortization: formData.amortization,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('TaxSavingsCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('TaxSavingsCalculator.firstLegend', {\n defaultValue: 'Loan information',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n
\n\n
\n \n {t('TaxSavingsCalculator.secondLegend', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n {t('TaxSavingsCalculator.termMonthsExampleText', {\n defaultValue: 'Common terms are 360 months (30 years) and 180 months (15 years)',\n })}\n \n \n \n \n \n {t('TaxSavingsCalculator.amortizationOptions.yearly', {\n defaultValue: 'Yearly',\n })}\n \n \n {t('TaxSavingsCalculator.amortizationOptions.monthly', {\n defaultValue: 'Monthly',\n })}\n \n \n \n \n
\n\n \n \n {t('TaxSavingsCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('TaxSavingsCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('TaxSavingsCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('TaxSavingsCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n

{calcResults.responseText2}

\n

{calcResults.responseText3}

\n\n \n {t('TaxSavingsCalculator.detailedDataTable', {\n defaultValue: 'Detailed data table',\n })}\n \n\n
\n \n \n \n \n \n \n \n \n \n \n \n {calcResults.year.map(year => (\n \n \n \n \n \n \n \n \n ))}\n \n
\n {t('TaxSavingsCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n {t('TaxSavingsCalculator.year', {\n defaultValue: 'Year',\n })}\n \n {t('TaxSavingsCalculator.beginningBalance', {\n defaultValue: 'Beginning balance',\n })}\n \n {t('TaxSavingsCalculator.interest', {\n defaultValue: 'Interest',\n })}{' '}\n @ {storedFormData.interestRate}%\n \n {t('TaxSavingsCalculator.payment', {\n defaultValue: 'Payment',\n })}\n \n {t('TaxSavingsCalculator.endingBalance', {\n defaultValue: 'Ending balance',\n })}\n \n {t('TaxSavingsCalculator.taxSavings', {\n defaultValue: 'Tax savings',\n })}\n
{year.period}{year.beginningBalance}{year.interest}{year.payment}{year.endingBalance}{year.taxSavings}
\n
\n\n \n {t('TaxSavingsCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { TaxSavingsCalculator }\nexport default TaxSavingsCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Select } from '../../select'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n purchasePrice: {\n min: 0,\n max: 999999999,\n },\n cashRebate: {\n min: 0,\n max: 999999999,\n },\n tradeIn: {\n min: 0,\n max: 999999999,\n },\n tradeInOwed: {\n min: 0,\n max: 999999999,\n },\n downPayment: {\n min: 0,\n max: 999999999,\n },\n interestRate: {\n min: 0,\n max: 40,\n },\n termMonths: {\n min: 1,\n max: 360,\n },\n amortization: {},\n}\n\nconst AutoMonthlyPaymentCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [tableFormat, setTableFormat] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n purchasePrice: 0,\n cashRebate: 0,\n tradeIn: 0,\n tradeInOwed: 0,\n downPayment: 0,\n interestRate: 7,\n termMonths: 48,\n amortization: 2,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setTableFormat(formData.amortization)\n\n try {\n const url = 'https://www.calcxml.com/rest/aut03'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Aut03JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n purchasePrice: formData.purchasePrice,\n cashRebate: formData.cashRebate,\n tradeIn: formData.tradeIn,\n tradeInOwed: formData.tradeInOwed,\n downPayment: formData.downPayment,\n interestRate: formatPercentage(formData.interestRate),\n termMonths: formData.termMonths,\n amortization: formData.amortization,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('AutoMonthlyPaymentCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('AutoMonthlyPaymentCalculator.firstLegend', {\n defaultValue: 'Loan amount',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n
\n\n
\n \n {t('AutoMonthlyPaymentCalculator.secondLegend', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n {t('AutoMonthlyPaymentCalculator.amortizationOptions.yearly', {\n defaultValue: 'Yearly',\n })}\n \n \n {t('AutoMonthlyPaymentCalculator.amortizationOptions.monthly', {\n defaultValue: 'Monthly',\n })}\n \n \n \n \n
\n\n \n \n {t('AutoMonthlyPaymentCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('AutoMonthlyPaymentCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('AutoMonthlyPaymentCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('AutoMonthlyPaymentCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('AutoMonthlyPaymentCalculator.detailedDataTable', {\n defaultValue: 'Detailed data table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n {calcResults.year.map(year => (\n \n \n \n \n \n \n \n ))}\n \n
\n {t('AutoMonthlyPaymentCalculator.detailedDataTable', {\n defaultValue: 'Detailed data table',\n })}\n
\n {tableFormat === '1' &&\n t('AutoMonthlyPaymentCalculator.month', {\n defaultValue: 'Month',\n })}\n {tableFormat === '2' &&\n t('AutoMonthlyPaymentCalculator.year', {\n defaultValue: 'Year',\n })}\n \n {t('AutoMonthlyPaymentCalculator.beginningBalance', {\n defaultValue: 'Beginning balance',\n })}\n \n {t('AutoMonthlyPaymentCalculator.interest', {\n defaultValue: 'Interest',\n })}\n \n {t('AutoMonthlyPaymentCalculator.payment', {\n defaultValue: 'Payment',\n })}\n \n {t('AutoMonthlyPaymentCalculator.endingBalance', {\n defaultValue: 'Ending balance',\n })}\n
{year.period}{year.beginningBalance}{year.interest}{year.payment}{year.endingBalance}
\n\n \n {t('AutoMonthlyPaymentCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { AutoMonthlyPaymentCalculator }\nexport default AutoMonthlyPaymentCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n downPayment: {\n min: 0,\n max: 999999999,\n },\n monthlyPayment: {\n min: 0,\n max: 999999999,\n },\n interestRate: {\n min: 0,\n max: 40,\n },\n termMonths: {\n min: 1,\n max: 360,\n },\n}\n\nconst AutoAffordCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n downPayment: 0,\n monthlyPayment: 0,\n interestRate: 7,\n termMonths: 48,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n\n try {\n const url = 'https://www.calcxml.com/rest/aut06'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Aut06JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n downPayment: formData.downPayment,\n monthlyPayment: formData.monthlyPayment,\n interestRate: formatPercentage(formData.interestRate),\n termMonths: formData.termMonths,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('AutoAffordCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('AutoAffordCalculator.firstLegend', {\n defaultValue: 'Loan Amount',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n\n \n \n {t('AutoAffordCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('AutoAffordCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('AutoAffordCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('AutoAffordCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n
\n )}\n
\n )\n}\n\nexport { AutoAffordCalculator }\nexport default AutoAffordCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\n// import { useEffect } from '@storybook/addons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage, formatNumber } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n downPayment: {\n min: 0,\n max: 999999999,\n },\n termMonths: {\n min: 1,\n max: 360,\n },\n rebate: {\n min: 0,\n max: 999999999,\n },\n leasePayment: {\n min: 0,\n max: 999999999,\n },\n leaseDeposit: {\n min: 0,\n max: 999999999,\n },\n purchasePrice: {\n min: 0,\n max: 999999999,\n },\n salesTax: {\n min: 0,\n max: 75,\n },\n purchaseCosts: {\n min: 0,\n max: 999999999,\n },\n loanRate: {\n min: 0,\n max: 40,\n },\n residualValue: {\n min: 0,\n max: 999999999,\n },\n}\n\nconst AutoLeaseCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [storedFormData, setStoredFormData] = useState()\n // Our API doesn't support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n downPayment: 0,\n termMonths: 36,\n rebate: 0,\n leasePayment: 0,\n leaseDeposit: 0,\n purchasePrice: 0,\n salesTax: 5,\n purchaseCosts: 0,\n loanRate: 6,\n residualValue: 0,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setStoredFormData(formData)\n\n try {\n const url = 'https://www.calcxml.com/rest/aut01'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Aut01JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n downPayment: formData.downPayment,\n termMonths: formData.termMonths,\n rebate: formData.rebate,\n leasePayment: formData.leasePayment,\n leaseDeposit: formData.leaseDeposit,\n purchasePrice: formData.purchasePrice,\n salesTax: formatPercentage(formData.salesTax),\n purchaseCosts: formData.purchaseCosts,\n loanRate: formatPercentage(formData.loanRate),\n residualValue: formData.residualValue,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('AutoLeaseCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('AutoLeaseCalculator.firstLegend', {\n defaultValue: 'Common assumptions',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n
\n\n
\n \n {t('AutoLeaseCalculator.secondLegend', {\n defaultValue: 'Lease information',\n })}\n \n \n \n \n \n\n \n \n \n \n
\n\n
\n \n {t('AutoLeaseCalculator.thirdLegend', {\n defaultValue: 'Purchase information',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n
\n\n \n \n {t('AutoLeaseCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('AutoLeaseCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('AutoLeaseCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('AutoLeaseCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('AutoLeaseCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('AutoLeaseCalculator.summaryTable', {\n defaultValue: 'Lease Summary table',\n })}\n
\n {t('AutoLeaseCalculator.costOfLeasing', {\n defaultValue: 'Cost of leasing',\n })}\n
\n {t('AutoLeaseCalculator.totalPayments', {\n defaultValue: 'Total payments',\n })}\n \n {calcResults.totalLeasePayments}
\n {t('AutoLeaseCalculator.securityDepositLeasingFee', {\n defaultValue: 'Security deposit/leasing fee',\n })}\n + ${formatNumber(storedFormData.leaseDeposit)}
\n {t('AutoLeaseCalculator.downPayment', {\n defaultValue: 'Down payment (capital reduction)',\n })}\n + ${formatNumber(storedFormData.downPayment)}
\n {t('AutoLeaseCalculator.rebate', {\n defaultValue: 'Rebate',\n })}\n - ${formatNumber(storedFormData.rebate)}
\n \n {t('AutoLeaseCalculator.totalCostLease', {\n defaultValue: 'Total cost of lease',\n })}\n \n = {calcResults.totalLease}
\n {t('AutoLeaseCalculator.averageYearlyCostLease', {\n defaultValue: 'Average yearly cost of lease',\n })}\n \n {calcResults.yearlyLease}
\n \n \n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('AutoLeaseCalculator.summaryTable', {\n defaultValue: 'Purchas Summary table',\n })}\n
\n {t('AutoLeaseCalculator.purchasingCost', {\n defaultValue: 'Cost of purchasing',\n })}\n
\n {t('AutoLeaseCalculator.purchasePrice', {\n defaultValue: 'Purchase price',\n })}\n \n ${formatNumber(storedFormData.purchasePrice)}
\n {t('AutoLeaseCalculator.salesTax', {\n defaultValue: 'Sales tax',\n })}\n + \n $\n {formatNumber(\n formatPercentage(storedFormData.salesTax) *\n parseFloat(storedFormData.purchasePrice)\n )}\n
\n {t('AutoLeaseCalculator.otherUpfrontCosts', {\n defaultValue: 'Other upfront costs',\n })}\n + ${formatNumber(storedFormData.purchaseCosts)}
\n {t('AutoLeaseCalculator.interest', {\n defaultValue: 'Interest',\n })}\n + {calcResults.interestPaid}
\n {t('AutoLeaseCalculator.rebate', {\n defaultValue: 'Rebate',\n })}\n - ${formatNumber(storedFormData.rebate)}
\n {t('AutoLeaseCalculator.marketValue', {\n defaultValue: 'Market value at end of loan term',\n })}\n - ${formatNumber(storedFormData.residualValue)}
\n \n {t('AutoLeaseCalculator.totalPurchasingCost', {\n defaultValue: 'Total cost of purchasing',\n })}\n \n = {calcResults.totalPurchase}
\n {t('AutoLeaseCalculator.averageYearlyCost', {\n defaultValue: 'Average yearly cost of purchasing',\n })}\n \n {calcResults.yearlyPurchase}
\n\n \n {t('AutoLeaseCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { AutoLeaseCalculator }\nexport default AutoLeaseCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatCurrency, formatMonths, formatPercentage, compareRates } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst AutoRefinanceCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [storedFormData, setStoredFormData] = useState()\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit, getValues } = useForm({\n mode: 'onBlur',\n defaultValues: {\n currentBalance: 0,\n currentRate: 7,\n currentPayment: 0,\n proposedRate: 5,\n },\n })\n\n const validationSchema = {\n currentBalance: {\n min: 0,\n max: 999999999,\n },\n currentRate: {\n min: 0,\n max: 40,\n },\n currentPayment: {\n min: 0,\n max: 999999999,\n },\n proposedRate: {\n min: 0,\n max: 40,\n validate: value =>\n compareRates(value, getValues('currentRate')) ||\n t('AutoRefinanceCalculator.proposedRateMessage', {\n defaultValue:\n \"The 'Proposed interest rate' must be less than or equal to the 'Current interest rate'\",\n }),\n },\n }\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setStoredFormData(formData)\n\n try {\n const url = 'https://www.calcxml.com/rest/aut07'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Aut07JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n currentBalance: formData.currentBalance,\n currentRate: formatPercentage(formData.currentRate),\n currentPayment: formData.currentPayment,\n proposedRate: formatPercentage(formData.proposedRate),\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: 'Error',\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('AutoRefinanceCalculator.firstLegend', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n\n \n \n {t('AutoRefinanceCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('AutoRefinanceCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('AutoRefinanceCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('AutoRefinanceCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('AutoRefinanceCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('AutoRefinanceCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n \n {t('AutoRefinanceCalculator.rate', {\n defaultValue: 'Rate',\n })}\n \n {t('AutoRefinanceCalculator.payment', {\n defaultValue: 'Payment',\n })}\n \n {t('AutoRefinanceCalculator.monthsRemaining', {\n defaultValue: 'Months remaining',\n })}\n \n {t('AutoRefinanceCalculator.interestRemaining', {\n defaultValue: 'Interest remaining',\n })}\n
\n {t('AutoRefinanceCalculator.current', {\n defaultValue: 'Current',\n })}\n {storedFormData.currentRate}%{formatCurrency(storedFormData.currentPayment)}{formatMonths(calcResults.currentMonths)}{formatCurrency(calcResults.currentInterest)}
\n {t('AutoRefinanceCalculator.proposed', {\n defaultValue: 'Proposed',\n })}\n {storedFormData.proposedRate}%{formatCurrency(calcResults.proposedPayment)}{formatMonths(calcResults.proposedMonths)}{formatCurrency(calcResults.proposedInterest)}
\n\n \n {t('AutoRefinanceCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { AutoRefinanceCalculator }\nexport default AutoRefinanceCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Select } from '../../select'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n loanAmount: {\n min: 0,\n max: 999999999,\n },\n interestRate: {\n min: 0,\n max: 40,\n },\n termMonths: {\n min: 1,\n max: 360,\n },\n amortization: {},\n}\n\nconst PFPaymentCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [tableFormat, setTableFormat] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n loanAmount: 0,\n downPayment: 0,\n interestRate: 0,\n termMonths: 60,\n amortization: 2,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setTableFormat(formData.amortization)\n\n try {\n const url = 'https://www.calcxml.com/rest/det03'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Det03JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n loanAmount: formData.loanAmount,\n interestRate: formatPercentage(formData.interestRate),\n termMonths: formData.termMonths,\n amortization: formData.amortization,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('PFPaymentCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('PFPaymentCalculator.firstLegend', {\n defaultValue: 'Loan information',\n })}\n \n \n \n \n \n\n \n \n \n \n
\n\n
\n \n {t('PFPaymentCalculator.secondLegend', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n\n \n \n \n {t('PFPaymentCalculator.amortizationOptions.yearly', {\n defaultValue: 'Yearly',\n })}\n \n \n {t('PFPaymentCalculator.amortizationOptions.monthly', {\n defaultValue: 'Monthly',\n })}\n \n \n {t('PFPaymentCalculator.amortizationOptions.biweekly', {\n defaultValue: 'Biweekly',\n })}\n \n \n \n \n
\n\n \n \n {t('PFPaymentCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('PFPaymentCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('PFPaymentCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('PFPaymentCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('PFPaymentCalculator.detailedDataTable', {\n defaultValue: 'Detailed data table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n {calcResults.year.map(year => (\n \n \n \n \n \n \n \n ))}\n \n
\n {t('PFPaymentCalculator.detailedDataTable', {\n defaultValue: 'Detailed data table',\n })}\n
\n {tableFormat === '2' &&\n t('PFPaymentCalculator.year', {\n defaultValue: 'Year',\n })}\n {tableFormat === '1' &&\n t('PFPaymentCalculator.month', {\n defaultValue: 'Month',\n })}\n\n {tableFormat === '3' &&\n t('PFPaymentCalculator.period', {\n defaultValue: 'Period',\n })}\n \n {t('PFPaymentCalculator.beginningBalance', {\n defaultValue: 'Beginning balance',\n })}\n \n {t('PFPaymentCalculator.interest', {\n defaultValue: 'Interest',\n })}\n \n {t('PFPaymentCalculator.payment', {\n defaultValue: 'Payment',\n })}\n \n {t('PFPaymentCalculator.endingBalance', {\n defaultValue: 'Ending balance',\n })}\n
{year.period}{year.beginningBalance}{year.interest}{year.payment}{year.endingBalance}
\n\n \n {t('PFPaymentCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { PFPaymentCalculator }\nexport default PFPaymentCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n interestRate: {\n min: 0,\n max: 40,\n },\n termYears: {\n min: 0,\n max: 40,\n },\n cc1Balance: {\n min: 0,\n max: 999999999,\n },\n cc1Rate: {\n min: 0,\n max: 40,\n },\n cc2Balance: {\n min: 0,\n max: 999999999,\n },\n cc2Rate: {\n min: 0,\n max: 40,\n },\n cc3Balance: {\n min: 0,\n max: 999999999,\n },\n cc3Rate: {\n min: 0,\n max: 40,\n },\n cc4Balance: {\n min: 0,\n max: 999999999,\n },\n cc4Rate: {\n min: 0,\n max: 40,\n },\n auto1Balance: {\n min: 0,\n max: 999999999,\n },\n auto1Rate: {\n min: 0,\n max: 40,\n },\n auto2Balance: {\n min: 0,\n max: 999999999,\n },\n auto2Rate: {\n min: 0,\n max: 40,\n },\n rvBalance: {\n min: 0,\n max: 999999999,\n },\n rvRate: {\n min: 0,\n max: 40,\n },\n other1Balance: {\n min: 0,\n max: 999999999,\n },\n other1Rate: {\n min: 0,\n max: 40,\n },\n other2Balance: {\n min: 0,\n max: 999999999,\n },\n other2Rate: {\n min: 0,\n max: 40,\n },\n other3Balance: {\n min: 0,\n max: 999999999,\n },\n other3Rate: {\n min: 0,\n max: 40,\n },\n}\n\nconst PFDebtConsolidationCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const creditCardLabel = t('PFDebtConsolidationCalculator.creditCard', {\n defaultValue: 'Credit card',\n })\n const autoLoanLabel = t('PFDebtConsolidationCalculator.autoLoan', {\n defaultValue: 'Auto loan',\n })\n const otherLoanLabel = t('PFDebtConsolidationCalculator.otherLoan', {\n defaultValue: 'Other loan',\n })\n const fieldGroups = [\n {\n label: `${creditCardLabel} 1 ($)`,\n fields: ['cc1Balance', 'cc1Payment', 'cc1Rate'],\n },\n {\n label: `${creditCardLabel} 2 ($)`,\n fields: ['cc2Balance', 'cc2Payment', 'cc2Rate'],\n },\n {\n label: `${creditCardLabel} 3 ($)`,\n fields: ['cc3Balance', 'cc3Payment', 'cc3Rate'],\n },\n {\n label: `${creditCardLabel} 4 ($)`,\n fields: ['cc4Balance', 'cc4Payment', 'cc4Rate'],\n },\n {\n label: `${autoLoanLabel} 1 ($)`,\n fields: ['auto1Balance', 'auto1Payment', 'auto1Rate'],\n },\n {\n label: `${autoLoanLabel} 2 ($)`,\n fields: ['auto2Balance', 'auto2Payment', 'auto2Rate'],\n },\n {\n label: t('PFDebtConsolidationCalculator.boatRVLoan', {\n defaultValue: 'Boat/RV loan ($)',\n }),\n fields: ['rvBalance', 'rvPayment', 'rvRate'],\n },\n {\n label: `${otherLoanLabel} 1 ($)`,\n fields: ['other1Balance', 'other1Payment', 'other1Rate'],\n },\n {\n label: `${otherLoanLabel} 2 ($)`,\n fields: ['other2Balance', 'other2Payment', 'other2Rate'],\n },\n {\n label: `${otherLoanLabel} 3 ($)`,\n fields: ['other3Balance', 'other3Payment', 'other3Rate'],\n },\n ]\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n interestRate: 6,\n termYears: 15,\n cc1Balance: 0,\n cc1Payment: 0,\n cc1Rate: 0,\n cc2Balance: 0,\n cc2Payment: 0,\n cc2Rate: 0,\n cc3Balance: 0,\n cc3Payment: 0,\n cc3Rate: 0,\n cc4Balance: 0,\n cc4Payment: 0,\n cc4Rate: 0,\n auto1Balance: 0,\n auto1Payment: 0,\n auto1Rate: 0,\n auto2Balance: 0,\n auto2Payment: 0,\n auto2Rate: 0,\n rvBalance: 0,\n rvPayment: 0,\n rvRate: 0,\n other1Balance: 0,\n other1Payment: 0,\n other1Rate: 0,\n other2Balance: 0,\n other2Payment: 0,\n other2Rate: 0,\n other3Balance: 0,\n other3Payment: 0,\n other3Rate: 0,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n\n try {\n const url = 'https://www.calcxml.com/rest/det06'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Det06JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n interestRate: formatPercentage(formData.interestRate),\n termYears: formData.termYears,\n cc1Balance: formData.cc1Balance,\n cc1Payment: formData.cc1Payment,\n cc1Rate: formatPercentage(formData.cc1Rate),\n cc2Balance: formData.cc2Balance,\n cc2Payment: formData.cc2Payment,\n cc2Rate: formatPercentage(formData.cc2Rate),\n cc3Balance: formData.cc3Balance,\n cc3Payment: formData.cc3Payment,\n cc3Rate: formatPercentage(formData.cc3Rate),\n cc4Balance: formData.cc4Balance,\n cc4Payment: formData.cc4Payment,\n cc4Rate: formatPercentage(formData.cc4Rate),\n auto1Balance: formData.auto1Balance,\n auto1Payment: formData.auto1Payment,\n auto1Rate: formatPercentage(formData.auto1Rate),\n auto2Balance: formData.auto2Balance,\n auto2Payment: formData.auto2Payment,\n auto2Rate: formatPercentage(formData.auto2Rate),\n rvBalance: formData.rvBalance,\n rvPayment: formData.rvPayment,\n rvRate: formatPercentage(formData.rvRate),\n other1Balance: formData.other1Balance,\n other1Payment: formData.other1Payment,\n other1Rate: formatPercentage(formData.other1Rate),\n other2Balance: formData.other2Balance,\n other2Payment: formData.other2Payment,\n other2Rate: formatPercentage(formData.other2Rate),\n other3Balance: formData.other3Balance,\n other3Payment: formData.other3Payment,\n other3Rate: formatPercentage(formData.other3Rate),\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('PFDebtConsolidationCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('PFDebtConsolidationCalculator.firstLegend', {\n defaultValue: 'Consolidated loan information',\n })}\n \n \n \n \n \n\n \n \n \n \n
\n\n
\n \n {t('PFDebtConsolidationCalculator.secondLegend', {\n defaultValue: 'Current debt information',\n })}\n \n \n \n \n \n \n \n \n \n \n \n {fieldGroups.map(group => (\n \n \n {group.fields.map(field => {\n const fieldName = field\n return (\n \n )\n })}\n \n ))}\n \n
\n {t('PFDebtConsolidationCalculator.tableCaption', {\n defaultValue: 'Current debt information table',\n })}\n
\n \n {t('PFDebtConsolidationCalculator.balance', {\n defaultValue: 'Balance',\n })}\n \n {t('PFDebtConsolidationCalculator.monthlyPayment', {\n defaultValue: 'Monthly payment',\n })}\n \n {t('PFDebtConsolidationCalculator.yearlyRate', {\n defaultValue: 'Yearly rate (0% to 40%)',\n })}\n
{group.label}\n \n
\n \n
\n
\n\n \n \n {t('PFDebtConsolidationCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('PFDebtConsolidationCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('PFDebtConsolidationCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('PFDebtConsolidationCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('PFDebtConsolidationCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('PFDebtConsolidationCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n {t('PFDebtConsolidationCalculator.currentDebtAnalysis', {\n defaultValue: 'Current debt analysis',\n })}\n \n {t('PFDebtConsolidationCalculator.value', {\n defaultValue: 'Value',\n })}\n
\n {t('PFDebtConsolidationCalculator.totalDebtBalance', {\n defaultValue: 'Total debt balance',\n })}\n {calcResults.debtBalance}
\n {t('PFDebtConsolidationCalculator.totalMonthlyPayments', {\n defaultValue: 'Total monthly payments',\n })}\n {calcResults.debtPayment}
\n {t('PFDebtConsolidationCalculator.totalRemainingInterest', {\n defaultValue: 'Total remaining interest to be paid',\n })}\n {calcResults.debtInterest}
\n {t('PFDebtConsolidationCalculator.totalNumberPaymentsRemainingInterest', {\n defaultValue: 'Total number of payments remaining: (longest loan)',\n })}\n {calcResults.debtTerm}
\n {t('PFDebtConsolidationCalculator.consolidatedLoanAnalysis', {\n defaultValue: 'Consolidated loan analysis',\n })}\n \n {t('PFDebtConsolidationCalculator.value', {\n defaultValue: 'Value',\n })}\n
\n {t('PFDebtConsolidationCalculator.proposedLoanAmount', {\n defaultValue: 'Proposed loan amount',\n })}\n {calcResults.consBalance}
\n {t('PFDebtConsolidationCalculator.requiredMonthlyPayment', {\n defaultValue: 'Required monthly payment',\n })}\n {calcResults.consPayment}
\n {t('PFDebtConsolidationCalculator.totalRemainingInterest', {\n defaultValue: 'Total remaining interest to be paid',\n })}\n {calcResults.consInterest}
\n {t('PFDebtConsolidationCalculator.totalNumberOfpaymentsRemainingFull', {\n defaultValue: 'Total number of payments remaining: (full term)',\n })}\n {calcResults.consTerm}
\n {t('PFDebtConsolidationCalculator.ApplyMonthlySavingsToLoan', {\n defaultValue: 'If you apply your monthly savings to the new loan',\n })}\n \n {t('PFDebtConsolidationCalculator.value', {\n defaultValue: 'Value',\n })}\n
\n {t('PFDebtConsolidationCalculator.MonthlySavingsAmount', {\n defaultValue: 'Monthly savings amount',\n })}\n {calcResults.recommendSavings}
\n {t('PFDebtConsolidationCalculator.totalTemainingInterestTobePaid', {\n defaultValue: 'Total remaining interest to be paid',\n })}\n {calcResults.recommendInterest}
\n {t('PFDebtConsolidationCalculator.totalNumberPaymentsRemaining', {\n defaultValue: 'Total number of payments remaining',\n })}\n {calcResults.recommendTerm}
\n\n \n {t('PFDebtConsolidationCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { PFDebtConsolidationCalculator }\nexport default PFDebtConsolidationCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n currentBalance1: {\n min: 0,\n max: 999999999,\n },\n currentRate1: {\n min: 0,\n max: 40,\n },\n currentBalance2: {\n min: 0,\n max: 999999999,\n },\n currentRate2: {\n min: 0,\n max: 40,\n },\n currentBalance3: {\n min: 0,\n max: 999999999,\n },\n currentRate3: {\n min: 0,\n max: 40,\n },\n currentBalance4: {\n min: 0,\n max: 999999999,\n },\n currentRate4: {\n min: 0,\n max: 40,\n },\n introRate: {\n min: 0,\n max: 40,\n },\n introTerm: {\n min: 0,\n max: 120,\n },\n regularRate: {\n min: 0,\n max: 40,\n },\n annualFee: {\n min: 0,\n max: 999999999,\n },\n transferFeePercent: {\n min: 0,\n max: 100,\n },\n transferFeeMaximum: {\n min: 0,\n max: 999999999,\n },\n}\n\nconst PFTransferCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n currentBalance1: 0,\n currentRate1: 0,\n currentBalance2: 0,\n currentRate2: 0,\n currentBalance3: 0,\n currentRate3: 0,\n currentBalance4: 0,\n currentRate4: 0,\n introRate: 0,\n introTerm: 0,\n regularRate: 0,\n annualFee: 0,\n transferFeePercent: 0,\n transferFeeMaximum: 0,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n\n try {\n const url = 'https://www.calcxml.com/rest/det11'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Det11JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n currentBalance1: formData.currentBalance1,\n currentRate1: formatPercentage(formData.currentRate1),\n currentBalance2: formData.currentBalance2,\n currentRate2: formatPercentage(formData.currentRate2),\n currentBalance3: formData.currentBalance3,\n currentRate3: formatPercentage(formData.currentRate3),\n currentBalance4: formData.currentBalance4,\n currentRate4: formatPercentage(formData.currentRate4),\n introRate: formatPercentage(formData.introRate),\n introTerm: formData.introTerm,\n regularRate: formatPercentage(formData.regularRate),\n annualFee: formData.annualFee,\n transferFeePercent: formatPercentage(formData.transferFeePercent),\n transferFeeMaximum: formData.transferFeeMaximum,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('PFTransferCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('PFTransferCalculator.firstLegend', {\n defaultValue: 'Current credit card(s)',\n })}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('PFTransferCalculator.tableCaption', {\n defaultValue: 'Current credit card(s) table',\n })}\n
\n \n {t('PFTransferCalculator.balance', {\n defaultValue: 'Balance',\n })}\n \n {t('PFTransferCalculator.rate', {\n defaultValue: 'Rate (0% to 40%)',\n })}\n
\n {t('PFTransferCalculator.creditCard', {\n defaultValue: 'Credit card',\n })}\n {' 1 ($)'}\n \n \n \n \n
\n {t('PFTransferCalculator.creditCard', {\n defaultValue: 'Credit card',\n })}\n {' 2 ($)'}\n \n \n \n \n
\n {t('PFTransferCalculator.creditCard', {\n defaultValue: 'Credit card',\n })}\n {' 3 ($)'}\n \n \n \n \n
\n {t('PFTransferCalculator.creditCard', {\n defaultValue: 'Credit card',\n })}\n {' 4 ($)'}\n \n \n \n \n
\n \n
\n
\n\n
\n \n {t('PFTransferCalculator.secondLegend', {\n defaultValue: 'New credit card',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n
\n\n \n \n {t('PFTransferCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('PFTransferCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('PFTransferCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('PFTransferCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('PFTransferCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { PFTransferCalculator }\nexport default PFTransferCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Select } from '../../select'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n ccBalance: {\n min: 0,\n max: 999999999,\n },\n ccRate: {\n min: 0,\n max: 40,\n },\n minpaymentRate: {\n min: 0,\n max: 10,\n },\n minpaymentAmount: {\n min: 0,\n max: 999999999,\n },\n skipPayment: {},\n additionalPayment: {\n min: 0,\n max: 999999999,\n },\n amortization: {},\n}\n\nconst PFPayoffCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [tableFormat, setTableFormat] = useState()\n const [storedFormData, setStoredFormData] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n ccBalance: 0,\n ccRate: 18,\n minpaymentRate: 2,\n minpaymentAmount: 25,\n skipPayment: 'N',\n additionalPayment: 0,\n amortization: 2,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setTableFormat(formData.amortization)\n setStoredFormData(formData)\n\n try {\n const url = 'https://www.calcxml.com/rest/det01'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Det01JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n ccBalance: formData.ccBalance,\n ccRate: formatPercentage(formData.ccRate),\n minpaymentRate: formatPercentage(formData.minpaymentRate),\n minpaymentAmount: formData.minpaymentAmount,\n skipPayment: formData.skipPayment,\n additionalPayment: formData.additionalPayment,\n amortization: formData.amortization,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('PFPayoffCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('PFPayoffCalculator.firstLegend', {\n defaultValue: 'Credit card or loan information',\n })}\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n
\n\n
\n \n {t('PFPayoffCalculator.assumptions', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {t('PFPayoffCalculator.skipPaymentOptions.no', {\n defaultValue: 'No',\n })}\n \n \n {t('PFPayoffCalculator.skipPaymentOptions.yes', {\n defaultValue: 'Yes',\n })}\n \n \n \n\n \n \n \n {t('PFPayoffCalculator.amortizationOptions.yearly', {\n defaultValue: 'Yearly',\n })}\n \n \n {t('PFPayoffCalculator.amortizationOptions.monthly', {\n defaultValue: 'Monthly',\n })}\n \n \n \n \n
\n\n \n \n {t('PFPayoffCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('PFPayoffCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('PFPayoffCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('PFPayoffCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('PFPayoffCalculator.detailedDataTable', {\n defaultValue: 'Detailed data table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n {calcResults.year.map(year => (\n \n \n \n \n \n \n \n ))}\n \n
\n {t('PFPayoffCalculator.detailedDataTable', {\n defaultValue: 'Detailed data table',\n })}\n
\n {tableFormat === '1' &&\n t('PFPayoffCalculator.month', {\n defaultValue: 'Month',\n })}\n {tableFormat === '2' &&\n t('PFPayoffCalculator.year', {\n defaultValue: 'Year',\n })}\n \n {t('PFPayoffCalculator.beginningBalance', {\n defaultValue: 'Beginning balance',\n })}\n \n {t('PFPayoffCalculator.interest', {\n defaultValue: 'Interest @ {{ percent }}%',\n percent: storedFormData.ccRate,\n })}\n \n {t('PFPayoffCalculator.payment', {\n defaultValue: 'Monthly Payment',\n })}\n \n {t('PFPayoffCalculator.endingBalance', {\n defaultValue: 'Ending balance',\n })}\n
{year.year}{year.beginningBalance}{year.interest}{year.payment}{year.endingBalance}
\n\n \n {t('PFPayoffCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { PFPayoffCalculator }\nexport default PFPayoffCalculator\n","import { Fragment, useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport { formatNumber } from '../utils'\nimport formatError from '../../../utilities/formatError'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n residence: {\n min: 0,\n max: 999999999,\n },\n vacation: {\n min: 0,\n max: 999999999,\n },\n furnishings: {\n min: 0,\n max: 999999999,\n },\n autos: {\n min: 0,\n max: 999999999,\n },\n realEstate: {\n min: 0,\n max: 999999999,\n },\n art: {\n min: 0,\n max: 999999999,\n },\n stocks: {\n min: 0,\n max: 999999999,\n },\n varAnnuities: {\n min: 0,\n max: 999999999,\n },\n limitedPartner: {\n min: 0,\n max: 999999999,\n },\n business: {\n min: 0,\n max: 999999999,\n },\n fixedAnnuities: {\n min: 0,\n max: 999999999,\n },\n trustDeeds: {\n min: 0,\n max: 999999999,\n },\n otherFixed: {\n min: 0,\n max: 999999999,\n },\n govtBonds: {\n min: 0,\n max: 999999999,\n },\n muniBonds: {\n min: 0,\n max: 999999999,\n },\n corpBonds: {\n min: 0,\n max: 999999999,\n },\n faceCertificates: {\n min: 0,\n max: 999999999,\n },\n debtMutuals: {\n min: 0,\n max: 999999999,\n },\n checking: {\n min: 0,\n max: 999999999,\n },\n savings: {\n min: 0,\n max: 999999999,\n },\n moneyMarket: {\n min: 0,\n max: 999999999,\n },\n cd: {\n min: 0,\n max: 999999999,\n },\n otherCash: {\n min: 0,\n max: 999999999,\n },\n homeMortgage: {\n min: 0,\n max: 999999999,\n },\n otherMortgage: {\n min: 0,\n max: 999999999,\n },\n autoLoan: {\n min: 0,\n max: 999999999,\n },\n bankLoan: {\n min: 0,\n max: 999999999,\n },\n personalLoan: {\n min: 0,\n max: 999999999,\n },\n creditCards: {\n min: 0,\n max: 999999999,\n },\n otherDebts: {\n min: 0,\n max: 999999999,\n },\n}\n\nconst PFNetWorthCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [storedFormData, setStoredFormData] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const fieldGroups = {\n assets: [\n {\n label: t('PFNetWorthCalculator.tangibleAssetsLabel', {\n defaultValue: 'Tangible assets',\n }),\n totalName: 'totalTangibleAssets',\n fields: [\n {\n label: t('PFNetWorthCalculator.residenceLabel', {\n defaultValue: 'Residence ($)',\n }),\n name: 'residence',\n },\n {\n label: t('PFNetWorthCalculator.vacationHomeLabel', {\n defaultValue: 'Vacation home ($)',\n }),\n name: 'vacation',\n },\n {\n label: t('PFNetWorthCalculator.furnishingsLabel', {\n defaultValue: 'Furnishings ($)',\n }),\n name: 'furnishings',\n },\n {\n label: t('PFNetWorthCalculator.automobilesLabel', {\n defaultValue: 'Automobiles ($)',\n }),\n name: 'autos',\n },\n {\n label: t('PFNetWorthCalculator.rentalRealEstateLabel', {\n defaultValue: 'Rental real estate ($)',\n }),\n name: 'realEstate',\n },\n {\n label: t('PFNetWorthCalculator.valuablesLabel', {\n defaultValue: 'Art, jewelry, and other valuables ($)',\n }),\n name: 'art',\n },\n ],\n },\n {\n label: t('PFNetWorthCalculator.equityAssetsLabel', {\n defaultValue: 'Equity assets',\n }),\n totalName: 'totalEquityAssets',\n fields: [\n {\n label: t('PFNetWorthCalculator.stocksLabel', {\n defaultValue: 'Stocks ($)',\n }),\n name: 'stocks',\n },\n {\n label: t('PFNetWorthCalculator.variableAnnuitiesLabel', {\n defaultValue: 'Variable annuities ($)',\n }),\n name: 'varAnnuities',\n },\n {\n label: t('PFNetWorthCalculator.limitedPartnershipLabel', {\n defaultValue: 'Limited partnerships ($)',\n }),\n name: 'limitedPartner',\n },\n {\n label: t('PFNetWorthCalculator.businessInterestsLabel', {\n defaultValue: 'Business interests ($)',\n }),\n name: 'business',\n },\n ],\n },\n {\n label: t('PFNetWorthCalculator.fixedPrincipalAssetsLabel', {\n defaultValue: 'Fixed-principal assets',\n }),\n totalName: 'totalFixedPrincipalAssets',\n fields: [\n {\n label: t('PFNetWorthCalculator.fixedDollarAnnuitiesLabel', {\n defaultValue: 'Fixed-dollar annuities ($)',\n }),\n name: 'fixedAnnuities',\n },\n {\n label: t('PFNetWorthCalculator.frustDeedsLabel', {\n defaultValue: 'Trust deeds ($)',\n }),\n name: 'trustDeeds',\n },\n {\n label: t('PFNetWorthCalculator.otherFixedPrincipalAssets', {\n defaultValue: 'Other fixed-principal assets ($)',\n }),\n name: 'otherFixed',\n },\n ],\n },\n {\n label: t('PFNetWorthCalculator.fixedRateAssets', {\n defaultValue: 'Fixed-rate assets',\n }),\n totalName: 'totalFixedRateAssets',\n fields: [\n {\n label: t('PFNetWorthCalculator.governmentBondsLabel', {\n defaultValue: 'U.S. government bonds and securities ($)',\n }),\n name: 'govtBonds',\n },\n {\n label: t('PFNetWorthCalculator.municipalBondsLabel', {\n defaultValue: 'Municipal bonds ($)',\n }),\n name: 'muniBonds',\n },\n {\n label: t('PFNetWorthCalculator.corporateBondsLabel', {\n defaultValue: 'Corporate bonds ($)',\n }),\n name: 'corpBonds',\n },\n {\n label: t('PFNetWorthCalculator.faceAmountCertificatesLabel', {\n defaultValue: 'Face-amount certificates ($)',\n }),\n name: 'faceCertificates',\n },\n {\n label: t('PFNetWorthCalculator.debtMutualFundsLabel', {\n defaultValue: 'Debt mutual funds ($)',\n }),\n name: 'debtMutuals',\n },\n ],\n },\n {\n label: t('PFNetWorthCalculator.cashAndCashEquivalents', {\n defaultValue: 'Cash and cash equivalents',\n }),\n totalName: 'totalCashAssets',\n fields: [\n {\n label: t('PFNetWorthCalculator.checkingAccountsLabel', {\n defaultValue: 'Checking accounts ($)',\n }),\n name: 'checking',\n },\n {\n label: t('PFNetWorthCalculator.savingsAccountsLabel', {\n defaultValue: 'Savings accounts ($)',\n }),\n name: 'savings',\n },\n {\n label: t('PFNetWorthCalculator.moneyMarketFundsLabel', {\n defaultValue: 'Money market funds ($)',\n }),\n name: 'moneyMarket',\n },\n {\n label: t('PFNetWorthCalculator.certificatesOfdepositLabel', {\n defaultValue: 'Certificates of deposit ($)',\n }),\n name: 'cd',\n },\n {\n label: t('PFNetWorthCalculator.otherCashReserveAccountsLabel', {\n defaultValue: 'Other cash reserve accounts ($)',\n }),\n name: 'otherCash',\n },\n ],\n },\n ],\n liabilities: [\n {\n label: t('PFNetWorthCalculator.liabilitiesLabel', {\n defaultValue: 'Liabilities',\n }),\n totalName: 'totalLiabilities',\n fields: [\n {\n label: t('PFNetWorthCalculator.homeMortgageLabel', {\n defaultValue: 'Home mortgage ($)',\n }),\n name: 'homeMortgage',\n },\n {\n label: t('PFNetWorthCalculator.otherMortgageLabel', {\n defaultValue: 'Other mortgage ($)',\n }),\n name: 'otherMortgage',\n },\n {\n label: t('PFNetWorthCalculator.automobileLoansLabel', {\n defaultValue: 'Automobile loans ($)',\n }),\n name: 'autoLoan',\n },\n {\n label: t('PFNetWorthCalculator.BankloansLabel', {\n defaultValue: 'Bank loans ($)',\n }),\n name: 'bankLoan',\n },\n {\n label: t('PFNetWorthCalculator.personalLoansLabel', {\n defaultValue: 'Personal loans ($)',\n }),\n name: 'personalLoan',\n },\n {\n label: t('PFNetWorthCalculator.ChargeAccountDebtLabel', {\n defaultValue: 'Charge account debt ($)',\n }),\n name: 'creditCards',\n },\n {\n label: t('PFNetWorthCalculator.otherDebtsLabel', {\n defaultValue: 'Other debts ($)',\n }),\n name: 'otherDebts',\n },\n ],\n },\n ],\n }\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n residence: 0,\n vacation: 0,\n furnishings: 0,\n autos: 0,\n realEstate: 0,\n art: 0,\n stocks: 0,\n varAnnuities: 0,\n limitedPartner: 0,\n business: 0,\n fixedAnnuities: 0,\n trustDeeds: 0,\n otherFixed: 0,\n govtBonds: 0,\n muniBonds: 0,\n corpBonds: 0,\n faceCertificates: 0,\n debtMutuals: 0,\n checking: 0,\n savings: 0,\n moneyMarket: 0,\n cd: 0,\n otherCash: 0,\n homeMortgage: 0,\n otherMortgage: 0,\n autoLoan: 0,\n bankLoan: 0,\n personalLoan: 0,\n creditCards: 0,\n otherDebts: 0,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setStoredFormData(formData)\n\n try {\n const url = 'https://www.calcxml.com/rest/bud07'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Bud07JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n residence: formData.residence,\n vacation: formData.vacation,\n furnishings: formData.furnishings,\n autos: formData.autos,\n realEstate: formData.realEstate,\n art: formData.art,\n stocks: formData.stocks,\n varAnnuities: formData.varAnnuities,\n limitedPartner: formData.limitedPartner,\n business: formData.business,\n fixedAnnuities: formData.fixedAnnuities,\n trustDeeds: formData.trustDeeds,\n otherFixed: formData.otherFixed,\n govtBonds: formData.govtBonds,\n muniBonds: formData.muniBonds,\n corpBonds: formData.corpBonds,\n faceCertificates: formData.faceCertificates,\n debtMutuals: formData.debtMutuals,\n checking: formData.checking,\n savings: formData.savings,\n moneyMarket: formData.moneyMarket,\n cd: formData.cd,\n otherCash: formData.otherCash,\n homeMortgage: formData.homeMortgage,\n otherMortgage: formData.otherMortgage,\n autoLoan: formData.autoLoan,\n bankLoan: formData.bankLoan,\n personalLoan: formData.personalLoan,\n creditCards: formData.creditCards,\n otherDebts: formData.otherDebts,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('PFNetWorthCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n const valueOfLabel = t('PFNetWorthCalculator.valueOf', {\n defaultValue: 'Value of',\n })\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n {fieldGroups.assets.map((group, groupIndex) => (\n
\n {group.label}\n \n \n \n \n \n \n \n \n {group.fields.map((row, rowIndex) => (\n \n \n \n \n ))}\n \n
\n {group.label}{' '}\n {t('PFNetWorthCalculator.table', {\n defaultValue: 'Table',\n })}\n
\n \n {t('PFNetWorthCalculator.value', {\n defaultValue: 'Value',\n })}\n
{row.label}\n \n
\n \n
\n
\n ))}\n\n {fieldGroups.liabilities.map(group => (\n
\n {group.label}\n \n \n \n \n \n \n \n \n {group.fields.map(row => (\n \n \n \n \n ))}\n \n
\n {group.label}{' '}\n {t('PFNetWorthCalculator.table', {\n defaultValue: 'Table',\n })}\n
\n \n {t('PFNetWorthCalculator.value', {\n defaultValue: 'Value',\n })}\n
{row.label}\n \n
\n \n
\n
\n ))}\n\n \n \n {t('PFNetWorthCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('PFNetWorthCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('PFNetWorthCalculator.calcualtionComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('PFNetWorthCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('PFNetWorthCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n {fieldGroups.assets.map((group, idx) => (\n \n {idx === 0 && (\n \n \n \n \n \n )}\n {idx > 0 && (\n \n \n \n )}\n {group.fields.map(row => (\n \n \n \n \n \n ))}\n \n \n \n \n \n \n ))}\n \n \n \n \n \n\n \n \n \n {fieldGroups.liabilities.map(group => (\n \n {group.fields.map(row => (\n \n \n \n \n \n ))}\n \n ))}\n \n \n \n \n \n\n \n \n \n \n \n
\n {t('PFNetWorthCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n {t('PFNetWorthCalculator.assets', {\n defaultValue: 'ASSETS',\n })}\n
\n {group.label}\n \n {t('PFNetWorthCalculator.amount', {\n defaultValue: 'Amount',\n })}\n \n {t('PFNetWorthCalculator.percent', {\n defaultValue: 'Percent',\n })}\n
\n {group.label}\n
{row.label.replace('($)', '')}${formatNumber(storedFormData[row.name])}{calcResults[`${row.name}Percent`]}%
\n {t('PFNetWorthCalculator.total', {\n defaultValue: 'Total',\n })}{' '}\n {group.label}\n {calcResults[group.totalName]}{calcResults[`${group.totalName}Percent`]}%
\n {t('PFNetWorthCalculator.totalAssets', {\n defaultValue: 'Total assets',\n })}\n {calcResults.totalAssets}100%
\n {t('PFNetWorthCalculator.liabilities', {\n defaultValue: 'LIABILITIES',\n })}\n
{row.label.replace('($)', '')}${formatNumber(storedFormData[row.name])}{calcResults[`${row.name}Percent`]}%
\n {t('PFNetWorthCalculator.totalLiabilities', {\n defaultValue: 'Total liabilities',\n })}\n {calcResults.totalLiabilities}100%
\n {t('PFNetWorthCalculator.netWorth', {\n defaultValue: 'NET WORTH',\n })}\n \n {calcResults.netWorth}\n \n
\n\n \n {t('PFNetWorthCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { PFNetWorthCalculator }\nexport default PFNetWorthCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { Stack } from '../../stack'\nimport { Select } from '../../select'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n residence: {\n min: 0,\n max: 999999999,\n },\n}\n\nconst PFCashFlowCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n mode: 0,\n wages: 0,\n interest: 0,\n dividends: 0,\n socialsecurity: 0,\n pensions: 0,\n alimony: 0,\n otherincome: 0,\n charity: 0,\n mortgage: 0,\n vacation: 0,\n autoloan: 0,\n persloan: 0,\n cc: 0,\n fedtaxes: 0,\n statetaxes: 0,\n fica: 0,\n retaxes: 0,\n othertaxes: 0,\n utilities: 0,\n repairs: 0,\n food: 0,\n clothing: 0,\n education: 0,\n childcare: 0,\n autoexp: 0,\n transexp: 0,\n lifeins: 0,\n homeowners: 0,\n autoins: 0,\n medical: 0,\n entertain: 0,\n travel: 0,\n club: 0,\n hobbies: 0,\n gifts: 0,\n homeimp: 0,\n services: 0,\n other: 0,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const fieldGroups = [\n {\n label: t('PFCashFlowCalculator.itemizedIncomeLabel', {\n defaultValue: 'Itemized income',\n }),\n fields: [\n {\n label: t('PFCashFlowCalculator.wagesSalaryTipsLabel', {\n defaultValue: 'Wages, salary and tips ($)',\n }),\n name: 'wages',\n },\n {\n label: t('PFCashFlowCalculator.interestSavingsAccountsLabel', {\n defaultValue: 'Interest on savings accounts, CDs, etc. ($)',\n }),\n name: 'interest',\n },\n {\n label: t('PFCashFlowCalculator.dividendsStocksLabel', {\n defaultValue: 'Dividends from stocks, etc. ($)',\n }),\n name: 'dividends',\n },\n {\n label: t('PFCashFlowCalculator.socialSecurityBenefitsLabel', {\n defaultValue: 'Social security benefits ($)',\n }),\n name: 'socialsecurity',\n },\n {\n label: t('PFCashFlowCalculator.PensionsLabel', {\n defaultValue: 'Pensions ($)',\n }),\n name: 'pensions',\n },\n {\n label: t('PFCashFlowCalculator.AlimonChildSupportLabel', {\n defaultValue: 'Alimony, child support (received) ($)',\n }),\n name: 'alimony',\n },\n {\n label: t('PFCashFlowCalculator.otherIncomeLabel', {\n defaultValue: 'Other income ($)',\n }),\n name: 'otherincome',\n },\n ],\n },\n {\n label: t('PFCashFlowCalculator.itemizedExpensesLabel', {\n defaultValue: 'Itemized expenses',\n }),\n fields: [\n {\n label: t('PFCashFlowCalculator.charitableChurchDonationsLabel', {\n defaultValue: 'Charitable/church donations',\n }),\n name: 'charity',\n },\n {\n label: t('PFCashFlowCalculator.mortgagePaymentRentLabel', {\n defaultValue: 'Mortgage payment or rent ($)',\n }),\n name: 'mortgage',\n },\n {\n label: t('PFCashFlowCalculator.vacationHomeMortgageLabel', {\n defaultValue: 'Vacation home (mortgage) ($)',\n }),\n name: 'vacation',\n },\n {\n label: t('PFCashFlowCalculator.automobileLoansLabel', {\n defaultValue: 'Automobile loan(s) ($)',\n }),\n name: 'autoloan',\n },\n {\n label: t('PFCashFlowCalculator.personalLoansLabel', {\n defaultValue: 'Personal loan(s) ($)',\n }),\n name: 'persloan',\n },\n {\n label: t('PFCashFlowCalculator.chargeAccountsLabel', {\n defaultValue: 'Charge accounts ($)',\n }),\n name: 'cc',\n },\n {\n label: t('PFCashFlowCalculator.federalIncomeTaxesLabel', {\n defaultValue: 'Federal income taxes ($)',\n }),\n name: 'fedtaxes',\n },\n {\n label: t('PFCashFlowCalculator.stateIncomeTaxesLabel', {\n defaultValue: 'State income taxes ($)',\n }),\n name: 'statetaxes',\n },\n {\n label: t('PFCashFlowCalculator.FICALabel', {\n defaultValue: 'FICA (social security taxes) ($)',\n }),\n name: 'fica',\n },\n {\n label: t('PFCashFlowCalculator.realEstateTaxesLabel', {\n defaultValue: 'Real estate taxes ($)',\n }),\n name: 'retaxes',\n },\n {\n label: t('PFCashFlowCalculator.OtherTaxesLabel', {\n defaultValue: 'Other taxes ($)',\n }),\n name: 'othertaxes',\n },\n {\n label: t('PFCashFlowCalculator.utilitiesLabel', {\n defaultValue: 'Utilities ($)',\n }),\n name: 'utilities',\n },\n {\n label: t('PFCashFlowCalculator.householdRepairsLabel', {\n defaultValue: 'Household repairs and maintenance ($)',\n }),\n name: 'repairs',\n },\n {\n label: t('PFCashFlowCalculator.foodLabel', {\n defaultValue: 'Food ($)',\n }),\n name: 'food',\n },\n {\n label: t('PFCashFlowCalculator.clothingLaundryLabel', {\n defaultValue: 'Clothing and laundry ($)',\n }),\n name: 'clothing',\n },\n {\n label: t('PFCashFlowCalculator.educationalExpensesLabel', {\n defaultValue: 'Educational expenses ($)',\n }),\n name: 'education',\n },\n {\n label: t('PFCashFlowCalculator.childCareLabel', {\n defaultValue: 'Child care ($)',\n }),\n name: 'childcare',\n },\n {\n label: t('PFCashFlowCalculator.automobileExpensesLabel', {\n defaultValue: 'Automobile expenses (gas, repairs, etc.) ($)',\n }),\n name: 'autoexp',\n },\n {\n label: t('PFCashFlowCalculator.otherTransportationExpensesLabel', {\n defaultValue: 'Other transportation expenses ($)',\n }),\n name: 'transexp',\n },\n {\n label: t('PFCashFlowCalculator.lifeInsuranceLabel', {\n defaultValue: 'Life insurance premiums ($)',\n }),\n name: 'lifeins',\n },\n {\n label: t('PFCashFlowCalculator.homeownersRentersLabel', {\n defaultValue: 'Homeowners (renters) insurance ($)',\n }),\n name: 'homeowners',\n },\n {\n label: t('PFCashFlowCalculator.automobileInsuranceLabel', {\n defaultValue: 'Automobile insurance ($)',\n }),\n name: 'autoins',\n },\n {\n label: t('PFCashFlowCalculator.medicalDentalInsuranceLabel', {\n defaultValue: 'Medical, dental and disability insurance ($)',\n }),\n name: 'medical',\n },\n {\n label: t('PFCashFlowCalculator.entertainmentDiningLabel', {\n defaultValue: 'Entertainment and dining ($)',\n }),\n name: 'entertain',\n },\n {\n label: t('PFCashFlowCalculator.recreationTravelLabel', {\n defaultValue: 'Recreation and travel ($)',\n }),\n name: 'travel',\n },\n {\n label: t('PFCashFlowCalculator.clubDuesLabel', {\n defaultValue: 'Club dues ($)',\n }),\n name: 'club',\n },\n {\n label: t('PFCashFlowCalculator.hobbiesLabel', {\n defaultValue: 'Hobbies ($)',\n }),\n name: 'hobbies',\n },\n {\n label: t('PFCashFlowCalculator.giftsLabel', {\n defaultValue: 'Gifts ($)',\n }),\n name: 'gifts',\n },\n {\n label: t('PFCashFlowCalculator.majorHomeImprovementsLabel', {\n defaultValue: 'Major home improvements and furnishings ($)',\n }),\n name: 'homeimp',\n },\n {\n label: t('PFCashFlowCalculator.professionalServicesLabel', {\n defaultValue: 'Professional services ($)',\n }),\n name: 'services',\n },\n {\n label: t('PFCashFlowCalculator.OtherMiscellaneousExpensesLabel', {\n defaultValue: 'Other and miscellaneous expenses ($)',\n }),\n name: 'other',\n },\n ],\n },\n ]\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n\n try {\n const url = 'https://www.calcxml.com/rest/bud09'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Bud09JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n mode: formData.mode,\n wages: formData.wages,\n interest: formData.interest,\n dividends: formData.dividends,\n socialsecurity: formData.socialsecurity,\n pensions: formData.pensions,\n alimony: formData.alimony,\n otherincome: formData.otherincome,\n charity: formData.charity,\n mortgage: formData.mortgage,\n vacation: formData.vacation,\n autoloan: formData.autoloan,\n persloan: formData.persloan,\n cc: formData.cc,\n fedtaxes: formData.fedtaxes,\n statetaxes: formData.statetaxes,\n fica: formData.fica,\n retaxes: formData.retaxes,\n othertaxes: formData.othertaxes,\n utilities: formData.utilities,\n repairs: formData.repairs,\n food: formData.food,\n clothing: formData.clothing,\n education: formData.education,\n childcare: formData.childcare,\n autoexp: formData.autoexp,\n transexp: formData.transexp,\n lifeins: formData.lifeins,\n homeowners: formData.homeowners,\n autoins: formData.autoins,\n medical: formData.medical,\n entertain: formData.entertain,\n travel: formData.travel,\n club: formData.club,\n hobbies: formData.hobbies,\n gifts: formData.gifts,\n homeimp: formData.homeimp,\n services: formData.services,\n other: formData.other,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('PFCashFlowCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n const chunkArray = (array, chunkSize) => {\n let index = 0\n const arrayLength = array.length\n const tempArray = []\n\n for (index = 0; index < arrayLength; index += chunkSize) {\n const chunk = array.slice(index, index + chunkSize)\n tempArray.push(chunk)\n }\n\n return tempArray\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('PFCashFlowCalculator.firstLegend', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n {t('PFCashFlowCalculator.monthlyAnnualFiguresOptions.monthly', {\n defaultValue: 'Monthly',\n })}\n \n \n {t('PFCashFlowCalculator.monthlyAnnualFiguresOptions.annual', {\n defaultValue: 'Annual',\n })}\n \n \n \n \n
\n {fieldGroups.map(group => (\n
\n {group.label}\n {chunkArray(group.fields, 2).map(item => (\n \n \n \n \n {item[1] && (\n \n \n \n )}\n \n ))}\n
\n ))}\n\n \n \n {t('PFCashFlowCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('PFCashFlowCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('PFCashFlowCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('PFCashFlowCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('PFCashFlowCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n {calcResults.year.map(item => {\n if (item.monthly === null) {\n return (\n \n \n \n )\n }\n return (\n \n \n \n \n \n \n )\n })}\n \n
\n {t('PFCashFlowCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n {t('PFCashFlowCalculator.category', {\n defaultValue: 'Category',\n })}\n \n {t('PFCashFlowCalculator.monthly', {\n defaultValue: 'Monthly',\n })}\n \n {t('PFCashFlowCalculator.annual', {\n defaultValue: 'Annual',\n })}\n \n {t('PFCashFlowCalculator.percent', {\n defaultValue: 'Percent',\n })}\n
\n {item.category}\n
{item.category}{item.monthly}{item.annual}{item.percent}
\n\n \n {t('PFCashFlowCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { PFCashFlowCalculator }\nexport default PFCashFlowCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Select } from '../../select'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n debtInterestRate: {\n min: 0,\n max: 40,\n },\n interestDeductible: {},\n beforeTaxReturn: {\n min: -12,\n max: 12,\n },\n interestTaxable: {},\n taxBracket: {\n min: 0,\n max: 75,\n },\n monthlySurplus: {\n min: 0,\n max: 999999999,\n },\n}\n\nconst PFPayDownDebtCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n debtInterestRate: 6,\n interestDeductible: 'N',\n beforeTaxReturn: 8,\n interestTaxable: 'Y',\n taxBracket: 0,\n monthlySurplus: 0,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n\n try {\n const url = 'https://www.calcxml.com/rest/bud04'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Bud04JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n debtInterestRate: formatPercentage(formData.debtInterestRate),\n interestDeductible: formData.interestDeductible,\n beforeTaxReturn: formatPercentage(formData.beforeTaxReturn),\n interestTaxable: formData.interestTaxable,\n taxBracket: formatPercentage(formData.taxBracket),\n monthlySurplus: formData.monthlySurplus,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('PFPayDownDebtCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('PFPayDownDebtCalculator.firstLegend', {\n defaultValue: 'Rates and assumptions',\n })}\n \n \n \n \n \n\n \n \n \n {t('PFPayDownDebtCalculator.interestDeductibleOptions.no', {\n defaultValue: 'No',\n })}\n \n \n {t('PFPayDownDebtCalculator.interestDeductibleOptions.yes', {\n defaultValue: 'Yes',\n })}\n \n \n \n \n\n \n \n \n \n\n \n \n \n {t('PFPayDownDebtCalculator.interestTaxableOptions.yes', {\n defaultValue: 'Yes',\n })}\n \n \n {t('PFPayDownDebtCalculator.interestTaxableOptions.no', {\n defaultValue: 'No',\n })}\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n
\n\n \n \n {t('PFPayDownDebtCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('PFPayDownDebtCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('PFPayDownDebtCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('PFPayDownDebtCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('PFPayDownDebtCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { PFPayDownDebtCalculator }\nexport default PFPayDownDebtCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport { formatPercentage } from '../utils'\nimport formatError from '../../../utilities/formatError'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst validationSchema = {\n expectedIncome: {\n min: 0,\n max: 999999999,\n },\n loanAmount: {\n min: 0,\n max: 999999999,\n },\n interestRate: {\n min: 0,\n max: 40,\n },\n termMonths: {\n min: 1,\n max: 480,\n },\n}\n\nconst PFStudentLoanCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n expectedIncome: 0,\n loanAmount: 0,\n interestRate: 6.8,\n termMonths: 120,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n\n try {\n const url = 'https://www.calcxml.com/rest/col02'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Col02JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n expectedIncome: formData.expectedIncome,\n loanAmount: formData.loanAmount,\n interestRate: formatPercentage(formData.interestRate),\n termMonths: formData.termMonths,\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('PFStudentLoanCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('PFStudentLoanCalculator.firstLegend', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n
\n\n \n \n {t('PFStudentLoanCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('PFStudentLoanCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('PFStudentLoanCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('PFStudentLoanCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n\n \n {t('PFStudentLoanCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { PFStudentLoanCalculator }\nexport default PFStudentLoanCalculator\n","import { useCallback, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form/dist/index.ie11'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCheck } from '@fortawesome/pro-regular-svg-icons'\nimport formatError from '../../../utilities/formatError'\nimport { formatPercentage, formatNumber, displayPercentage } from '../utils'\nimport { Stack } from '../../stack'\nimport { Button } from '../../button'\nimport { TextField } from '../../textfield'\nimport { Alert } from '../../alert'\nimport { Row, Col } from '../../grid'\nimport { Heading } from '../../typography/Heading'\nimport computeOffsetTop from '../../../utilities/computeTopOffset'\nimport useEnabledOnClient from '../../../utilities/useEnabledOnClient'\nimport * as styles from '../CalculatorModule.module.scss'\n\nconst InvestmentGrowthCalculator = () => {\n const [t, i18n] = useTranslation()\n const [language, countryCode] = i18n.language.split('-')\n const [calcResults, setCalcResults] = useState()\n const [storedFormData, setStoredFormData] = useState()\n // Our API doesn’t support sync form submissions and so we need Javascript to submit the form asynchronously by issuing an XHR. Therefore, we need to ensure that the button is initially disabled and gets re-enabled once all Javascript has loaded on the client.\n const disabled = useEnabledOnClient()\n\n const { register, errors, handleSubmit } = useForm({\n mode: 'onBlur',\n defaultValues: {\n initialBalance: 0,\n annualSavings: 0,\n years: 20,\n btReturnTaxable: 8,\n btReturnDeferred: 8,\n btReturnFree: 5,\n taxBracket: 25,\n },\n })\n\n const [inProgress, setInProgress] = useState(false)\n const [alert, showAlert] = useState(null)\n const dismissAlert = useCallback(() => showAlert(null), [])\n const resultsContainer = useRef(null)\n const resultsHeader = useRef(null)\n\n const numberValidationMessage = t('InvestmentGrowthCalculator.numberRangeMessage', {\n defaultValue: 'Please enter a number between -12 and 12',\n })\n const validationYearMessage = t('InvestmentGrowthCalculator.YearMessage', {\n defaultValue: 'Please enter a number between 1 and 50',\n })\n const taxBracketMessage = t('InvestmentGrowthCalculator.taxBracketMessage', {\n defaultValue: 'Please enter a number between 0 and 75',\n })\n\n const validationSchema = {\n initialBalance: {\n min: 0,\n max: 999999999,\n },\n annualSavings: {\n min: 0,\n max: 999999999,\n },\n years: {\n min: 1,\n max: 50,\n validate: value => (value > 1 && value <= 50) || validationYearMessage,\n },\n btReturnTaxable: {\n min: -12,\n max: 12,\n validate: value => (value >= -12 && value <= 12) || numberValidationMessage,\n },\n btReturnDeferred: {\n min: -12,\n max: 12,\n validate: value => (value >= -12 && value <= 12) || numberValidationMessage,\n },\n btReturnFree: {\n min: -12,\n max: 12,\n validate: value => (value >= -12 && value <= 12) || numberValidationMessage,\n },\n taxBracket: {\n min: 0,\n max: 75,\n validate: value => (value >= 0 && value <= 75) || taxBracketMessage,\n },\n }\n\n const handleSubmitValid = async formData => {\n setInProgress(true)\n showAlert(false)\n setStoredFormData(formData)\n\n try {\n const url = 'https://www.calcxml.com/rest/inc07'\n\n // Documentation\n // https://www.calcxml.com/documentation/rest/Inc07JSONRequest.htm\n\n const payload = {\n username: process.env.CALCXML_USERNAME,\n password: process.env.CALCXML_PASSWORD,\n language,\n countryCode,\n chartWidth: 900,\n chartHeight: 400,\n barColor1: '63B5E4',\n barColor2: '84BD00',\n barColor3: 'FCC841',\n // barColor4: '#ffffff',\n // barColor5: '#ffffff',\n // barColor6: '#ffffff',\n initialBalance: formData.initialBalance,\n annualSavings: formData.annualSavings,\n years: formData.years,\n btReturnTaxable: formatPercentage(formData.btReturnTaxable),\n btReturnDeferred: formatPercentage(formData.btReturnDeferred),\n btReturnFree: formatPercentage(formData.btReturnFree),\n taxBracket: formatPercentage(formData.taxBracket),\n }\n\n const response = await axios.post(url, payload)\n\n if (response.status !== 200 || Boolean(response.data.error)) {\n throw new Error(`Unexpected status code: ${response.status} ${response.statusText}`)\n }\n\n setInProgress(false)\n setCalcResults(response.data)\n window.scrollTo({\n top: computeOffsetTop(resultsContainer.current) - 20,\n behavior: 'smooth',\n })\n resultsHeader.current.focus()\n } catch (error) {\n setInProgress(false)\n showAlert({\n type: 'error',\n title: t('InvestmentGrowthCalculator.error', {\n defaultValue: 'Error',\n }),\n message: error.message,\n })\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n return (\n
\n {alert && (\n \n \n \n {alert.message}\n \n \n \n )}\n \n
\n \n {t('InvestmentGrowthCalculator.firstLegend', {\n defaultValue: 'Savings',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n
\n\n
\n \n {t('InvestmentGrowthCalculator.secondLegend', {\n defaultValue: 'Assumptions',\n })}\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n\n \n \n {t('InvestmentGrowthCalculator.calculate', {\n defaultValue: 'Calculate',\n })}\n \n\n {alert && alert.type === 'error' && (\n \n \n {t('InvestmentGrowthCalculator.couldNotCalculate', {\n defaultValue: 'Sorry, could not calculate',\n })}\n \n )}\n\n {alert && alert.type === 'success' && (\n \n \n {t('InvestmentGrowthCalculator.calculationComplete', {\n defaultValue: 'Calculation complete. See below for results!',\n })}\n \n )}\n \n \n\n
\n\n {calcResults && (\n
\n \n {t('InvestmentGrowthCalculator.results', {\n defaultValue: 'Results',\n })}\n \n

{calcResults.responseText}

\n

{calcResults.responseText2}

\n

{calcResults.responseText3}

\n\n \n {t('InvestmentGrowthCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('InvestmentGrowthCalculator.summaryTable', {\n defaultValue: 'Summary table',\n })}\n
\n {t('InvestmentGrowthCalculator.summary', {\n defaultValue: 'Summary',\n })}\n \n {t('InvestmentGrowthCalculator.fullyTaxable', {\n defaultValue: 'Fully-taxable',\n })}\n \n {t('InvestmentGrowthCalculator.taxDeferred', {\n defaultValue: 'Tax-deferred',\n })}\n \n {t('InvestmentGrowthCalculator.taxFree', {\n defaultValue: 'Tax-free',\n })}\n
\n {t('InvestmentGrowthCalculator.currentInvestmentBalance', {\n defaultValue: 'Current investment balance',\n })}\n ${formatNumber(storedFormData.initialBalance)}${formatNumber(storedFormData.initialBalance)}${formatNumber(storedFormData.initialBalance)}
\n {t('InvestmentGrowthCalculator.annualContributions', {\n defaultValue: 'Annual contributions',\n })}\n ${formatNumber(storedFormData.annualSavings)}${formatNumber(storedFormData.annualSavings)}${formatNumber(storedFormData.annualSavings)}
\n {t('InvestmentGrowthCalculator.numberYearsToInvest', {\n defaultValue: 'Number of years to invest',\n })}\n {storedFormData.years}{storedFormData.years}{storedFormData.years}
\n {t('InvestmentGrowthCalculator.beforeTaxReturn', {\n defaultValue: 'Before-tax return',\n })}\n {storedFormData.btReturnTaxable}%{storedFormData.btReturnDeferred}%{storedFormData.btReturnFree}%
\n {t('InvestmentGrowthCalculator.marginalTaxBracket', {\n defaultValue: 'Marginal tax bracket',\n })}\n {storedFormData.taxBracket}%{storedFormData.taxBracket}%{storedFormData.taxBracket}%
\n {t('InvestmentGrowthCalculator.afterTaxReturn', {\n defaultValue: 'After-tax return',\n })}\n {displayPercentage(calcResults.atReturnTaxable)}%{storedFormData.btReturnDeferred}%{storedFormData.btReturnFree}%
\n {t('InvestmentGrowthCalculator.futureAccountValue', {\n defaultValue: 'Future account value *',\n })}\n {calcResults.fvTaxable}{calcResults.fvDeferred}{calcResults.fvFree}
\n {t('InvestmentGrowthCalculator.futureAccountAfterTax', {\n defaultValue: 'Future account value (after-tax)',\n })}\n {calcResults.fvatTaxable}{calcResults.fvatDeferred}{calcResults.fvatFree}
\n {t('InvestmentGrowthCalculator.lumpSumMessage', {\n defaultValue: `* The lump sum shown after taxes is based on the marginal tax rate that you\n selected. This lump sum after tax figure does not take into account the possible\n change in tax bracket that might occur due to a lump sum distribution of the\n taxable amount, nor does it take into effect any applicable tax penalties.`,\n })}\n
\n \n {t('InvestmentGrowthCalculator.graph', {\n defaultValue: 'Graph',\n })}\n \n \n
\n )}\n
\n )\n}\n\nexport { InvestmentGrowthCalculator }\nexport default InvestmentGrowthCalculator\n","import PropTypes from 'prop-types'\nimport { Eyebrow } from '../../../typography/Eyebrow'\nimport { Link } from '../../../typography/Link'\n\nimport * as styles from './TableOfContents.module.scss'\n\nconst TableOfContents = ({ anchorLinkSections }) => {\n return (\n
\n {anchorLinkSections.map(anchorLinkSection => (\n
\n {anchorLinkSection.title}\n

{anchorLinkSection.subtitle}

\n
    \n {anchorLinkSection.anchorLinks.map(anchor => {\n return (\n
  • \n \n {anchor.name}\n \n
  • \n )\n })}\n
\n
\n ))}\n
\n )\n}\n\nTableOfContents.propTypes = {\n pageTitle: PropTypes.string,\n anchorLinkSections: PropTypes.arrayOf(PropTypes.object),\n}\n\nexport { TableOfContents }\nexport default TableOfContents\n","// extracted by mini-css-extract-plugin\nexport var TableOfContents = \"TableOfContents-module--TableOfContents--LjiFq\";\nexport var AnchorLinkSection = \"TableOfContents-module--AnchorLinkSection--26p-u\";\nexport var AnchorList = \"TableOfContents-module--AnchorList--1jw3o\";\nexport var LinkText = \"TableOfContents-module--LinkText--1kS9N\";\nexport var ActiveLinkText = \"TableOfContents-module--ActiveLinkText--1OmL7\";","// extracted by mini-css-extract-plugin\nexport var LegalHeading = \"CalculatorSectionModule-module--LegalHeading--1j8UN\";\nexport var Section = \"CalculatorSectionModule-module--Section--IG2Sp\";\nexport var TableSection = \"CalculatorSectionModule-module--TableSection--14-7S\";\nexport var CalcTips = \"CalculatorSectionModule-module--CalcTips--lgHvI\";","import PropTypes from 'prop-types'\nimport kebabCase from 'lodash/kebabCase'\nimport { useTranslation } from 'react-i18next'\nimport { TableOfContents } from './components'\nimport * as styles from './CalculatorSectionModule.module.scss'\nimport { Heading } from '../../typography/Heading'\nimport { Container, Row, Col } from '../../grid'\nimport { RichText } from '../../rich-text'\nimport { CalculatorModule } from '../../calculators/CalculatorModule'\n\nconst CalculatorSectionModule = ({\n pageTitle,\n anchorLinkSections,\n calculator,\n sections,\n calcTips,\n}) => {\n const [t] = useTranslation()\n\n return (\n \n \n \n \n {pageTitle}\n \n \n \n \n \n \n \n \n {sections.map(section => {\n /* Eliminate all whitespace from the title string and use that as the anchor ID */\n const sectionId = kebabCase(section.sectionTitle)\n return (\n \n \n {section.sectionTitle}\n \n {section.richBody}\n {calcTips && (\n
\n \n {t('CalculatorSectionModule.tipsForUsingThisCalculator', {\n defaultValue: 'Tips for using this calculator',\n })}\n \n {calcTips}\n
\n )}\n
\n )\n })}\n \n \n
\n \n \n \n )\n}\n\nCalculatorSectionModule.propTypes = {\n pageTitle: PropTypes.string,\n sections: PropTypes.arrayOf(PropTypes.object),\n anchorLinkSections: PropTypes.arrayOf(PropTypes.object),\n calculator: PropTypes.object,\n calcTips: PropTypes.object,\n}\n\nexport { CalculatorSectionModule }\nexport default CalculatorSectionModule\n","import { useTranslation } from 'react-i18next'\n\nexport const usePages = () => {\n const [t] = useTranslation()\n const mortgagePage = {\n title: t('CalculatorPageMortgage.pageTitle', { defaultValue: 'Mortgage' }),\n urlPath: '/calculators/mortgage',\n partiallyActive: true,\n }\n const autoPage = {\n title: t('CalculatorPageAuto.pageTitle', { defaultValue: 'Auto' }),\n urlPath: '/calculators/auto',\n partiallyActive: true,\n }\n const personalFinancePage = {\n title: t('CalculatorPageFinance.pageTitle', { defaultValue: 'Personal Finance' }),\n urlPath: '/calculators/personal-finance',\n partiallyActive: true,\n }\n const wealthManagementPage = {\n title: t('CalculatorPageWealth.pageTitle', { defaultValue: 'Wealth Management' }),\n urlPath: '/calculators/wealth-management',\n partiallyActive: true,\n }\n const calculatorsPage = {\n title: t('CalculatorPageIndex.pageTitle', { defaultValue: 'Calculators' }),\n urlPath: '/calculators',\n children: [mortgagePage, autoPage, personalFinancePage, wealthManagementPage],\n }\n return {\n mortgagePage,\n autoPage,\n personalFinancePage,\n wealthManagementPage,\n calculatorsPage,\n }\n}\n","import PropTypes from 'prop-types'\nimport { useTranslation } from 'react-i18next'\nimport { useStaticQuery, graphql } from 'gatsby'\n\nconst query = graphql`\n query StaticTemplateQuery {\n allContentfulNavigationMenu {\n edges {\n node {\n type\n node_locale\n navigationItems {\n internal {\n content\n }\n }\n }\n }\n }\n }\n`\n\nconst StaticTemplate = ({ children }) => {\n const [_t, i18n] = useTranslation()\n const allMenus = useStaticQuery(query)\n\n const {\n allContentfulNavigationMenu: { edges },\n } = allMenus\n\n const navMenus = edges.reduce((acc, edge) => {\n const {\n node: {\n type,\n // eslint-disable-next-line camelcase\n node_locale,\n navigationItems: {\n internal: { content },\n },\n },\n } = edge\n\n // Since the content is received as a json string, we need to parse it\n const menu = JSON.parse(content)\n acc[node_locale] = acc[node_locale] || {}\n acc[node_locale][type] = menu.items\n\n return acc\n }, {})\n\n return children({ navMenus: navMenus[i18n.language] })\n}\n\nStaticTemplate.propTypes = {\n children: PropTypes.func,\n location: PropTypes.object,\n}\n\nexport { StaticTemplate }\nexport default StaticTemplate\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","// extracted by mini-css-extract-plugin\nexport var Card = \"CalculatorModule-module--Card--2-xVn\";\nexport var Disclaimer = \"CalculatorModule-module--Disclaimer--1bCtx\";\nexport var Content = \"CalculatorModule-module--Content--30xzB\";\nexport var LeftBlock = \"CalculatorModule-module--LeftBlock--3yku-\";\nexport var RightBlock = \"CalculatorModule-module--RightBlock--1hyj9\";\nexport var Eyebrow = \"CalculatorModule-module--Eyebrow--VNe7a\";\nexport var Heading = \"CalculatorModule-module--Heading--2kE1r\";\nexport var Fieldset = \"CalculatorModule-module--Fieldset--xDPKO\";\nexport var withMargin = \"CalculatorModule-module--withMargin--5NhTW\";\nexport var Legend = \"CalculatorModule-module--Legend--_Ga0i\";\nexport var Submit = \"CalculatorModule-module--Submit--X1QJw\";\nexport var ShortMessage = \"CalculatorModule-module--ShortMessage--22Sp1\";\nexport var TimesIcon = \"CalculatorModule-module--TimesIcon--B4fpV\";\nexport var CheckIcon = \"CalculatorModule-module--CheckIcon--2qHYE\";\nexport var Notice = \"CalculatorModule-module--Notice--1hkCw\";\nexport var HasAlert = \"CalculatorModule-module--HasAlert--G1JiJ\";\nexport var Results = \"CalculatorModule-module--Results--1QKvV\";\nexport var ResultsHeading = \"CalculatorModule-module--ResultsHeading--33WUI\";\nexport var ResultsTableOverflow = \"CalculatorModule-module--ResultsTableOverflow--1VDU2\";\nexport var ResultsTable = \"CalculatorModule-module--ResultsTable--22uLH\";\nexport var ResultsTableLeft = \"CalculatorModule-module--ResultsTableLeft--3c97b\";\nexport var ResultsTableRight = \"CalculatorModule-module--ResultsTableRight--11-if\";\nexport var ResultsTableCenter = \"CalculatorModule-module--ResultsTableCenter--3knWf\";\nexport var ResultsTableHeader = \"CalculatorModule-module--ResultsTableHeader--27N1D\";\nexport var ResultsTableTotalLine = \"CalculatorModule-module--ResultsTableTotalLine--3tP7g\";\nexport var ExampleText = \"CalculatorModule-module--ExampleText--1cuoT\";"],"sourceRoot":""}