@axos-web-dev/shared-components 0.0.74 → 0.0.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/AnnualFeeCalculator/AnnualFeeCalculator.css.d.ts +34 -0
  2. package/dist/AnnualFeeCalculator/AnnualFeeCalculator.css.js +34 -0
  3. package/dist/AnnualFeeCalculator/index.d.ts +10 -0
  4. package/dist/AnnualFeeCalculator/index.js +143 -0
  5. package/dist/ApyCalculator/ApyCalculator.css.d.ts +68 -3
  6. package/dist/ApyCalculator/ApyCalculator.css.js +29 -22
  7. package/dist/ApyCalculator/index.d.ts +7 -1
  8. package/dist/ApyCalculator/index.js +106 -87
  9. package/dist/Calculators/Calculator.d.ts +2 -0
  10. package/dist/Calculators/Calculator.js +74 -33
  11. package/dist/Carousel/index.js +5 -3
  12. package/dist/Chevron/index.js +6 -4
  13. package/dist/Comparison/Comparison.js +3 -1
  14. package/dist/Comparison/ComparisonSet.js +5 -3
  15. package/dist/FooterSiteMap/AxosBank/FooterSiteMap.js +6 -4
  16. package/dist/Forms/ContactUsAAS.js +5 -3
  17. package/dist/Forms/ContactUsBusiness.js +5 -3
  18. package/dist/Forms/EmailOnly.js +5 -3
  19. package/dist/Forms/SuccesForm.js +4 -2
  20. package/dist/HeroBanner/HeroBanner.interface.d.ts +4 -4
  21. package/dist/Hyperlink/index.js +6 -4
  22. package/dist/ImageBillboard/ImageBillboard.css.d.ts +1 -0
  23. package/dist/ImageLink/ImageLink.js +4 -2
  24. package/dist/ImageLink/ImageLinkSet.js +3 -1
  25. package/dist/ImageLink/index.js +6 -4
  26. package/dist/Modal/Modal.js +5 -3
  27. package/dist/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.d.ts +27 -0
  28. package/dist/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js +22 -0
  29. package/dist/MonthlyPaymentCalculator/index.d.ts +8 -0
  30. package/dist/MonthlyPaymentCalculator/index.js +212 -0
  31. package/dist/NavigationMenu/AxosBank/NavBar.module.js +53 -59
  32. package/dist/NavigationMenu/AxosBank/SubNavBar.js +28 -26
  33. package/dist/NavigationMenu/AxosBank/SubNavbar.css.d.ts +0 -2
  34. package/dist/NavigationMenu/AxosBank/SubNavbar.css.js +0 -4
  35. package/dist/NavigationMenu/AxosBank/index.js +19 -33
  36. package/dist/SetContainer/SetContainer.js +4 -2
  37. package/dist/assets/AnnualFeeCalculator/AnnualFeeCalculator.css +125 -0
  38. package/dist/assets/ApyCalculator/ApyCalculator.css +77 -98
  39. package/dist/assets/IconBillboard/IconBillboard.css +1 -0
  40. package/dist/assets/ImageBillboard/ImageBillboard.css +1 -0
  41. package/dist/assets/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css +67 -0
  42. package/dist/assets/NavigationMenu/AxosBank/NavBar.css.css +134 -125
  43. package/dist/assets/NavigationMenu/AxosBank/SubNavbar.css +0 -10
  44. package/dist/assets/SetContainer/SetContainer.css +6 -6
  45. package/package.json +111 -111
@@ -23,16 +23,16 @@ import "../Accordion/Accordion.css.js";
23
23
  import { getVariant } from "../utils/getVariant.js";
24
24
  import "../Chevron/Chevron.css.js";
25
25
  import "../AlertBanner/AlertBanner.css.js";
26
- import { Button } from "../Button/Button.js";
27
26
  import "../Button/Button.css.js";
28
27
  import "react";
28
+ import "../ApyCalculator/ApyCalculator.css.js";
29
+ import { Button } from "../Button/Button.js";
29
30
  import "react-use";
30
- /* empty css */
31
+ import "../IconBillboard/IconBillboard.css.js";
31
32
  import "../Article/Article.css.js";
32
33
  import "../ArticlesSet/ArticlesSet.css.js";
33
34
  /* empty css */
34
35
  /* empty css */
35
- import "../IconBillboard/IconBillboard.css.js";
36
36
  /* empty css */
37
37
  import clsx from "clsx";
38
38
  import { useForm, FormProvider } from "react-hook-form";
@@ -43,6 +43,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
43
43
  import "../Input/RadioButton.js";
44
44
  import "iframe-resizer";
45
45
  import "../Calculators/calculator.css.js";
46
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
47
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
46
48
  /* empty css */
47
49
  import "../Carousel/index.js";
48
50
  /* empty css */
@@ -23,16 +23,16 @@ import "../Accordion/Accordion.css.js";
23
23
  import { getVariant } from "../utils/getVariant.js";
24
24
  import "../Chevron/Chevron.css.js";
25
25
  import "../AlertBanner/AlertBanner.css.js";
26
- import { Button } from "../Button/Button.js";
27
26
  import "../Button/Button.css.js";
28
27
  import "react";
28
+ import "../ApyCalculator/ApyCalculator.css.js";
29
+ import { Button } from "../Button/Button.js";
29
30
  import "react-use";
30
- /* empty css */
31
+ import "../IconBillboard/IconBillboard.css.js";
31
32
  import "../Article/Article.css.js";
32
33
  import "../ArticlesSet/ArticlesSet.css.js";
33
34
  /* empty css */
34
35
  /* empty css */
35
- import "../IconBillboard/IconBillboard.css.js";
36
36
  /* empty css */
37
37
  import { associatedEmail } from "../utils/EverestValidity.js";
38
38
  import clsx from "clsx";
@@ -44,6 +44,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
44
44
  import "../Input/RadioButton.js";
45
45
  import "iframe-resizer";
46
46
  import "../Calculators/calculator.css.js";
47
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
48
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
47
49
  /* empty css */
48
50
  import "../Carousel/index.js";
49
51
  /* empty css */
@@ -28,15 +28,17 @@ import "../Accordion/Accordion.js";
28
28
  import "../Accordion/Accordion.css.js";
29
29
  import "../Chevron/Chevron.css.js";
30
30
  import "../AlertBanner/AlertBanner.css.js";
31
- /* empty css */
31
+ import "../ApyCalculator/ApyCalculator.css.js";
32
+ import "../IconBillboard/IconBillboard.css.js";
32
33
  import "../Article/Article.css.js";
33
34
  import "../ArticlesSet/ArticlesSet.css.js";
34
35
  /* empty css */
35
36
  /* empty css */
36
- import "../IconBillboard/IconBillboard.css.js";
37
37
  /* empty css */
38
38
  import "iframe-resizer";
39
39
  import "../Calculators/calculator.css.js";
40
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
41
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
40
42
  /* empty css */
41
43
  import "../Carousel/index.js";
42
44
  /* empty css */
@@ -21,9 +21,9 @@ export interface HeroBannerInterface extends HeroBannerWithImage, HeroBannerWith
21
21
  id?: string;
22
22
  bannerType?: string;
23
23
  className?: string;
24
- variant: string;
25
- eyebrow: string | ReactNode;
26
- headline: string | ReactNode;
27
- bodyCopy: string | ReactNode;
24
+ variant?: string;
25
+ eyebrow?: string | ReactNode;
26
+ headline?: string | ReactNode;
27
+ bodyCopy?: string | ReactNode;
28
28
  callToActionRow?: ChevronProps[];
29
29
  }
@@ -10,20 +10,20 @@ import "../icons/CheckIcon/CheckIcon.css.js";
10
10
  /* empty css */
11
11
  import "../Chevron/Chevron.css.js";
12
12
  import "../AlertBanner/AlertBanner.css.js";
13
+ import "../Button/Button.css.js";
14
+ import "react";
15
+ import "../ApyCalculator/ApyCalculator.css.js";
13
16
  import { useGlobalContext } from "../Modal/contextApi/store.js";
14
17
  import { findMoreAxosDomains } from "../utils/allowedAxosDomains.js";
15
18
  import { validateLink } from "../utils/validateExternalLinks.js";
16
19
  import "clsx";
17
- import "react";
18
- import "../Button/Button.css.js";
19
20
  import "react-use";
20
- /* empty css */
21
+ import "../IconBillboard/IconBillboard.css.js";
21
22
  import "../Article/Article.css.js";
22
23
  import "../ArticlesSet/ArticlesSet.css.js";
23
24
  /* empty css */
24
25
  /* empty css */
25
26
  /* empty css */
26
- import "../IconBillboard/IconBillboard.css.js";
27
27
  /* empty css */
28
28
  import "@hookform/resolvers/zod";
29
29
  import "../Input/Checkbox.js";
@@ -41,6 +41,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
41
41
  import "../Input/RadioButton.js";
42
42
  import "iframe-resizer";
43
43
  import "../Calculators/calculator.css.js";
44
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
45
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
44
46
  /* empty css */
45
47
  import "../Carousel/index.js";
46
48
  /* empty css */
@@ -3,6 +3,7 @@ export declare const billboard: import('@vanilla-extract/recipes').RuntimeFn<{
3
3
  primary: {
4
4
  background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
5
5
  color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
6
+ border: "1px solid #D4D4D4";
6
7
  };
7
8
  secondary: {
8
9
  background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
@@ -14,13 +14,13 @@ import "../icons/CheckIcon/CheckIcon.css.js";
14
14
  import "../Accordion/Accordion.js";
15
15
  import "../Accordion/Accordion.css.js";
16
16
  import "../AlertBanner/AlertBanner.css.js";
17
- /* empty css */
17
+ import "../ApyCalculator/ApyCalculator.css.js";
18
+ import "../IconBillboard/IconBillboard.css.js";
18
19
  import "../Article/Article.css.js";
19
20
  import "../ArticlesSet/ArticlesSet.css.js";
20
21
  /* empty css */
21
22
  /* empty css */
22
23
  /* empty css */
23
- import "../IconBillboard/IconBillboard.css.js";
24
24
  /* empty css */
25
25
  import "@hookform/resolvers/zod";
26
26
  import "../Input/Checkbox.js";
@@ -38,6 +38,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
38
38
  import "../Input/RadioButton.js";
39
39
  import "iframe-resizer";
40
40
  import "../Calculators/calculator.css.js";
41
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
42
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
41
43
  /* empty css */
42
44
  import "../Carousel/index.js";
43
45
  /* empty css */
@@ -20,7 +20,7 @@ import "../SetContainer/SetContainer.css.js";
20
20
  import "../Accordion/Accordion.js";
21
21
  import "../Accordion/Accordion.css.js";
22
22
  import "../AlertBanner/AlertBanner.css.js";
23
- /* empty css */
23
+ import "../ApyCalculator/ApyCalculator.css.js";
24
24
  import "../Article/Article.css.js";
25
25
  import "../ArticlesSet/ArticlesSet.css.js";
26
26
  /* empty css */
@@ -41,6 +41,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
41
41
  import "../Input/RadioButton.js";
42
42
  import "iframe-resizer";
43
43
  import "../Calculators/calculator.css.js";
44
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
45
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
44
46
  /* empty css */
45
47
  import "../Carousel/index.js";
46
48
  /* empty css */
@@ -9,18 +9,18 @@ import "../icons/CheckIcon/CheckIcon.css.js";
9
9
  /* empty css */
10
10
  import "../Chevron/Chevron.css.js";
11
11
  import "../AlertBanner/AlertBanner.css.js";
12
+ import "../Button/Button.css.js";
13
+ import "react";
14
+ import "../ApyCalculator/ApyCalculator.css.js";
12
15
  import "../Modal/contextApi/store.js";
13
16
  import "clsx";
14
- import "react";
15
- import "../Button/Button.css.js";
16
17
  import "react-use";
17
- /* empty css */
18
+ import "../IconBillboard/IconBillboard.css.js";
18
19
  import "../Article/Article.css.js";
19
20
  import "../ArticlesSet/ArticlesSet.css.js";
20
21
  /* empty css */
21
22
  /* empty css */
22
23
  /* empty css */
23
- import "../IconBillboard/IconBillboard.css.js";
24
24
  /* empty css */
25
25
  import "@hookform/resolvers/zod";
26
26
  import "../Input/Checkbox.js";
@@ -38,6 +38,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
38
38
  import "../Input/RadioButton.js";
39
39
  import "iframe-resizer";
40
40
  import "../Calculators/calculator.css.js";
41
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
42
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
41
43
  /* empty css */
42
44
  import "../Carousel/index.js";
43
45
  /* empty css */
@@ -9,17 +9,17 @@ import "../icons/CheckIcon/CheckIcon.css.js";
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  import "../AlertBanner/AlertBanner.css.js";
12
- import { Button } from "../Button/Button.js";
13
12
  import "../Button/Button.css.js";
14
13
  import "react";
14
+ import "../ApyCalculator/ApyCalculator.css.js";
15
+ import { Button } from "../Button/Button.js";
15
16
  import "react-use";
16
- /* empty css */
17
+ import "../IconBillboard/IconBillboard.css.js";
17
18
  import "../Article/Article.css.js";
18
19
  import "../ArticlesSet/ArticlesSet.css.js";
19
20
  /* empty css */
20
21
  /* empty css */
21
22
  /* empty css */
22
- import "../IconBillboard/IconBillboard.css.js";
23
23
  /* empty css */
24
24
  import "@hookform/resolvers/zod";
25
25
  import "../Input/Checkbox.js";
@@ -38,6 +38,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
38
38
  import "../Input/RadioButton.js";
39
39
  import "iframe-resizer";
40
40
  import "../Calculators/calculator.css.js";
41
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
42
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
41
43
  /* empty css */
42
44
  import "../Carousel/index.js";
43
45
  /* empty css */
@@ -0,0 +1,27 @@
1
+ export declare const container: import('@vanilla-extract/recipes').RuntimeFn<{
2
+ variant: {
3
+ primary: {
4
+ background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
5
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
6
+ };
7
+ secondary: {
8
+ background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
9
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
10
+ };
11
+ tertiary: {
12
+ background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
13
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
14
+ };
15
+ quaternary: {
16
+ background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
17
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
18
+ };
19
+ };
20
+ }>;
21
+ export declare const input_container: string;
22
+ export declare const input_box: string;
23
+ export declare const payment_results: string;
24
+ export declare const calc_container: string;
25
+ export declare const inputs_container: string;
26
+ export declare const calculation_header: string;
27
+ export declare const error_message: string;
@@ -0,0 +1,22 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ /* empty css */
4
+ import { createRuntimeFn } from "@vanilla-extract/recipes/createRuntimeFn";
5
+ var container = createRuntimeFn({ defaultClassName: "_17fwn0a0", variantClassNames: { variant: { primary: "_17fwn0a1", secondary: "_17fwn0a2", tertiary: "_17fwn0a3", quaternary: "_17fwn0a4" } }, defaultVariants: {}, compoundVariants: [] });
6
+ var input_container = "_17fwn0a5";
7
+ var input_box = "_17fwn0a6";
8
+ var payment_results = "_17fwn0a7";
9
+ var calc_container = "_17fwn0a8";
10
+ var inputs_container = "_17fwn0a9";
11
+ var calculation_header = "_17fwn0aa";
12
+ var error_message = "_17fwn0ab";
13
+ export {
14
+ calc_container,
15
+ calculation_header,
16
+ container,
17
+ error_message,
18
+ input_box,
19
+ input_container,
20
+ inputs_container,
21
+ payment_results
22
+ };
@@ -0,0 +1,8 @@
1
+ import { default as React, FC } from 'react';
2
+
3
+ export interface MonthlyPaymentCalculatorProps {
4
+ header?: React.ReactNode | string;
5
+ body?: React.ReactNode | string;
6
+ variant?: string;
7
+ }
8
+ export declare const MonthlyPaymentCalculator: FC<MonthlyPaymentCalculatorProps>;
@@ -0,0 +1,212 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import { calc_container, container, inputs_container, input_container, input_box, error_message, calculation_header, payment_results } from "./MonthlyPaymentCalculator.css.js";
5
+ import { button } from "../Button/Button.css.js";
6
+ import { getVariant } from "../utils/getVariant.js";
7
+ import { title } from "../IconBillboard/IconBillboard.css.js";
8
+ const MonthlyPaymentCalculator = ({
9
+ variant,
10
+ header
11
+ }) => {
12
+ const [loanAmountDisplay, setLoanAmountDisplay] = useState("");
13
+ const [loanAmount, setLoanAmount] = useState(void 0);
14
+ const [loanDuration, setLoanDuration] = useState(60);
15
+ const [interestRateDisplay, setInterestRateDisplay] = useState("");
16
+ const [interestRate, setInterestRate] = useState("");
17
+ const [estimatedPayment, setEstimatedPayment] = useState(0);
18
+ const [loanAmountError, setLoanAmountError] = useState(null);
19
+ const [interestRateError, setInterestRateError] = useState(
20
+ null
21
+ );
22
+ const formatToCurrency = (value) => {
23
+ const numericValue = parseFloat(value.replace(/[^0-9.]/g, ""));
24
+ if (isNaN(numericValue)) {
25
+ return "";
26
+ }
27
+ return numericValue.toLocaleString("en-US", {
28
+ style: "currency",
29
+ currency: "USD",
30
+ minimumFractionDigits: 0,
31
+ maximumFractionDigits: 0
32
+ });
33
+ };
34
+ const validateInputs = () => {
35
+ let isValid = true;
36
+ if (!loanAmount || isNaN(loanAmount) || loanAmount < 1e4 || loanAmount > 9e4) {
37
+ setLoanAmountError("Please enter an amount between $10,000 and $90,000.");
38
+ isValid = false;
39
+ } else {
40
+ setLoanAmountError(null);
41
+ }
42
+ if (!interestRate || isNaN(parseFloat(interestRate))) {
43
+ setInterestRateError("Please enter an Interest Rate.");
44
+ isValid = false;
45
+ } else {
46
+ setInterestRateError(null);
47
+ }
48
+ return isValid;
49
+ };
50
+ const handleLoanAmountChange = (event) => {
51
+ const value = event.target.value;
52
+ const formattedValue = formatToCurrency(value);
53
+ setLoanAmountDisplay(formattedValue);
54
+ const numericValue = parseFloat(value.replace(/[^0-9.]/g, ""));
55
+ setLoanAmount(isNaN(numericValue) ? void 0 : numericValue);
56
+ };
57
+ const handleLoanDurationChange = (event) => {
58
+ setLoanDuration(Number(event.target.value));
59
+ };
60
+ const formatToPercentage = (value) => {
61
+ const numericValue = value.replace(/[^0-9.]/g, "");
62
+ if (numericValue === "") {
63
+ return "";
64
+ } else if (numericValue.endsWith("%")) {
65
+ return numericValue;
66
+ } else {
67
+ return numericValue.substring(0, numericValue.length - 2) + numericValue.substring(numericValue.length - 2) + "%";
68
+ }
69
+ };
70
+ const handleInterestRateChange = (event) => {
71
+ let value = event.target.value;
72
+ if (value.length < interestRateDisplay.length) {
73
+ if (interestRateDisplay.length > 1 && interestRateDisplay.endsWith("%")) {
74
+ value = interestRateDisplay.substring(0, interestRateDisplay.length - 2) + "%";
75
+ } else if (interestRateDisplay.length === 1) {
76
+ value = "";
77
+ } else {
78
+ value = interestRateDisplay.substring(
79
+ 0,
80
+ interestRateDisplay.length - 1
81
+ );
82
+ }
83
+ } else {
84
+ value = formatToPercentage(value);
85
+ }
86
+ setInterestRateDisplay(value);
87
+ setInterestRate(value.replace(/[^0-9.]/g, ""));
88
+ };
89
+ const calculateMonthlyPayment = () => {
90
+ const numericInterestRate = parseFloat(interestRate);
91
+ const monthlyInterestRate = numericInterestRate / 100 / 12;
92
+ const months = loanDuration;
93
+ if (!isNaN(loanAmount || 0) && !isNaN(numericInterestRate)) {
94
+ const monthlyPayment = (loanAmount || 0) * monthlyInterestRate / (1 - Math.pow(1 + monthlyInterestRate, -months));
95
+ setEstimatedPayment(monthlyPayment);
96
+ } else {
97
+ setEstimatedPayment(0);
98
+ }
99
+ };
100
+ const handleCalculate = () => {
101
+ if (validateInputs()) {
102
+ calculateMonthlyPayment();
103
+ } else {
104
+ setEstimatedPayment(0);
105
+ }
106
+ };
107
+ return /* @__PURE__ */ jsx("section", { className: `section_spacer`, children: /* @__PURE__ */ jsx("div", { className: "containment", children: /* @__PURE__ */ jsxs(
108
+ "div",
109
+ {
110
+ className: `rounded ${calc_container} ${container({ variant: getVariant(variant) })}`,
111
+ children: [
112
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
113
+ "h2",
114
+ {
115
+ className: `text_center ${title({ variant: getVariant(variant) })}`,
116
+ children: header
117
+ }
118
+ ) }),
119
+ /* @__PURE__ */ jsxs(
120
+ "div",
121
+ {
122
+ className: `flex center text_center push_up_32 bottom ${inputs_container}`,
123
+ children: [
124
+ /* @__PURE__ */ jsxs("div", { className: `flex flex_col ${input_container}`, children: [
125
+ /* @__PURE__ */ jsx("label", { htmlFor: "loanAmount", id: "amount1", children: "Loan Amount ($10,000 - $90,000)" }),
126
+ /* @__PURE__ */ jsx(
127
+ "input",
128
+ {
129
+ className: `text_center bordered ${input_box}`,
130
+ id: "loanAmount",
131
+ maxLength: 10,
132
+ name: "loanAmount",
133
+ type: "text",
134
+ placeholder: "$0",
135
+ value: loanAmountDisplay,
136
+ onChange: handleLoanAmountChange
137
+ }
138
+ ),
139
+ loanAmountError && /* @__PURE__ */ jsx("span", { className: error_message, children: loanAmountError })
140
+ ] }),
141
+ /* @__PURE__ */ jsxs("div", { className: `flex flex_col ${input_container}`, children: [
142
+ /* @__PURE__ */ jsx("label", { htmlFor: "loanDuration", children: "Loan Duration (Months)" }),
143
+ /* @__PURE__ */ jsxs(
144
+ "select",
145
+ {
146
+ className: `text_center bordered ${input_box}`,
147
+ id: "loanDuration",
148
+ name: "loanDuration",
149
+ value: loanDuration,
150
+ onChange: handleLoanDurationChange,
151
+ children: [
152
+ /* @__PURE__ */ jsx("option", { value: "12", children: "12" }),
153
+ /* @__PURE__ */ jsx("option", { value: "24", children: "24" }),
154
+ /* @__PURE__ */ jsx("option", { value: "36", children: "36" }),
155
+ /* @__PURE__ */ jsx("option", { value: "48", children: "48" }),
156
+ /* @__PURE__ */ jsx("option", { value: "60", children: "60" }),
157
+ /* @__PURE__ */ jsx("option", { value: "72", children: "72" }),
158
+ /* @__PURE__ */ jsx("option", { value: "84", children: "84" }),
159
+ /* @__PURE__ */ jsx("option", { value: "96", children: "96" })
160
+ ]
161
+ }
162
+ )
163
+ ] }),
164
+ /* @__PURE__ */ jsxs("div", { className: `flex flex_col ${input_container}`, children: [
165
+ /* @__PURE__ */ jsx("label", { htmlFor: "interestRate", children: "Interest Rate" }),
166
+ /* @__PURE__ */ jsx(
167
+ "input",
168
+ {
169
+ className: `text_center bordered ${input_box}`,
170
+ id: "interestRate",
171
+ maxLength: 6,
172
+ name: "interestRate",
173
+ type: "text",
174
+ placeholder: "0.00%",
175
+ value: interestRateDisplay,
176
+ onChange: handleInterestRateChange
177
+ }
178
+ ),
179
+ interestRateError && /* @__PURE__ */ jsx("span", { className: error_message, children: interestRateError })
180
+ ] })
181
+ ]
182
+ }
183
+ ),
184
+ /* @__PURE__ */ jsxs("div", { children: [
185
+ /* @__PURE__ */ jsx("div", { className: `flex center middle push_up_32`, children: /* @__PURE__ */ jsx(
186
+ "input",
187
+ {
188
+ className: `${button({
189
+ color: "primary",
190
+ size: "medium",
191
+ rounded: "medium"
192
+ })} center`,
193
+ type: "button",
194
+ value: "Calculate",
195
+ onClick: handleCalculate
196
+ }
197
+ ) }),
198
+ /* @__PURE__ */ jsxs("div", { className: "text_center flex flex_col center middle push_up_32", children: [
199
+ /* @__PURE__ */ jsx("span", { className: calculation_header, children: "Estimated Monthly Payment:" }),
200
+ /* @__PURE__ */ jsxs("span", { id: "estimatedPayment", className: payment_results, children: [
201
+ "$",
202
+ estimatedPayment.toFixed(2)
203
+ ] })
204
+ ] })
205
+ ] })
206
+ ]
207
+ }
208
+ ) }) });
209
+ };
210
+ export {
211
+ MonthlyPaymentCalculator
212
+ };