@axos-web-dev/shared-components 0.0.75 → 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 (37) 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/Hyperlink/index.js +6 -4
  21. package/dist/ImageBillboard/ImageBillboard.css.d.ts +1 -0
  22. package/dist/ImageLink/ImageLink.js +4 -2
  23. package/dist/ImageLink/ImageLinkSet.js +3 -1
  24. package/dist/ImageLink/index.js +6 -4
  25. package/dist/Modal/Modal.js +5 -3
  26. package/dist/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.d.ts +27 -0
  27. package/dist/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js +22 -0
  28. package/dist/MonthlyPaymentCalculator/index.d.ts +8 -0
  29. package/dist/MonthlyPaymentCalculator/index.js +212 -0
  30. package/dist/NavigationMenu/AxosBank/SubNavBar.js +7 -5
  31. package/dist/SetContainer/SetContainer.js +4 -2
  32. package/dist/assets/AnnualFeeCalculator/AnnualFeeCalculator.css +125 -0
  33. package/dist/assets/ApyCalculator/ApyCalculator.css +77 -98
  34. package/dist/assets/IconBillboard/IconBillboard.css +1 -0
  35. package/dist/assets/ImageBillboard/ImageBillboard.css +1 -0
  36. package/dist/assets/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css +67 -0
  37. package/package.json +111 -111
@@ -1,14 +1,21 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { Button } from "../Button/Button.js";
4
3
  import { button } from "../Button/Button.css.js";
5
4
  import { useState, useCallback, useEffect } from "react";
5
+ import { container, apy_calculator, calculator_section, section_header, header_theme, mt_8, apy_calculator_form, pis_0, errorTag, fieldset, field_row, relative, label_symbol, cash, prefix_pad, percent, submit_section, span_12, form_disclosure, marketing, marketingTile, bodyContent } from "./ApyCalculator.css.js";
6
+ import { Button } from "../Button/Button.js";
6
7
  import "react-use";
7
- import { vars } from "../themes/axos.css.js";
8
- /* empty css */
9
- /* empty css */
10
- import { apy_calculator, calculator_section, section_header, apy_calculator_form, errorTag, fieldset, field_row, relative, label_symbol, cash, prefix_pad, percent, submit_section, span_12, form_disclosure, marketing, marketing_tile, cta_section, marketing_table } from "./ApyCalculator.css.js";
11
- const ApyCalculator = ({ header }) => {
8
+ import { getVariant } from "../utils/getVariant.js";
9
+ import { Chevron } from "../Chevron/index.js";
10
+ import { section_container, content, headerIconBillboard, buttons } from "../IconBillboard/IconBillboard.css.js";
11
+ const ApyCalculator = ({
12
+ header,
13
+ body,
14
+ marketingTiles,
15
+ disclosure,
16
+ variant
17
+ }) => {
18
+ const calculator_variant = getVariant(variant);
12
19
  const [initialDeposit, setInititalDeposit] = useState(1e3);
13
20
  const [APR, setAPR] = useState(2.32);
14
21
  const [APY, setAPY] = useState(2.35);
@@ -16,12 +23,12 @@ const ApyCalculator = ({ header }) => {
16
23
  const [compounding, setCompounding] = useState(360);
17
24
  const [monthlyDeposits, setMonthlyDeposits] = useState(100);
18
25
  const [endingBalance, setEndingBalance] = useState("");
19
- const [error, setError] = useState("");
26
+ const [errors, setErrors] = useState([]);
20
27
  const [interestRate, setInterestRate] = useState(0);
21
28
  const isValidNumber = (input) => {
22
29
  if (typeof input !== "number") {
23
30
  return false;
24
- } else if (input < 0) {
31
+ } else if (input < 0 || Number.isNaN(input)) {
25
32
  return false;
26
33
  } else
27
34
  return true;
@@ -29,7 +36,7 @@ const ApyCalculator = ({ header }) => {
29
36
  const isValidAPY = (input) => {
30
37
  if (typeof input !== "number") {
31
38
  return false;
32
- } else if (input <= 0) {
39
+ } else if (input <= 0 || Number.isNaN(input)) {
33
40
  return false;
34
41
  } else
35
42
  return true;
@@ -43,9 +50,27 @@ const ApyCalculator = ({ header }) => {
43
50
  }, [convertInterest, interestRate, setInterestRate]);
44
51
  const handleCalculate = () => {
45
52
  convertInterest();
46
- if (!isValidNumber(initialDeposit) || !isValidNumber(months) || !isValidNumber(monthlyDeposits) || !isValidAPY(APY) || !isValidAPY(APR)) {
47
- setError("Invalid input. Please enter positive numeric values.");
53
+ let newErrors = [];
54
+ if (!isValidNumber(initialDeposit)) {
55
+ newErrors.push("Initial Deposit must be a positive number.");
56
+ }
57
+ if (!isValidNumber(months)) {
58
+ newErrors.push("Months must be a positive number.");
59
+ }
60
+ if (!isValidNumber(monthlyDeposits)) {
61
+ newErrors.push("Monthly Deposits must be a positive number.");
62
+ }
63
+ if (!isValidAPY(APY)) {
64
+ newErrors.push("APY must be a positive number.");
65
+ }
66
+ if (!isValidAPY(APR)) {
67
+ newErrors.push("APR must be a positive number.");
68
+ }
69
+ if (newErrors.length > 0) {
70
+ setErrors(newErrors);
48
71
  } else {
72
+ newErrors = [];
73
+ setErrors([]);
49
74
  let total;
50
75
  if (compounding === 360) {
51
76
  total = initialDeposit * Math.pow(1 + interestRate / compounding, 30 * months) + monthlyDeposits / (interestRate / 12) * (Math.pow(1 + interestRate / compounding, 30 * months) - 1);
@@ -88,20 +113,21 @@ const ApyCalculator = ({ header }) => {
88
113
  return /* @__PURE__ */ jsx(
89
114
  "section",
90
115
  {
91
- className: `section_spacer`,
92
- style: {
93
- background: vars.colors.secondary.background,
94
- color: "black",
95
- paddingBlock: "42px"
96
- },
116
+ className: `section_spacer ${container({ variant: getVariant(variant) })}`,
97
117
  children: /* @__PURE__ */ jsxs("div", { className: `${apy_calculator} containment flex between`, children: [
98
118
  /* @__PURE__ */ jsxs("div", { className: `${calculator_section}`, children: [
99
- /* @__PURE__ */ jsxs("div", { className: `${section_header}`, children: [
100
- /* @__PURE__ */ jsx("h1", { className: "header_1", children: header }),
101
- /* @__PURE__ */ jsx("p", { className: "push_up", children: "Calculate how much interest you can earn on your money with our APY Interest Calculator." })
119
+ (header || body) && /* @__PURE__ */ jsxs("div", { className: `${section_header}`, children: [
120
+ header && /* @__PURE__ */ jsx(
121
+ "h2",
122
+ {
123
+ className: `header_2 ${header_theme({ variant: calculator_variant })}`,
124
+ children: header
125
+ }
126
+ ),
127
+ body && /* @__PURE__ */ jsx("div", { className: mt_8, children: body })
102
128
  ] }),
103
129
  /* @__PURE__ */ jsxs("form", { id: "calculator_form", className: `${apy_calculator_form}`, children: [
104
- /* @__PURE__ */ jsx("div", { id: "errmsgbox", className: " flex middle", children: /* @__PURE__ */ jsx("span", { className: `${errorTag}`, children: error }) }),
130
+ /* @__PURE__ */ jsx("div", { id: "errmsgbox", className: " flex middle", children: errors.length > 0 && /* @__PURE__ */ jsx("ul", { className: pis_0, children: errors.map((error, index) => /* @__PURE__ */ jsx("li", { className: `${errorTag}`, children: error }, index)) }) }),
105
131
  /* @__PURE__ */ jsxs("div", { className: `${fieldset}`, children: [
106
132
  /* @__PURE__ */ jsxs("div", { className: `${field_row} ${relative} flex flex_col`, children: [
107
133
  /* @__PURE__ */ jsx("label", { className: "input_label", htmlFor: "initDeposit", children: "Initial Deposit" }),
@@ -109,13 +135,13 @@ const ApyCalculator = ({ header }) => {
109
135
  /* @__PURE__ */ jsx(
110
136
  "input",
111
137
  {
112
- className: `${prefix_pad}`,
138
+ className: `${prefix_pad} bordered`,
113
139
  id: "initDeposit",
114
140
  type: "number",
115
141
  step: 100,
116
142
  name: "initDeposit",
117
143
  value: initialDeposit,
118
- onChange: (e) => setInititalDeposit(Number(e.target.value))
144
+ onChange: (e) => setInititalDeposit(parseInt(e.target.value))
119
145
  }
120
146
  )
121
147
  ] }),
@@ -125,13 +151,13 @@ const ApyCalculator = ({ header }) => {
125
151
  /* @__PURE__ */ jsx(
126
152
  "input",
127
153
  {
128
- className: `${prefix_pad}`,
154
+ className: `${prefix_pad} bordered`,
129
155
  id: "apr",
130
156
  type: "number",
131
157
  step: 0.01,
132
158
  name: "apr",
133
159
  value: APR,
134
- onChange: (e) => updateAPR(Number(e.target.value))
160
+ onChange: (e) => updateAPR(parseFloat(e.target.value))
135
161
  }
136
162
  )
137
163
  ] }),
@@ -141,13 +167,13 @@ const ApyCalculator = ({ header }) => {
141
167
  /* @__PURE__ */ jsx(
142
168
  "input",
143
169
  {
144
- className: `${prefix_pad}`,
170
+ className: `${prefix_pad} bordered`,
145
171
  id: "apy",
146
172
  type: "number",
147
173
  step: 0.01,
148
174
  name: "apy",
149
175
  value: APY,
150
- onChange: (e) => updateAPY(Number(e.target.value))
176
+ onChange: (e) => updateAPY(parseFloat(e.target.value))
151
177
  }
152
178
  )
153
179
  ] }),
@@ -156,13 +182,14 @@ const ApyCalculator = ({ header }) => {
156
182
  /* @__PURE__ */ jsx(
157
183
  "input",
158
184
  {
159
- className: `${prefix_pad}`,
185
+ className: `${prefix_pad} bordered`,
160
186
  id: "months",
187
+ min: 1,
161
188
  maxLength: 4,
162
189
  type: "number",
163
190
  name: "months",
164
191
  value: months,
165
- onChange: (e) => setMonths(Number(e.target.value))
192
+ onChange: (e) => setMonths(parseInt(e.target.value))
166
193
  }
167
194
  )
168
195
  ] }),
@@ -171,7 +198,7 @@ const ApyCalculator = ({ header }) => {
171
198
  /* @__PURE__ */ jsxs(
172
199
  "select",
173
200
  {
174
- className: `${prefix_pad}`,
201
+ className: `${prefix_pad} bordered`,
175
202
  id: "compounding",
176
203
  name: "compounding",
177
204
  value: compounding,
@@ -192,13 +219,13 @@ const ApyCalculator = ({ header }) => {
192
219
  /* @__PURE__ */ jsx(
193
220
  "input",
194
221
  {
195
- className: `${prefix_pad}`,
222
+ className: `${prefix_pad} bordered`,
196
223
  id: "monthlyDeposits",
197
224
  maxLength: 25,
198
225
  type: "number",
199
226
  value: monthlyDeposits,
200
227
  name: "monthlyDeposits",
201
- onChange: (e) => setMonthlyDeposits(Number(e.target.value))
228
+ onChange: (e) => setMonthlyDeposits(parseInt(e.target.value))
202
229
  }
203
230
  )
204
231
  ] }),
@@ -207,7 +234,7 @@ const ApyCalculator = ({ header }) => {
207
234
  /* @__PURE__ */ jsx(
208
235
  "input",
209
236
  {
210
- className: `${prefix_pad}`,
237
+ className: `${prefix_pad} bordered`,
211
238
  id: "endBal",
212
239
  maxLength: 30,
213
240
  type: "string",
@@ -224,7 +251,7 @@ const ApyCalculator = ({ header }) => {
224
251
  children: /* @__PURE__ */ jsx(
225
252
  "input",
226
253
  {
227
- className: `${button({ color: "secondary", size: "medium", rounded: "medium" })} center`,
254
+ className: `${button({ color: "primary", size: "medium", rounded: "medium" })} center`,
228
255
  type: "button",
229
256
  value: "Calculate",
230
257
  onClick: handleCalculate
@@ -232,66 +259,58 @@ const ApyCalculator = ({ header }) => {
232
259
  )
233
260
  }
234
261
  ),
235
- /* @__PURE__ */ jsx("div", { className: `${form_disclosure} push_up_24`, children: /* @__PURE__ */ jsxs("p", { children: [
236
- /* @__PURE__ */ jsx("strong", { children: "NOTE:" }),
237
- " Our APY Interest Calculator is an educational tool to help you determine potential earnings. Your calculator results are estimates and do not guarantee cost savings or tax benefits. Axos Bank does not guarantee your results as determined by using this calculator."
238
- ] }) })
262
+ disclosure && /* @__PURE__ */ jsx("div", { className: `${form_disclosure} push_up_24`, children: disclosure })
239
263
  ] })
240
264
  ] })
241
265
  ] }),
242
- /* @__PURE__ */ jsxs("div", { className: `${marketing} section_spacer`, children: [
243
- /* @__PURE__ */ jsxs("div", { className: "flex flex_col", children: [
244
- /* @__PURE__ */ jsxs(
245
- "div",
246
- {
247
- className: `${marketing_tile} rounded framed flex flex_col between ${span_12}`,
248
- style: { backgroundColor: "#efeef0", maxWidth: "520px" },
249
- children: [
250
- /* @__PURE__ */ jsx("h2", { className: "header_2", children: "Select Savings" }),
251
- /* @__PURE__ */ jsx("div", { className: "push_up mb_0", children: "Zero fees. Up to 0.20% APY*. Complimentary ATM card. Select Savings helps your clients bank smarter with an account that rewards their savvy money habits." }),
252
- /* @__PURE__ */ jsx("div", { className: `${cta_section} push_up_24 flex flex_row center`, children: /* @__PURE__ */ jsx(
266
+ /* @__PURE__ */ jsx("div", { className: `${marketing} ${section_container}`, children: marketingTiles && marketingTiles?.map(
267
+ ({ id, headline, bodyCopy, callToActionRow }) => /* @__PURE__ */ jsxs(
268
+ "div",
269
+ {
270
+ className: `${container({ variant: getVariant(variant) })} ${marketingTile} rounded bordered`,
271
+ children: [
272
+ /* @__PURE__ */ jsx("div", { className: `${content} ${bodyContent}`, children: /* @__PURE__ */ jsxs("div", { className: headerIconBillboard, children: [
273
+ /* @__PURE__ */ jsx(
274
+ "div",
275
+ {
276
+ className: `header_3 ${header_theme({ variant: calculator_variant })}`,
277
+ children: headline
278
+ }
279
+ ),
280
+ /* @__PURE__ */ jsx("div", { children: bodyCopy })
281
+ ] }) }),
282
+ callToActionRow && /* @__PURE__ */ jsx("div", { className: `${buttons} middle`, children: callToActionRow.map(
283
+ ({
284
+ id: id2,
285
+ variant: variant2,
286
+ displayText,
287
+ targetUrl,
288
+ type
289
+ }) => type === "Button" ? /* @__PURE__ */ jsx(
253
290
  Button,
254
291
  {
255
- id: "btn-savings",
256
- targetUrl: "/products/select-savings",
257
- color: "secondary",
292
+ targetUrl,
293
+ color: getVariant(variant2),
258
294
  size: "medium",
259
295
  rounded: "medium",
260
- children: "Learn More"
261
- }
262
- ) })
263
- ]
264
- }
265
- ),
266
- /* @__PURE__ */ jsx(
267
- "section",
268
- {
269
- className: `${marketing_tile} section_spacer framed rounded`,
270
- id: "table",
271
- children: /* @__PURE__ */ jsxs("div", { children: [
272
- /* @__PURE__ */ jsx("h2", { className: "header_2", children: "Recommended Accounts" }),
273
- /* @__PURE__ */ jsxs("table", { className: `${marketing_table}`, children: [
274
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
275
- /* @__PURE__ */ jsx("th", { style: { width: "50%" }, scope: "col slate", children: "Account" }),
276
- /* @__PURE__ */ jsx("th", { style: { width: "50%" }, scope: "col slate", children: "APY*" })
277
- ] }) }),
278
- /* @__PURE__ */ jsxs("tbody", { children: [
279
- /* @__PURE__ */ jsxs("tr", { children: [
280
- /* @__PURE__ */ jsx("td", { "aria-label": "Select Checking", children: /* @__PURE__ */ jsx("a", { className: "link", href: "/products/select-savings", children: "Select Savings" }) }),
281
- /* @__PURE__ */ jsx("td", { "aria-label": "Up to 5.25%", children: "Up to 0.20%" })
282
- ] }),
283
- /* @__PURE__ */ jsxs("tr", { children: [
284
- /* @__PURE__ */ jsx("td", { "aria-label": "Select Checking", children: /* @__PURE__ */ jsx("a", { className: "link", href: "/products/select-checking", children: "Select Checking" }) }),
285
- /* @__PURE__ */ jsx("td", { "aria-label": "Up to 5.25%", children: "Up to 0.10%" })
286
- ] })
287
- ] })
288
- ] })
289
- ] })
290
- }
291
- )
292
- ] }),
293
- /* @__PURE__ */ jsx("div", {})
294
- ] })
296
+ children: displayText
297
+ },
298
+ id2
299
+ ) : /* @__PURE__ */ jsx(
300
+ Chevron,
301
+ {
302
+ targetUrl,
303
+ variant: getVariant(variant2),
304
+ children: displayText
305
+ },
306
+ id2
307
+ )
308
+ ) })
309
+ ]
310
+ },
311
+ id
312
+ )
313
+ ) })
295
314
  ] })
296
315
  }
297
316
  );
@@ -1,4 +1,5 @@
1
1
  import { default as React } from 'react';
2
+ import { IconBillboardProps } from '../IconBillboard/IconBillboard.interface';
2
3
 
3
4
  export interface CalculatorProps {
4
5
  id?: string;
@@ -9,5 +10,6 @@ export interface CalculatorProps {
9
10
  headline?: React.ReactNode;
10
11
  bodyCopy?: React.ReactNode;
11
12
  disclosure?: React.ReactNode;
13
+ marketingTiles?: IconBillboardProps[];
12
14
  }
13
15
  export declare const Calculator: (props: CalculatorProps) => import("react/jsx-runtime").JSX.Element;
@@ -31,7 +31,7 @@ import "../Accordion/Accordion.js";
31
31
  import "../Accordion/Accordion.css.js";
32
32
  import "../Chevron/Chevron.css.js";
33
33
  import "../AlertBanner/AlertBanner.css.js";
34
- /* empty css */
34
+ import { ApyCalculator } from "../ApyCalculator/index.js";
35
35
  import "../Article/Article.css.js";
36
36
  import "../ArticlesSet/ArticlesSet.css.js";
37
37
  /* empty css */
@@ -81,8 +81,18 @@ import "next/script.js";
81
81
  import "../Input/RadioButton.js";
82
82
  import { iframeResizer } from "iframe-resizer";
83
83
  import { calculators } from "./calculators.js";
84
+ import { MonthlyPaymentCalculator } from "../MonthlyPaymentCalculator/index.js";
85
+ import { AnnualFeeCalculator } from "../AnnualFeeCalculator/index.js";
84
86
  const Calculator = (props) => {
85
- const { id, bodyCopy, icon = false, disclosure, headline, name } = props;
87
+ const {
88
+ id,
89
+ bodyCopy,
90
+ icon = false,
91
+ disclosure,
92
+ headline,
93
+ name,
94
+ marketingTiles
95
+ } = props;
86
96
  const ref = useRef(null);
87
97
  const iframe = calculators.get(name || "");
88
98
  useEffect(() => {
@@ -91,39 +101,70 @@ const Calculator = (props) => {
91
101
  }
92
102
  }, []);
93
103
  const variant = getVariant(props.variant);
94
- return /* @__PURE__ */ jsx("section", { id, className: "", children: /* @__PURE__ */ jsxs("div", { className: clsx("containment"), children: [
95
- /* @__PURE__ */ jsxs("div", { children: [
96
- icon && /* @__PURE__ */ jsx("div", { className: clsx("text_center", iconForm), children: ["primary", "secondary"].includes(variant) ? /* @__PURE__ */ jsx(SvgComponent, {}) : /* @__PURE__ */ jsx(SvgAxosX, {}) }),
97
- /* @__PURE__ */ jsx(
98
- "h2",
99
- {
100
- className: clsx(
101
- "header_2 text_center",
102
- calculator_headline({ variant })
103
- ),
104
- children: headline
105
- }
106
- ),
107
- /* @__PURE__ */ jsx("div", { className: clsx(calculator_description({ variant })), children: bodyCopy })
108
- ] }),
109
- /* @__PURE__ */ jsx("div", { className: "calc section-narrow", children: /* @__PURE__ */ jsx(
110
- "iframe",
104
+ if (name === "APY Calculator") {
105
+ return /* @__PURE__ */ jsx(
106
+ ApyCalculator,
107
+ {
108
+ header: headline,
109
+ body: bodyCopy,
110
+ marketingTiles,
111
+ variant,
112
+ disclosure
113
+ }
114
+ );
115
+ } else if (name === "Monthly Payment Calculator") {
116
+ return /* @__PURE__ */ jsx(
117
+ MonthlyPaymentCalculator,
111
118
  {
112
- ref,
113
- style: {
114
- width: "100%",
115
- maxWidth: "100%",
116
- minHeight: "clamp(1100px, 200vh)"
117
- },
118
- scrolling: "no",
119
- frameBorder: "0",
120
- className: "iframe-calculator",
121
- allow: "from",
122
- src: iframe?.src
119
+ header: headline,
120
+ body: bodyCopy,
121
+ variant
123
122
  }
124
- ) }),
125
- /* @__PURE__ */ jsx("div", { className: clsx(calculator_description({ variant })), children: disclosure })
126
- ] }) });
123
+ );
124
+ } else if (name === "Annual Fee Calculator") {
125
+ return /* @__PURE__ */ jsx(
126
+ AnnualFeeCalculator,
127
+ {
128
+ header: headline,
129
+ body: bodyCopy,
130
+ marketingTiles,
131
+ variant
132
+ }
133
+ );
134
+ } else
135
+ return /* @__PURE__ */ jsx("section", { id, className: "", children: /* @__PURE__ */ jsxs("div", { className: clsx("containment"), children: [
136
+ /* @__PURE__ */ jsxs("div", { children: [
137
+ icon && /* @__PURE__ */ jsx("div", { className: clsx("text_center", iconForm), children: ["primary", "secondary"].includes(variant) ? /* @__PURE__ */ jsx(SvgComponent, {}) : /* @__PURE__ */ jsx(SvgAxosX, {}) }),
138
+ /* @__PURE__ */ jsx(
139
+ "h2",
140
+ {
141
+ className: clsx(
142
+ "header_2 text_center",
143
+ calculator_headline({ variant })
144
+ ),
145
+ children: headline
146
+ }
147
+ ),
148
+ /* @__PURE__ */ jsx("div", { className: clsx(calculator_description({ variant })), children: bodyCopy })
149
+ ] }),
150
+ /* @__PURE__ */ jsx("div", { className: "calc section-narrow", children: /* @__PURE__ */ jsx(
151
+ "iframe",
152
+ {
153
+ ref,
154
+ style: {
155
+ width: "100%",
156
+ maxWidth: "100%",
157
+ minHeight: "clamp(1100px, 200vh)"
158
+ },
159
+ scrolling: "no",
160
+ frameBorder: "0",
161
+ className: "iframe-calculator",
162
+ allow: "from",
163
+ src: iframe?.src
164
+ }
165
+ ) }),
166
+ /* @__PURE__ */ jsx("div", { className: clsx(calculator_description({ variant })), children: disclosure })
167
+ ] }) });
127
168
  };
128
169
  export {
129
170
  Calculator
@@ -16,12 +16,12 @@ import { getVariant } from "../utils/getVariant.js";
16
16
  import "../Accordion/Accordion.js";
17
17
  import "../Accordion/Accordion.css.js";
18
18
  import "../AlertBanner/AlertBanner.css.js";
19
+ import "../Button/Button.css.js";
20
+ import React, { useEffect, Children, cloneElement } from "react";
21
+ import "../ApyCalculator/ApyCalculator.css.js";
19
22
  import "../Modal/contextApi/store.js";
20
23
  import clsx from "clsx";
21
- import React, { useEffect, Children, cloneElement } from "react";
22
- import "../Button/Button.css.js";
23
24
  import "react-use";
24
- /* empty css */
25
25
  import "../Article/Article.css.js";
26
26
  import "../ArticlesSet/ArticlesSet.css.js";
27
27
  /* empty css */
@@ -42,6 +42,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
42
42
  import "../Input/RadioButton.js";
43
43
  import "iframe-resizer";
44
44
  import "../Calculators/calculator.css.js";
45
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
46
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
45
47
  /* empty css */
46
48
  /* empty css */
47
49
  import "../Comparison/Comparison.css.js";
@@ -9,21 +9,21 @@ import "../icons/CheckIcon/CheckIcon.css.js";
9
9
  import "../Accordion/Accordion.js";
10
10
  import "../Accordion/Accordion.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 { useGlobalContext } from "../Modal/contextApi/store.js";
13
16
  import { findMoreAxosDomains } from "../utils/allowedAxosDomains.js";
14
17
  import { getVariant } from "../utils/getVariant.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 */
@@ -18,7 +18,7 @@ import "../icons/CheckIcon/CheckIcon.css.js";
18
18
  /* empty css */
19
19
  /* empty css */
20
20
  import "../AlertBanner/AlertBanner.css.js";
21
- /* empty css */
21
+ import "../ApyCalculator/ApyCalculator.css.js";
22
22
  import "../Article/Article.css.js";
23
23
  import "../ArticlesSet/ArticlesSet.css.js";
24
24
  /* empty css */
@@ -40,6 +40,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
40
40
  import "../Input/RadioButton.js";
41
41
  import "iframe-resizer";
42
42
  import "../Calculators/calculator.css.js";
43
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
44
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
43
45
  /* empty css */
44
46
  import "../Carousel/index.js";
45
47
  /* empty css */
@@ -11,17 +11,17 @@ import "../icons/CheckIcon/CheckIcon.css.js";
11
11
  /* empty css */
12
12
  /* empty css */
13
13
  import "../AlertBanner/AlertBanner.css.js";
14
- import { Button } from "../Button/Button.js";
15
14
  import "../Button/Button.css.js";
15
+ import "../ApyCalculator/ApyCalculator.css.js";
16
+ import { Button } from "../Button/Button.js";
16
17
  import "react-use";
17
- /* empty css */
18
18
  import { getVariant } from "../utils/getVariant.js";
19
+ import { buttons } from "../IconBillboard/IconBillboard.css.js";
19
20
  import "../Article/Article.css.js";
20
21
  import "../ArticlesSet/ArticlesSet.css.js";
21
22
  /* empty css */
22
23
  /* empty css */
23
24
  /* empty css */
24
- import { buttons } from "../IconBillboard/IconBillboard.css.js";
25
25
  /* empty css */
26
26
  import "@hookform/resolvers/zod";
27
27
  import "../Input/Checkbox.js";
@@ -40,6 +40,8 @@ import "../LoadingIndicator/LoadingIndicator.css.js";
40
40
  import "../Input/RadioButton.js";
41
41
  import "iframe-resizer";
42
42
  import "../Calculators/calculator.css.js";
43
+ import "../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
44
+ import "../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
43
45
  /* empty css */
44
46
  import "../Carousel/index.js";
45
47
  /* empty css */
@@ -9,19 +9,19 @@ 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 { findMoreAxosDomains } from "../../utils/allowedAxosDomains.js";
14
17
  import "clsx";
15
- import "react";
16
- import "../../Button/Button.css.js";
17
18
  import "react-use";
18
- /* empty css */
19
+ import "../../IconBillboard/IconBillboard.css.js";
19
20
  import "../../Article/Article.css.js";
20
21
  import "../../ArticlesSet/ArticlesSet.css.js";
21
22
  /* empty css */
22
23
  /* empty css */
23
24
  /* empty css */
24
- import "../../IconBillboard/IconBillboard.css.js";
25
25
  /* empty css */
26
26
  import "@hookform/resolvers/zod";
27
27
  import "../../Input/Checkbox.js";
@@ -39,6 +39,8 @@ import "../../LoadingIndicator/LoadingIndicator.css.js";
39
39
  import "../../Input/RadioButton.js";
40
40
  import "iframe-resizer";
41
41
  import "../../Calculators/calculator.css.js";
42
+ import "../../MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
43
+ import "../../AnnualFeeCalculator/AnnualFeeCalculator.css.js";
42
44
  /* empty css */
43
45
  import "../../Carousel/index.js";
44
46
  /* 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 clsx from "clsx";
38
38
  import { useForm, FormProvider } from "react-hook-form";
@@ -43,6 +43,8 @@ import { LoadingIndicator } from "../LoadingIndicator/index.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 */