@mx-cartographer/experiences 9.1.3 → 9.1.4-alpha.al0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -6
- package/dist/{AccountDetailsDrawer-Cq4kiiKD.mjs → AccountDetailsDrawer-Dae8eUXt.mjs} +10 -10
- package/dist/{AccountDetailsDrawer-Cq4kiiKD.mjs.map → AccountDetailsDrawer-Dae8eUXt.mjs.map} +1 -1
- package/dist/{AccountDetailsHeader-BliEZhz7.mjs → AccountDetailsHeader-D_UjMD99.mjs} +4 -4
- package/dist/{AccountDetailsHeader-BliEZhz7.mjs.map → AccountDetailsHeader-D_UjMD99.mjs.map} +1 -1
- package/dist/{Analytics-CkYXKvco.mjs → Analytics-BJDUP2qI.mjs} +2 -2
- package/dist/{Analytics-CkYXKvco.mjs.map → Analytics-BJDUP2qI.mjs.map} +1 -1
- package/dist/{CategorySelectorDrawer-NJsFsKP1.mjs → CategorySelectorDrawer-k8AZYC8I.mjs} +2 -2
- package/dist/{CategorySelectorDrawer-NJsFsKP1.mjs.map → CategorySelectorDrawer-k8AZYC8I.mjs.map} +1 -1
- package/dist/{Connect-BH0Pt6zc.mjs → Connect-tID_S_5e.mjs} +2 -2
- package/dist/{Connect-BH0Pt6zc.mjs.map → Connect-tID_S_5e.mjs.map} +1 -1
- package/dist/{ConnectCard-D7uxoH5Y.mjs → ConnectCard-DcM6tUOX.mjs} +2 -2
- package/dist/{ConnectCard-D7uxoH5Y.mjs.map → ConnectCard-DcM6tUOX.mjs.map} +1 -1
- package/dist/{ConnectDrawer-CW4LA3H3.mjs → ConnectDrawer-BQy4YYuc.mjs} +3 -3
- package/dist/{ConnectDrawer-CW4LA3H3.mjs.map → ConnectDrawer-BQy4YYuc.mjs.map} +1 -1
- package/dist/{ConnectionsDrawer-CZU9ku-k.mjs → ConnectionsDrawer-C73ASLMj.mjs} +3 -3
- package/dist/{ConnectionsDrawer-CZU9ku-k.mjs.map → ConnectionsDrawer-C73ASLMj.mjs.map} +1 -1
- package/dist/{CurrencyInput-DaGEQaLW.mjs → CurrencyInput-CABYmqBh.mjs} +2 -2
- package/dist/{CurrencyInput-DaGEQaLW.mjs.map → CurrencyInput-CABYmqBh.mjs.map} +1 -1
- package/dist/{EmbeddedCard-DCOQnTz-.mjs → EmbeddedCard-BwfkCsUN.mjs} +3 -3
- package/dist/{EmbeddedCard-DCOQnTz-.mjs.map → EmbeddedCard-BwfkCsUN.mjs.map} +1 -1
- package/dist/{Error-Dtw6yxkf.mjs → Error-BFJ3BnfS.mjs} +2 -2
- package/dist/{Error-Dtw6yxkf.mjs.map → Error-BFJ3BnfS.mjs.map} +1 -1
- package/dist/ErrorBoundary-C7BlHx04.mjs +27 -0
- package/dist/ErrorBoundary-C7BlHx04.mjs.map +1 -0
- package/dist/{ExportCsvAction-C-IisDcv.mjs → ExportCsvAction-B1257a3M.mjs} +3 -3
- package/dist/{ExportCsvAction-C-IisDcv.mjs.map → ExportCsvAction-B1257a3M.mjs.map} +1 -1
- package/dist/{GlobalAccountFilter-BhzR5Vb1.mjs → GlobalAccountFilter-DEEc3Bc5.mjs} +2 -2
- package/dist/{GlobalAccountFilter-BhzR5Vb1.mjs.map → GlobalAccountFilter-DEEc3Bc5.mjs.map} +1 -1
- package/dist/GlobalCopyApi-Tz10hezK.mjs +130 -0
- package/dist/GlobalCopyApi-Tz10hezK.mjs.map +1 -0
- package/dist/{Help-zVZdcmlk.mjs → Help-BAj_yo3q.mjs} +145 -145
- package/dist/Help-BAj_yo3q.mjs.map +1 -0
- package/dist/{LineChart-CUfiH86G.mjs → LineChart-BxEIZHht.mjs} +2 -2
- package/dist/{LineChart-CUfiH86G.mjs.map → LineChart-BxEIZHht.mjs.map} +1 -1
- package/dist/{ListItemAction-BqUCLj_w.mjs → ListItemAction-GDU5z4BN.mjs} +2 -2
- package/dist/{ListItemAction-BqUCLj_w.mjs.map → ListItemAction-GDU5z4BN.mjs.map} +1 -1
- package/dist/{ListItemWrapper-DRse79Iu.mjs → ListItemWrapper-D6b-6m4t.mjs} +2 -2
- package/dist/{ListItemWrapper-DRse79Iu.mjs.map → ListItemWrapper-D6b-6m4t.mjs.map} +1 -1
- package/dist/{ManageIncome-B_8i71mE.mjs → ManageIncome-BJWVPAly.mjs} +32 -32
- package/dist/{ManageIncome-B_8i71mE.mjs.map → ManageIncome-BJWVPAly.mjs.map} +1 -1
- package/dist/{MicroWidgetContainer-B2NnKBgW.mjs → MicroWidgetContainer-IUZQlml1.mjs} +2 -2
- package/dist/{MicroWidgetContainer-B2NnKBgW.mjs.map → MicroWidgetContainer-IUZQlml1.mjs.map} +1 -1
- package/dist/{MiniWidgetContainer-Bmv_WeUd.mjs → MiniWidgetContainer-CIswJui8.mjs} +2 -2
- package/dist/{MiniWidgetContainer-Bmv_WeUd.mjs.map → MiniWidgetContainer-CIswJui8.mjs.map} +1 -1
- package/dist/{NotificationSettings-CW7okUrk.mjs → NotificationSettings-DltXMrnb.mjs} +33 -33
- package/dist/{NotificationSettings-CW7okUrk.mjs.map → NotificationSettings-DltXMrnb.mjs.map} +1 -1
- package/dist/{OriginalBalanceAction-YrvxBYAl.mjs → OriginalBalanceAction-KuJSsZCA.mjs} +4 -4
- package/dist/{OriginalBalanceAction-YrvxBYAl.mjs.map → OriginalBalanceAction-KuJSsZCA.mjs.map} +1 -1
- package/dist/{RecurringSettings-hs0YUp83.mjs → RecurringSettings-D2Aaqz7d.mjs} +3 -3
- package/dist/{RecurringSettings-hs0YUp83.mjs.map → RecurringSettings-D2Aaqz7d.mjs.map} +1 -1
- package/dist/{SpendingLegend-CxvNOg3c.mjs → SpendingLegend-C_dMdqbe.mjs} +2 -2
- package/dist/{SpendingLegend-CxvNOg3c.mjs.map → SpendingLegend-C_dMdqbe.mjs.map} +1 -1
- package/dist/{TransactionDetails-DT-MQqOB.mjs → TransactionDetails-CDZNsKv7.mjs} +5 -5
- package/dist/{TransactionDetails-DT-MQqOB.mjs.map → TransactionDetails-CDZNsKv7.mjs.map} +1 -1
- package/dist/{UserStore-E5WvBXaY.mjs → UserStore-DzGgxsKk.mjs} +302 -317
- package/dist/UserStore-DzGgxsKk.mjs.map +1 -0
- package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs → ViewMoreMicroCard-DXaJ-56q.mjs} +4 -4
- package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs.map → ViewMoreMicroCard-DXaJ-56q.mjs.map} +1 -1
- package/dist/{WidgetContainer-CjdCY4sj.mjs → WidgetContainer-5O6N88mr.mjs} +3 -3
- package/dist/{WidgetContainer-CjdCY4sj.mjs.map → WidgetContainer-5O6N88mr.mjs.map} +1 -1
- package/dist/accounts/index.es.js +11 -11
- package/dist/analytics/index.es.js +2 -2
- package/dist/budgets/index.es.js +10 -10
- package/dist/cashflow/index.es.js +70 -70
- package/dist/categories/index.es.js +1 -1
- package/dist/common/components/ErrorBoundary.d.ts +2 -0
- package/dist/common/context/GlobalDataProvider.d.ts +2 -1
- package/dist/common/context/hooks.d.ts +3 -0
- package/dist/common/context/index.d.ts +1 -1
- package/dist/common/index.es.js +66 -65
- package/dist/core/api/AccountApi.d.ts +2 -2
- package/dist/core/api/AnalyticsApi.d.ts +2 -2
- package/dist/core/api/AppDataApi.d.ts +2 -2
- package/dist/core/api/BeatApi.d.ts +2 -2
- package/dist/core/api/BudgetsApi.d.ts +2 -2
- package/dist/core/api/CategoryApi.d.ts +2 -2
- package/dist/core/api/FinstrongApi.d.ts +2 -2
- package/dist/core/api/GlobalCopyApi.d.ts +2 -2
- package/dist/core/api/GoalApi.d.ts +2 -2
- package/dist/core/api/HelpApi.d.ts +2 -2
- package/dist/core/api/HoldingApi.d.ts +2 -2
- package/dist/core/api/MerchantApi.d.ts +2 -2
- package/dist/core/api/NotificationApi.d.ts +2 -2
- package/dist/core/api/RepeatingTransactionsApi.d.ts +2 -2
- package/dist/core/api/ScheduledPaymentsApi.d.ts +2 -2
- package/dist/core/api/SettingsApi.d.ts +2 -2
- package/dist/core/api/TransactionApi.d.ts +2 -2
- package/dist/core/api/UserApi.d.ts +2 -2
- package/dist/core/index.es.js +95 -95
- package/dist/core/index.es.js.map +1 -1
- package/dist/core/stores/GlobalStore.d.ts +4 -2
- package/dist/core/types/Handlers.d.ts +1 -0
- package/dist/core/types/index.d.ts +1 -1
- package/dist/core/utils/Fetch.d.ts +3 -2
- package/dist/dashboard/index.es.js +4 -4
- package/dist/debts/index.es.js +8 -8
- package/dist/finstrong/index.es.js +12 -12
- package/dist/goals/index.es.js +9 -9
- package/dist/help/index.es.js +4 -4
- package/dist/hooks-DWOrMnfZ.mjs +83 -0
- package/dist/hooks-DWOrMnfZ.mjs.map +1 -0
- package/dist/insights/index.es.js +4 -4
- package/dist/investments/index.es.js +4 -4
- package/dist/merchants/index.es.js +1 -1
- package/dist/microinsights/index.es.js +1 -1
- package/dist/networth/index.es.js +6 -6
- package/dist/notifications/index.es.js +8 -8
- package/dist/recurringtransactions/index.es.js +38 -38
- package/dist/settings/index.es.js +27 -27
- package/dist/spending/index.es.js +7 -7
- package/dist/transactions/index.es.js +11 -11
- package/dist/trends/index.es.js +12 -12
- package/dist/{useAccountDisplayName-BsiXA0qf.mjs → useAccountDisplayName-DHXXCFYZ.mjs} +2 -2
- package/dist/{useAccountDisplayName-BsiXA0qf.mjs.map → useAccountDisplayName-DHXXCFYZ.mjs.map} +1 -1
- package/dist/{useInsightsEnabled-D5Sdm0TJ.mjs → useInsightsEnabled-B_UpjpE6.mjs} +2 -2
- package/dist/{useInsightsEnabled-D5Sdm0TJ.mjs.map → useInsightsEnabled-B_UpjpE6.mjs.map} +1 -1
- package/dist/{useWidgetLoadTimer-B0tB-yzL.mjs → useWidgetLoadTimer-C0Mr0eRf.mjs} +2 -2
- package/dist/{useWidgetLoadTimer-B0tB-yzL.mjs.map → useWidgetLoadTimer-C0Mr0eRf.mjs.map} +1 -1
- package/package.json +1 -1
- package/dist/ErrorBoundary-CsdOcnJ9.mjs +0 -24
- package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +0 -1
- package/dist/GlobalCopyApi-wcnDUzMV.mjs +0 -129
- package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +0 -1
- package/dist/Help-zVZdcmlk.mjs.map +0 -1
- package/dist/UserStore-E5WvBXaY.mjs.map +0 -1
- package/dist/hooks-97sNJ_lf.mjs +0 -78
- package/dist/hooks-97sNJ_lf.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsxs as c, jsx as e, Fragment as
|
|
1
|
+
import { jsxs as c, jsx as e, Fragment as B } from "react/jsx-runtime";
|
|
2
2
|
import f from "react";
|
|
3
3
|
import { observer as C } from "mobx-react-lite";
|
|
4
4
|
import v from "@mui/material/Divider";
|
|
@@ -7,7 +7,7 @@ import O from "@mui/material/ListItem";
|
|
|
7
7
|
import L from "@mui/material/ListItemText";
|
|
8
8
|
import V from "@mui/material/ListItemButton";
|
|
9
9
|
import h from "@mui/material/Stack";
|
|
10
|
-
import { ChevronRight as
|
|
10
|
+
import { ChevronRight as S, ExpandMore as ee, Star as te } from "@mxenabled/mx-icons";
|
|
11
11
|
import { Text as x, InstitutionLogo as ne, H3 as F } from "@mxenabled/mxui";
|
|
12
12
|
import { endOfMonth as ie } from "date-fns/endOfMonth";
|
|
13
13
|
import { startOfMonth as oe } from "date-fns/startOfMonth";
|
|
@@ -16,11 +16,11 @@ import { LocalizationProvider as ae } from "@mui/x-date-pickers/LocalizationProv
|
|
|
16
16
|
import { AdapterDateFns as ce } from "@mui/x-date-pickers/AdapterDateFnsV3";
|
|
17
17
|
import { b as le } from "./Localization-DnoVyBNK.mjs";
|
|
18
18
|
import { b as re, f as de } from "./NumberFormatting--XMeeBfr.mjs";
|
|
19
|
-
import { u as k,
|
|
19
|
+
import { u as k, B as T, D as A, c as J, f as me, i as q, a as he } from "./hooks-DWOrMnfZ.mjs";
|
|
20
20
|
import { A as ue, N as b } from "./Notification-DTNYSd8P.mjs";
|
|
21
21
|
import { T as R, a as D } from "./ToggleListItem-Dl1lXNwj.mjs";
|
|
22
|
-
import { D as
|
|
23
|
-
import { C as _e } from "./CurrencyInput-
|
|
22
|
+
import { D as N } from "./Dialog-Bvd2n8hz.mjs";
|
|
23
|
+
import { C as _e } from "./CurrencyInput-CABYmqBh.mjs";
|
|
24
24
|
import { u as fe } from "./useScreenSize-mWpmnh5w.mjs";
|
|
25
25
|
import { D as K } from "./Drawer-DsnW2o0v.mjs";
|
|
26
26
|
import pe from "@mui/material/Collapse";
|
|
@@ -31,11 +31,11 @@ import j from "@mui/material/Button";
|
|
|
31
31
|
import U from "@mui/material/TextField";
|
|
32
32
|
import { u as be } from "./useDimensions-CeDR9V8N.mjs";
|
|
33
33
|
import { useTheme as Q } from "@mui/material/styles";
|
|
34
|
-
import { u as xe } from "./useInsightsEnabled-
|
|
35
|
-
import { u as Ce } from "./useWidgetLoadTimer-
|
|
34
|
+
import { u as xe } from "./useInsightsEnabled-B_UpjpE6.mjs";
|
|
35
|
+
import { u as Ce } from "./useWidgetLoadTimer-C0Mr0eRf.mjs";
|
|
36
36
|
import { L as ve } from "./Loader-CxeBwuPG.mjs";
|
|
37
37
|
const Te = C(() => {
|
|
38
|
-
const { common: n, settings: t } = k(), { sendEmailVerification: s } = T(), { user: l } =
|
|
38
|
+
const { common: n, settings: t } = k(), { sendEmailVerification: s } = T(), { user: l } = A(), i = Q(), [r, a] = f.useState(!1), o = () => {
|
|
39
39
|
a(!1);
|
|
40
40
|
}, u = () => {
|
|
41
41
|
a(!0);
|
|
@@ -43,10 +43,10 @@ const Te = C(() => {
|
|
|
43
43
|
return /* @__PURE__ */ c(f.Fragment, { children: [
|
|
44
44
|
/* @__PURE__ */ c(j, { onClick: u, sx: { height: "auto", p: 4, width: "fit-content" }, children: [
|
|
45
45
|
/* @__PURE__ */ e(x, { variant: "body2", children: t.verify_email }),
|
|
46
|
-
/* @__PURE__ */ e(
|
|
46
|
+
/* @__PURE__ */ e(S, {})
|
|
47
47
|
] }),
|
|
48
48
|
/* @__PURE__ */ e(
|
|
49
|
-
|
|
49
|
+
N,
|
|
50
50
|
{
|
|
51
51
|
copy: { title: "" },
|
|
52
52
|
isOpen: r,
|
|
@@ -87,7 +87,7 @@ const Te = C(() => {
|
|
|
87
87
|
({ handleClose: n, handleVerify: t, isOpen: s }) => {
|
|
88
88
|
const { common: l, settings: i } = k(), [r, a] = f.useState("");
|
|
89
89
|
return /* @__PURE__ */ e(
|
|
90
|
-
|
|
90
|
+
N,
|
|
91
91
|
{
|
|
92
92
|
copy: { title: i.enter_verification_code },
|
|
93
93
|
isOpen: s,
|
|
@@ -109,7 +109,7 @@ const Te = C(() => {
|
|
|
109
109
|
);
|
|
110
110
|
}
|
|
111
111
|
), De = C(() => {
|
|
112
|
-
const { common: n, settings: t } = k(), { sendPhoneVerification: s, verifyPhoneToken: l } = T(), { user: i } =
|
|
112
|
+
const { common: n, settings: t } = k(), { sendPhoneVerification: s, verifyPhoneToken: l } = T(), { user: i } = A(), r = Q(), [a, o] = f.useState(!1), [u, d] = f.useState(!1), p = () => {
|
|
113
113
|
o(!1);
|
|
114
114
|
}, _ = () => {
|
|
115
115
|
o(!0);
|
|
@@ -125,10 +125,10 @@ const Te = C(() => {
|
|
|
125
125
|
return /* @__PURE__ */ c(f.Fragment, { children: [
|
|
126
126
|
/* @__PURE__ */ c(j, { onClick: _, sx: { height: "auto", p: 4, width: "fit-content" }, children: [
|
|
127
127
|
/* @__PURE__ */ e(x, { variant: "body2", children: t.verify_phone }),
|
|
128
|
-
/* @__PURE__ */ e(
|
|
128
|
+
/* @__PURE__ */ e(S, {})
|
|
129
129
|
] }),
|
|
130
130
|
/* @__PURE__ */ e(
|
|
131
|
-
|
|
131
|
+
N,
|
|
132
132
|
{
|
|
133
133
|
copy: { title: "" },
|
|
134
134
|
isOpen: a,
|
|
@@ -194,7 +194,7 @@ const Te = C(() => {
|
|
|
194
194
|
institutionGuid: t.account?.institution_guid
|
|
195
195
|
}
|
|
196
196
|
) : void 0,
|
|
197
|
-
endIcon: /* @__PURE__ */ e(
|
|
197
|
+
endIcon: /* @__PURE__ */ e(S, {}),
|
|
198
198
|
isChecked: t.is_enabled,
|
|
199
199
|
isDisabled: !t.is_enabled,
|
|
200
200
|
isPrimaryTextBold: !0,
|
|
@@ -208,7 +208,7 @@ const Te = C(() => {
|
|
|
208
208
|
}
|
|
209
209
|
),
|
|
210
210
|
/* @__PURE__ */ e(
|
|
211
|
-
|
|
211
|
+
N,
|
|
212
212
|
{
|
|
213
213
|
copy: {
|
|
214
214
|
title: a ? l.day_of_the_month : i.notification_threshold_label,
|
|
@@ -257,7 +257,7 @@ const Te = C(() => {
|
|
|
257
257
|
}
|
|
258
258
|
), we = C(
|
|
259
259
|
({ onUpdateProfile: n, profile: t }) => {
|
|
260
|
-
const { settings: s } = k(), { user: l } =
|
|
260
|
+
const { settings: s } = k(), { user: l } = A(), { clientCommunicationProfile: i, userCommunicationsProfile: r } = T(), { isMobile: a } = fe(), o = t.notification_type > 2, {
|
|
261
261
|
opted_out_of_email_notifications: u,
|
|
262
262
|
opted_out_of_push_notifications: d,
|
|
263
263
|
opted_out_of_sms_notifications: p
|
|
@@ -267,7 +267,7 @@ const Te = C(() => {
|
|
|
267
267
|
sms_notifications_enabled: m
|
|
268
268
|
} = i;
|
|
269
269
|
return /* @__PURE__ */ c(h, { children: [
|
|
270
|
-
(_ || m || y) && /* @__PURE__ */ c(
|
|
270
|
+
(_ || m || y) && /* @__PURE__ */ c(B, { children: [
|
|
271
271
|
/* @__PURE__ */ e(x, { bold: !0, sx: { mb: 4, ml: 24, mt: 12 }, variant: "caption", children: s.delivery_method_title }),
|
|
272
272
|
/* @__PURE__ */ c(E, { sx: { bgcolor: "background.paper" }, children: [
|
|
273
273
|
_ && /* @__PURE__ */ e(h, { sx: { pl: 24 }, children: /* @__PURE__ */ e(
|
|
@@ -337,7 +337,7 @@ const Te = C(() => {
|
|
|
337
337
|
n.filter((o) => o.children && o.children.length > 0).map((o) => /* @__PURE__ */ e(
|
|
338
338
|
R,
|
|
339
339
|
{
|
|
340
|
-
endIcon: /* @__PURE__ */ e(
|
|
340
|
+
endIcon: /* @__PURE__ */ e(S, {}),
|
|
341
341
|
isChecked: o.is_enabled,
|
|
342
342
|
isDisabled: !o.is_enabled,
|
|
343
343
|
onClick: () => l(o.guid),
|
|
@@ -376,7 +376,7 @@ const Te = C(() => {
|
|
|
376
376
|
opted_out_of_push_notifications: o,
|
|
377
377
|
opted_out_of_sms_notifications: u
|
|
378
378
|
}
|
|
379
|
-
} = T(), { user: d } =
|
|
379
|
+
} = T(), { user: d } = A(), [p, _] = f.useState(!1), y = async () => {
|
|
380
380
|
await m({ ...n, is_enabled: !n.is_enabled }), n.is_enabled && _(!1);
|
|
381
381
|
}, m = async (P) => {
|
|
382
382
|
await r(P);
|
|
@@ -448,12 +448,12 @@ const Te = C(() => {
|
|
|
448
448
|
}), $ = C(() => {
|
|
449
449
|
const { budgetProfiles: n } = T();
|
|
450
450
|
return /* @__PURE__ */ e(h, { children: n.map((t) => /* @__PURE__ */ e(X, { profile: t }, t.guid)) });
|
|
451
|
-
}),
|
|
451
|
+
}), Se = C(() => {
|
|
452
452
|
const { onEvent: n } = me(), { settings: t } = k(), {
|
|
453
453
|
clientCommunicationProfile: s,
|
|
454
454
|
updateUserCommunicationProfile: l,
|
|
455
455
|
userCommunicationsProfile: i
|
|
456
|
-
} = T(), { user: r } =
|
|
456
|
+
} = T(), { user: r } = A(), a = async (o, u) => {
|
|
457
457
|
const d = { ...i, [o]: u };
|
|
458
458
|
if (n) {
|
|
459
459
|
const _ = o.split("_")[3];
|
|
@@ -463,7 +463,7 @@ const Te = C(() => {
|
|
|
463
463
|
};
|
|
464
464
|
return /* @__PURE__ */ c(h, { children: [
|
|
465
465
|
/* @__PURE__ */ e(F, { sx: { mt: 24 }, children: t.delivery_method_title }),
|
|
466
|
-
s.email_notifications_enabled && /* @__PURE__ */ c(
|
|
466
|
+
s.email_notifications_enabled && /* @__PURE__ */ c(B, { children: [
|
|
467
467
|
/* @__PURE__ */ e(
|
|
468
468
|
D,
|
|
469
469
|
{
|
|
@@ -480,7 +480,7 @@ const Te = C(() => {
|
|
|
480
480
|
),
|
|
481
481
|
(s.sms_notifications_enabled || s.push_notifications_enabled) && /* @__PURE__ */ e(v, {})
|
|
482
482
|
] }),
|
|
483
|
-
s.sms_notifications_enabled && /* @__PURE__ */ c(
|
|
483
|
+
s.sms_notifications_enabled && /* @__PURE__ */ c(B, { children: [
|
|
484
484
|
/* @__PURE__ */ e(
|
|
485
485
|
D,
|
|
486
486
|
{
|
|
@@ -514,8 +514,8 @@ const Te = C(() => {
|
|
|
514
514
|
}), H = C(() => {
|
|
515
515
|
const { insightsProfiles: n } = T();
|
|
516
516
|
return /* @__PURE__ */ e(h, { children: n.map((t) => /* @__PURE__ */ e(X, { profile: t }, t.guid)) });
|
|
517
|
-
}),
|
|
518
|
-
const { config: n } = q(), [t, { width: s }] = be(), { common: l, settings: i } = k(), { updateUser: r } = T(), { user: a } =
|
|
517
|
+
}), Ae = () => {
|
|
518
|
+
const { config: n } = q(), [t, { width: s }] = be(), { common: l, settings: i } = k(), { updateUser: r } = T(), { user: a } = A(), [o, u] = f.useState(!1), [d, p] = f.useState({
|
|
519
519
|
email: a.email,
|
|
520
520
|
phone: a.phone
|
|
521
521
|
}), _ = d.email && !a.email_is_verified && !o, y = d.phone && !a.phone_is_verified && !o, m = (P) => {
|
|
@@ -596,7 +596,7 @@ const Te = C(() => {
|
|
|
596
596
|
)
|
|
597
597
|
] })
|
|
598
598
|
] });
|
|
599
|
-
}, Ie = C(
|
|
599
|
+
}, Ie = C(Ae), ut = C(
|
|
600
600
|
({
|
|
601
601
|
notificationTypes: n = [b.Accounts, b.Budgets],
|
|
602
602
|
showPersonalDetails: t = !1,
|
|
@@ -630,8 +630,8 @@ const Te = C(() => {
|
|
|
630
630
|
const Y = l.display_email_edit_field_in_settings || l.display_sms_edit_field_in_settings, Z = t && u.can_edit_contact_info && Y;
|
|
631
631
|
return /* @__PURE__ */ c(h, { sx: { pt: G ? 0 : 24 }, children: [
|
|
632
632
|
/* @__PURE__ */ c(h, { sx: { px: 24 }, children: [
|
|
633
|
-
G && /* @__PURE__ */ c(
|
|
634
|
-
/* @__PURE__ */ e(
|
|
633
|
+
G && /* @__PURE__ */ c(B, { children: [
|
|
634
|
+
/* @__PURE__ */ e(Se, {}),
|
|
635
635
|
/* @__PURE__ */ e(v, { sx: { my: 24 } })
|
|
636
636
|
] }),
|
|
637
637
|
/* @__PURE__ */ e(F, { sx: { mb: 4 }, children: i.notification_types_title })
|
|
@@ -639,15 +639,15 @@ const Te = C(() => {
|
|
|
639
639
|
/* @__PURE__ */ c(E, { children: [
|
|
640
640
|
n.includes(b.Accounts) && /* @__PURE__ */ e(O, { children: /* @__PURE__ */ c(V, { onClick: () => g(b.Accounts), children: [
|
|
641
641
|
/* @__PURE__ */ e(L, { primary: i.accounts_title, secondary: i.accounts_subtitle }),
|
|
642
|
-
/* @__PURE__ */ e(
|
|
642
|
+
/* @__PURE__ */ e(S, {})
|
|
643
643
|
] }) }),
|
|
644
644
|
n.includes(b.Budgets) && /* @__PURE__ */ e(O, { children: /* @__PURE__ */ c(V, { onClick: () => g(b.Budgets), children: [
|
|
645
645
|
/* @__PURE__ */ e(L, { primary: i.budgets_title, secondary: i.budgets_subtitle }),
|
|
646
|
-
/* @__PURE__ */ e(
|
|
646
|
+
/* @__PURE__ */ e(S, {})
|
|
647
647
|
] }) }),
|
|
648
648
|
n.includes(b.Insights) && /* @__PURE__ */ e(O, { children: /* @__PURE__ */ c(V, { onClick: () => g(b.Insights), children: [
|
|
649
649
|
/* @__PURE__ */ e(L, { primary: i.insights_title, secondary: i.insights_subtitle }),
|
|
650
|
-
/* @__PURE__ */ e(
|
|
650
|
+
/* @__PURE__ */ e(S, {})
|
|
651
651
|
] }) })
|
|
652
652
|
] }),
|
|
653
653
|
Z && /* @__PURE__ */ e(h, { sx: { px: 24 }, children: /* @__PURE__ */ e(Ie, {}) }),
|
|
@@ -675,4 +675,4 @@ export {
|
|
|
675
675
|
Te as V,
|
|
676
676
|
De as a
|
|
677
677
|
};
|
|
678
|
-
//# sourceMappingURL=NotificationSettings-
|
|
678
|
+
//# sourceMappingURL=NotificationSettings-DltXMrnb.mjs.map
|
package/dist/{NotificationSettings-CW7okUrk.mjs.map → NotificationSettings-DltXMrnb.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationSettings-CW7okUrk.mjs","sources":["../src/settings/components/profile/actions/VerifyEmailAction.tsx","../src/settings/components/profile/actions/VerifyTokenAction.tsx","../src/settings/components/profile/actions/VerifyPhoneAction.tsx","../src/settings/components/notifications/AccountProfileListItem.tsx","../src/settings/components/notifications/AccountNotificationProfile.tsx","../src/settings/components/notifications/AccountNotificationProfiles.tsx","../src/settings/components/notifications/NotificationProfile.tsx","../src/settings/components/notifications/BudgetNotificationProfiles.tsx","../src/settings/components/notifications/DeliveryMethods.tsx","../src/settings/components/notifications/InsightsNotificationProfiles.tsx","../src/settings/components/notifications/PersonalDetails.tsx","../src/settings/components/notifications/NotificationSettings.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { Dialog, useGlobalCopyStore, useSettingsStore, useUserStore } from '../../../../common'\n\nconst VerifyEmailAction = observer(() => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { sendEmailVerification } = useSettingsStore()\n const { user } = useUserStore()\n const theme = useTheme()\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n const handleClose = (): void => {\n setIsOpen(false)\n }\n\n const handleOpen = (): void => {\n setIsOpen(true)\n }\n\n return (\n <React.Fragment>\n <Button onClick={handleOpen} sx={{ height: 'auto', p: 4, width: 'fit-content' }}>\n <Text variant=\"body2\">{settingsCopy.verify_email}</Text>\n <ChevronRight />\n </Button>\n <Dialog\n copy={{ title: '' }}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={sendEmailVerification}\n onSecondaryAction={handleClose}\n primaryText={settingsCopy.send_verification}\n secondaryText={commonCopy.back}\n sx={{\n '& .MuiDialogContent-root': { pt: 0, width: 400 },\n\n '& .MuiToolbar-root:last-child': {\n gap: 16,\n padding: '32px 60px 48px',\n justifyContent: 'center',\n },\n }}\n >\n <Stack spacing={16} sx={{ px: 40, textAlign: 'center', width: '100%' }}>\n <Text bold={true} truncate={false} variant=\"body1\">\n {settingsCopy.confirm_your_email}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.confirm_email}\n </Text>\n <Text\n sx={{\n border: `1px solid ${theme.palette.neutral.light}`,\n borderRadius: '4px',\n p: '16px 32px',\n }}\n variant=\"h3\"\n >\n {user.email}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.verification_notice_email}\n </Text>\n </Stack>\n </Dialog>\n </React.Fragment>\n )\n})\n\nexport default VerifyEmailAction\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Stack from '@mui/material/Stack'\nimport TextField from '@mui/material/TextField'\n\nimport { Dialog, useGlobalCopyStore } from '../../../../common'\n\ninterface ActionProps {\n handleClose: () => void\n handleVerify: (token: string) => void\n isOpen: boolean\n}\n\nconst VerifyTokenAction: React.FC<ActionProps> = observer(\n ({ handleClose, handleVerify, isOpen }) => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const [token, setToken] = React.useState('')\n\n return (\n <Dialog\n copy={{ title: settingsCopy.enter_verification_code }}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={() => handleVerify(token)}\n onSecondaryAction={handleClose}\n primaryText={settingsCopy.verify}\n secondaryText={commonCopy.cancel_button}\n sx={{\n '& .MuiDialogContent-root': { pt: 0, width: 400 },\n '& .MuiToolbar-root:last-child': {\n gap: 8,\n padding: 24,\n justifyContent: 'flex-end',\n },\n }}\n >\n <Stack>\n <TextField onChange={(e) => setToken(e.target.value)} sx={{ width: 352 }} value={token} />\n </Stack>\n </Dialog>\n )\n },\n)\n\nexport default VerifyTokenAction\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\nimport { Dialog, useGlobalCopyStore, useSettingsStore, useUserStore } from '../../../../common'\nimport VerifyTokenAction from './VerifyTokenAction'\n\nconst VerifyPhoneAction = observer(() => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { sendPhoneVerification, verifyPhoneToken } = useSettingsStore()\n const { user } = useUserStore()\n const theme = useTheme()\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [showVerifyToken, setShowVerifyToken] = React.useState(false)\n\n const handleClose = (): void => {\n setIsOpen(false)\n }\n\n const handleOpen = (): void => {\n setIsOpen(true)\n }\n\n const handlePhoneVerify = () => {\n sendPhoneVerification().finally(() => {\n setShowVerifyToken(true)\n })\n }\n\n const handleTokenVerify = (token: string) => {\n verifyPhoneToken(token).finally(() => {\n setShowVerifyToken(false)\n })\n }\n\n return (\n <React.Fragment>\n <Button onClick={handleOpen} sx={{ height: 'auto', p: 4, width: 'fit-content' }}>\n <Text variant=\"body2\">{settingsCopy.verify_phone}</Text>\n <ChevronRight />\n </Button>\n <Dialog\n copy={{ title: '' }}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={handlePhoneVerify}\n onSecondaryAction={handleClose}\n primaryText={settingsCopy.send_verification}\n secondaryText={commonCopy.back}\n sx={{\n '& .MuiDialogContent-root': { pt: 0, width: 400 },\n\n '& .MuiToolbar-root:last-child': {\n gap: 16,\n padding: '32px 60px 48px',\n justifyContent: 'center',\n },\n }}\n >\n <Stack spacing={16} sx={{ px: 40, textAlign: 'center', width: '100%' }}>\n <Text bold={true} truncate={false} variant=\"body1\">\n {settingsCopy.confirm_your_phone}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.confirm_phone}\n </Text>\n <Text\n sx={{\n border: `1px solid ${theme.palette.neutral.light}`,\n borderRadius: '4px',\n p: '16px 32px',\n }}\n variant=\"h3\"\n >\n {user.phone}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.verification_notice_phone}\n </Text>\n </Stack>\n </Dialog>\n <VerifyTokenAction\n handleClose={() => setShowVerifyToken(false)}\n handleVerify={handleTokenVerify}\n isOpen={showVerifyToken}\n />\n </React.Fragment>\n )\n})\n\nexport default VerifyPhoneAction\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { endOfMonth } from 'date-fns/endOfMonth'\nimport { startOfMonth } from 'date-fns/startOfMonth'\n\nimport Stack from '@mui/material/Stack'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { InstitutionLogo } from '@mxenabled/mxui'\n\nimport {\n CurrencyInput,\n Dialog,\n ToggleButtonListItem,\n useAccountStore,\n useGlobalCopyStore,\n} from '../../../common'\nimport { AccountNotificationTypes, DetailedNotificationProfile } from '../../../core'\nimport { formatCurrency, formatOrdinal } from '../../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface AccountProfileListItemProps {\n onProfileUpdated: (profile: DetailedNotificationProfile) => void\n profile: DetailedNotificationProfile\n}\n\nexport const AccountProfileListItem = observer(\n ({ onProfileUpdated, profile }: AccountProfileListItemProps) => {\n const { common: commonCopy, recurring: recurringCopy, settings: copy } = useGlobalCopyStore()\n const { updateAccount } = useAccountStore()\n\n const isPaymentReminder =\n profile.notification_type === AccountNotificationTypes.DebtPaymentReminder\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [amount, setAmount] = React.useState<number>(profile.threshold || 0)\n const [paymentDay, setPaymentDay] = React.useState<number>(\n profile.account?.day_payment_is_due || 0,\n )\n\n const accountName = profile.account?.name || profile.account?.feed_name || ''\n const accountPaymentDate = profile.account?.day_payment_is_due\n ? (buildDynamicCopy(\n copy.notification_debt_payment_date,\n formatOrdinal(profile.account?.day_payment_is_due),\n ) as string)\n : copy.notification_debt_payment_zero_state\n\n const secondaryText = isPaymentReminder\n ? accountPaymentDate\n : formatCurrency(profile.threshold ?? 0, '0,0')\n\n const handleUpdateProfile = async () => {\n if (isPaymentReminder && profile.account) {\n await updateAccount({ ...profile.account, day_payment_is_due: paymentDay })\n } else {\n onProfileUpdated({ ...profile, threshold: amount })\n }\n }\n\n return (\n <Stack>\n <ToggleButtonListItem\n avatar={\n profile.account?.institution_guid ? (\n <InstitutionLogo\n alt={profile.label}\n institutionGuid={profile.account?.institution_guid}\n />\n ) : undefined\n }\n endIcon={<ChevronRight />}\n isChecked={profile.is_enabled}\n isDisabled={!profile.is_enabled}\n isPrimaryTextBold={true}\n onClick={() => setIsOpen(true)}\n onToggle={() =>\n onProfileUpdated({\n ...profile,\n is_enabled: !profile.is_enabled,\n })\n }\n primaryText={accountName}\n secondaryText={!profile.is_enabled ? copy.notification_disabled : secondaryText}\n />\n\n <Dialog\n copy={{\n title: isPaymentReminder\n ? recurringCopy.day_of_the_month\n : copy.notification_threshold_label,\n close_aria: commonCopy.close_aria,\n }}\n disablePrimaryButton={isPaymentReminder && paymentDay === 0}\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onPrimaryAction={handleUpdateProfile}\n primaryText={commonCopy.save_button}\n >\n {isPaymentReminder ? (\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DateCalendar\n maxDate={endOfMonth(new Date())}\n minDate={startOfMonth(new Date())}\n onChange={(date: Date) => {\n setPaymentDay(date.getDate())\n }}\n slots={{\n // Hides the arrows\n leftArrowIcon: () => null,\n rightArrowIcon: () => null,\n }}\n sx={{\n // TODO: Needs to be updated in MXUI\n '& .MuiPickersDay-today': {\n color: 'primary.main',\n },\n }}\n views={['day']}\n />\n </LocalizationProvider>\n ) : (\n <CurrencyInput\n amount={amount}\n autoFocus={true}\n fullWidth={true}\n minAmount={0}\n setAmount={(value) => setAmount(Number(value) || 0)}\n sx={{ '.MuiTypography-body1': { p: 0 } }}\n />\n )}\n </Dialog>\n </Stack>\n )\n },\n)\n","import { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport {\n ToggleListItem,\n useGlobalCopyStore,\n useScreenSize,\n useSettingsStore,\n useUserStore,\n} from '../../../common'\nimport { DetailedNotificationProfile } from '../../../core'\n\nimport { AccountProfileListItem } from './AccountProfileListItem'\n\ninterface AccountNotificationProfileProps {\n onUpdateProfile: (profile: DetailedNotificationProfile) => void\n profile: DetailedNotificationProfile\n}\n\nexport const AccountNotificationProfile = observer(\n ({ onUpdateProfile, profile }: AccountNotificationProfileProps) => {\n const { settings: copy } = useGlobalCopyStore()\n const { user } = useUserStore()\n const { clientCommunicationProfile, userCommunicationsProfile } = useSettingsStore()\n const { isMobile } = useScreenSize()\n\n const isAccountProfile = profile.notification_type > 2\n const {\n opted_out_of_email_notifications: emailDisabled,\n opted_out_of_push_notifications: pushDisabled,\n opted_out_of_sms_notifications: smsDisabled,\n } = userCommunicationsProfile\n\n const {\n email_notifications_enabled: showEmail,\n push_notifications_enabled: showPush,\n sms_notifications_enabled: showSms,\n } = clientCommunicationProfile\n\n return (\n <Stack>\n {(showEmail || showSms || showPush) && (\n <>\n <Text bold={true} sx={{ mb: 4, ml: 24, mt: 12 }} variant=\"caption\">\n {copy.delivery_method_title}\n </Text>\n <List sx={{ bgcolor: 'background.paper' }}>\n {showEmail && (\n <Stack sx={{ pl: 24 }}>\n <ToggleListItem\n isChecked={!emailDisabled && profile.email_channel && !!user.email}\n isDisabled={emailDisabled || !user.email}\n onToggle={() =>\n onUpdateProfile({ ...profile, email_channel: !profile.email_channel })\n }\n primaryText={copy.delivery_method_email_label}\n secondaryText={\n emailDisabled || !profile.email_channel || !user.email\n ? copy.notification_disabled\n : copy.notification_enabled\n }\n useExtraPadding={false}\n />\n </Stack>\n )}\n\n {showEmail && (showSms || showPush) && <Divider sx={{ ml: isMobile ? 0 : 24 }} />}\n\n {showSms && (\n <Stack sx={{ pl: 24 }}>\n <ToggleListItem\n isChecked={!smsDisabled && profile.sms_channel && !!user.phone}\n isDisabled={smsDisabled || !user.phone}\n onToggle={() =>\n onUpdateProfile({ ...profile, sms_channel: !profile.sms_channel })\n }\n primaryText={`${copy.delivery_method_sms_label}`}\n secondaryText={\n smsDisabled || !profile.sms_channel || !user.phone\n ? copy.notification_disabled\n : copy.notification_enabled\n }\n useExtraPadding={false}\n />\n </Stack>\n )}\n\n {showSms && showPush && <Divider sx={{ ml: isMobile ? 0 : 24 }} />}\n\n {showPush && (\n <Stack sx={{ pl: 24 }}>\n <ToggleListItem\n isChecked={!pushDisabled && profile.push_channel}\n isDisabled={pushDisabled}\n onToggle={() =>\n onUpdateProfile({ ...profile, push_channel: !profile.push_channel })\n }\n primaryText={copy.delivery_method_push_label}\n secondaryText={copy.delivery_method_push_subtitle}\n useExtraPadding={false}\n />\n </Stack>\n )}\n <Divider />\n </List>\n </>\n )}\n\n {isAccountProfile && Boolean(profile.children?.length) && (\n <Stack>\n <Text bold={true} sx={{ mb: 4, ml: 24, mt: 12 }} variant=\"caption\">\n {copy.accounts_threshold_title}\n </Text>\n\n <List sx={{ bgcolor: 'background.paper' }}>\n {profile.children?.map((child) => (\n <AccountProfileListItem\n key={child.guid}\n onProfileUpdated={onUpdateProfile}\n profile={child}\n />\n ))}\n </List>\n </Stack>\n )}\n </Stack>\n )\n },\n)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { Drawer, ToggleButtonListItem, useSettingsStore } from '../../../common'\nimport { DetailedNotificationProfile } from '../../../core'\n\nimport { AccountNotificationProfile } from './AccountNotificationProfile'\n\nexport const AccountNotificationProfiles = observer(() => {\n const { accountProfiles, updateNotificationProfile } = useSettingsStore()\n\n const [selectedProfileGuid, setSelectedProfileGuid] = React.useState('')\n\n const selectedProfile = React.useMemo(\n () => accountProfiles.find((profile) => profile.guid === selectedProfileGuid),\n [accountProfiles, selectedProfileGuid],\n )\n\n const handleProfileToggle = async (profile: DetailedNotificationProfile) => {\n await updateNotificationProfile({\n ...profile,\n is_enabled: !profile.is_enabled,\n })\n }\n\n const handleProfileUpdate = async (profile: DetailedNotificationProfile) => {\n await updateNotificationProfile(profile)\n }\n\n return (\n <Stack sx={{ backgroundColor: 'background.paper' }}>\n {accountProfiles\n // Don't show notification profiles that have no associated accounts (children)\n .filter((profile) => profile.children && profile.children.length > 0)\n .map((profile) => (\n <ToggleButtonListItem\n endIcon={<ChevronRight />}\n isChecked={profile.is_enabled}\n isDisabled={!profile.is_enabled}\n key={profile.guid}\n onClick={() => setSelectedProfileGuid(profile.guid)}\n onToggle={() => handleProfileToggle(profile)}\n primaryText={profile.label}\n secondaryText={profile.is_enabled ? profile.deliveryMethodsLabel : undefined}\n />\n ))}\n <Drawer\n isOpen={Boolean(selectedProfile)}\n onClose={() => setSelectedProfileGuid('')}\n title={selectedProfile ? selectedProfile.label : ''}\n >\n {selectedProfile && (\n <AccountNotificationProfile\n onUpdateProfile={handleProfileUpdate}\n profile={selectedProfile}\n />\n )}\n </Drawer>\n </Stack>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Collapse from '@mui/material/Collapse'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\n\nimport { ExpandMore } from '@mxenabled/mx-icons'\n\nimport {\n ToggleButtonListItem,\n ToggleListItem,\n useGlobalCopyStore,\n useSettingsStore,\n useUserStore,\n} from '../../../common'\nimport { type DetailedNotificationProfile } from '../../../core'\n\ninterface BudgetNotificationProfileProps {\n profile: DetailedNotificationProfile\n}\n\nexport const NotificationProfile = observer(({ profile }: BudgetNotificationProfileProps) => {\n const { settings: copy } = useGlobalCopyStore()\n const {\n clientCommunicationProfile: {\n email_notifications_enabled: showEmail,\n push_notifications_enabled: showPush,\n sms_notifications_enabled: showSms,\n },\n updateNotificationProfile,\n userCommunicationsProfile: {\n opted_out_of_email_notifications: emailDisabled,\n opted_out_of_push_notifications: pushDisabled,\n opted_out_of_sms_notifications: smsDisabled,\n },\n } = useSettingsStore()\n\n const { user: userDetails } = useUserStore()\n\n const [isExpanded, setIsExpanded] = React.useState(false)\n\n const handleProfileToggle = async () => {\n await handleUpdateProfile({ ...profile, is_enabled: !profile.is_enabled })\n\n if (profile.is_enabled) {\n setIsExpanded(false)\n }\n }\n\n const handleUpdateProfile = async (updatedProfile: DetailedNotificationProfile) => {\n await updateNotificationProfile(updatedProfile)\n }\n\n const hasDeliveryMethods = showEmail || showSms || showPush\n\n return (\n <List key={profile.guid} sx={{ bgcolor: 'background.paper' }}>\n <ToggleButtonListItem\n endIcon={\n hasDeliveryMethods ? (\n <ExpandMore\n sx={{\n transition: 'transform 0.3s ease-in-out',\n transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)',\n }}\n />\n ) : undefined\n }\n isChecked={profile.is_enabled}\n isDisabled={!profile.is_enabled}\n key={profile.guid}\n onClick={() => setIsExpanded(!isExpanded)}\n onToggle={() => handleProfileToggle()}\n primaryText={profile.label}\n secondaryText={profile.is_enabled ? profile.deliveryMethodsLabel : undefined}\n />\n {hasDeliveryMethods && (\n <Collapse in={isExpanded}>\n <List sx={{ bgcolor: 'background.paper' }}>\n {showEmail && (\n <ToggleListItem\n isChecked={!emailDisabled && profile.email_channel && !!userDetails.email}\n isDisabled={emailDisabled || !userDetails.email}\n onToggle={() =>\n handleUpdateProfile({\n ...profile,\n email_channel: !profile.email_channel,\n })\n }\n primaryText={copy.delivery_method_email_label}\n />\n )}\n\n {showEmail && (showSms || showPush) && <Divider sx={{ ml: 48 }} />}\n\n {showSms && (\n <ToggleListItem\n isChecked={!smsDisabled && profile.sms_channel && !!userDetails.phone}\n isDisabled={smsDisabled || !userDetails.phone}\n onToggle={() =>\n handleUpdateProfile({\n ...profile,\n sms_channel: !profile.sms_channel,\n })\n }\n primaryText={copy.delivery_method_sms_label}\n />\n )}\n\n {showSms && showPush && <Divider sx={{ ml: 48 }} />}\n\n {showPush && (\n <ToggleListItem\n isChecked={!pushDisabled && profile.push_channel}\n isDisabled={pushDisabled}\n onToggle={() =>\n handleUpdateProfile({\n ...profile,\n push_channel: !profile.push_channel,\n })\n }\n primaryText={copy.delivery_method_push_label}\n />\n )}\n </List>\n </Collapse>\n )}\n <Divider />\n </List>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { NotificationProfile } from './NotificationProfile'\n\nimport { useSettingsStore } from '../../../common'\n\nexport const BudgetNotificationProfiles = observer(() => {\n const { budgetProfiles } = useSettingsStore()\n\n return (\n <Stack>\n {budgetProfiles.map((profile) => (\n <NotificationProfile key={profile.guid} profile={profile} />\n ))}\n </Stack>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Card from '@mui/material/Card'\nimport CardContent from '@mui/material/CardContent'\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\n\nimport { Star } from '@mxenabled/mx-icons'\n\nimport { H3, Text } from '@mxenabled/mxui'\n\nimport {\n ToggleListItem,\n useEvent,\n useGlobalCopyStore,\n useSettingsStore,\n useUserStore,\n} from '../../../common'\nimport { type UserCommunicationProfile } from '../../../core'\n\nexport const DeliveryMethods = observer(() => {\n const { onEvent } = useEvent()\n const { settings: copy } = useGlobalCopyStore()\n const {\n clientCommunicationProfile: ccp,\n updateUserCommunicationProfile,\n userCommunicationsProfile: ucp,\n } = useSettingsStore()\n const { user } = useUserStore()\n\n const onProfileChange = async <K extends keyof UserCommunicationProfile>(\n key: K,\n value: UserCommunicationProfile[K],\n ) => {\n const updatedProfile = { ...ucp, [key]: value }\n\n if (onEvent) {\n const keyParts = key.split('_')\n const notificationType = keyParts[3] // e.g., 'email', 'sms', 'push' 'all'\n if (value === false) {\n onEvent('opt_in_notification_method', { notificationType })\n } else {\n onEvent('opt_out_notification_method', { notificationType })\n }\n }\n\n await updateUserCommunicationProfile(updatedProfile)\n }\n\n return (\n <Stack>\n <H3 sx={{ mt: 24 }}>{copy.delivery_method_title}</H3>\n\n {ccp.email_notifications_enabled && (\n <>\n <ToggleListItem\n isChecked={!!user.email && !ucp.opted_out_of_email_notifications}\n isDisabled={!user.email}\n onToggle={() =>\n onProfileChange(\n 'opted_out_of_email_notifications',\n !ucp.opted_out_of_email_notifications,\n )\n }\n primaryText={copy.delivery_method_email_title}\n secondaryText={\n !!user.email && !ucp.opted_out_of_email_notifications\n ? copy.notification_enabled\n : copy.notification_disabled\n }\n useExtraPadding={false}\n />\n\n {(ccp.sms_notifications_enabled || ccp.push_notifications_enabled) && <Divider />}\n </>\n )}\n\n {ccp.sms_notifications_enabled && (\n <>\n <ToggleListItem\n isChecked={!!user.phone && !ucp.opted_out_of_sms_notifications}\n isDisabled={!user.phone}\n onToggle={() =>\n onProfileChange('opted_out_of_sms_notifications', !ucp.opted_out_of_sms_notifications)\n }\n primaryText={copy.delivery_method_sms_title}\n secondaryText={\n !!user.phone && !ucp.opted_out_of_sms_notifications\n ? copy.notification_enabled\n : copy.notification_disabled\n }\n useExtraPadding={false}\n />\n\n {ccp.push_notifications_enabled && <Divider />}\n </>\n )}\n\n {ccp.push_notifications_enabled && (\n <ToggleListItem\n isChecked={!ucp.opted_out_of_push_notifications}\n isDisabled={true}\n onToggle={() => {}}\n primaryText={copy.delivery_method_push_title}\n secondaryText={copy.delivery_method_push_subtitle}\n useExtraPadding={false}\n />\n )}\n\n {ccp.sms_notifications_enabled && (\n <Card sx={{ backgroundColor: 'background.default', mt: 12 }} variant=\"outlined\">\n <CardContent>\n <Stack alignItems=\"flex-start\" direction=\"row\" gap={6}>\n <Star color=\"primary\" filled={true} />\n <Text variant=\"caption\">{copy.delivery_method_sms_note_1}</Text>\n </Stack>\n </CardContent>\n </Card>\n )}\n </Stack>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useSettingsStore } from '../../../common'\n\nimport { NotificationProfile } from './NotificationProfile'\n\nexport const InsightsNotificationProfiles = observer(() => {\n const { insightsProfiles } = useSettingsStore()\n\n return (\n <Stack>\n {insightsProfiles.map((profile) => (\n <NotificationProfile key={profile.guid} profile={profile} />\n ))}\n </Stack>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\nimport TextField from '@mui/material/TextField'\n\nimport { H3 } from '@mxenabled/mxui'\n\nimport { useAppConfig, useGlobalCopyStore, useSettingsStore, useUserStore } from '../../../common'\nimport { type EditableUser } from '../../../core'\nimport { useDimensions } from '../../../common/hooks/useDimensions'\n\nimport VerifyEmailAction from '../profile/actions/VerifyEmailAction'\nimport VerifyPhoneAction from '../profile/actions/VerifyPhoneAction'\n\nconst PersonalDetails = () => {\n const { config } = useAppConfig()\n const [containerRef, { width }] = useDimensions()\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { updateUser } = useSettingsStore()\n const { user } = useUserStore()\n\n const [hasUnsavedChanges, setHasUnsavedChanges] = React.useState(false)\n const [modifiedUser, setModifiedUser] = React.useState<EditableUser>({\n email: user.email,\n phone: user.phone,\n })\n\n const showVerifyEmail = modifiedUser.email && !user.email_is_verified && !hasUnsavedChanges\n const showVerifyPhone = modifiedUser.phone && !user.phone_is_verified && !hasUnsavedChanges\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value } = event.target\n const changedUser = { ...modifiedUser, [name]: value }\n\n setModifiedUser(changedUser)\n setHasUnsavedChanges(JSON.stringify({ ...user, ...changedUser }) !== JSON.stringify(user))\n }\n\n const handleSave = async () => {\n await updateUser({ ...user, ...modifiedUser })\n setHasUnsavedChanges(false)\n }\n\n return (\n <Stack ref={containerRef}>\n <Divider />\n <Stack sx={{ pt: 12 }}>\n <H3 sx={{ lineHeight: '20px', pb: 4, pt: 16 }}>{settingsCopy.personal_details}</H3>\n <Stack sx={{ flexDirection: width <= 768 ? 'column' : 'row', gap: 24, py: 16 }}>\n {config.display_email_edit_field_in_settings && (\n <Stack sx={{ flex: 1, pb: 14 }}>\n <TextField\n defaultValue={user.email}\n fullWidth={true}\n label={settingsCopy.email_address}\n name=\"email\"\n onChange={handleChange}\n />\n {showVerifyEmail && (\n <Box\n sx={{\n height: 20,\n '.MuiButton-root': {\n px: 0,\n ':hover': {\n bgcolor: 'transparent',\n },\n },\n }}\n >\n <VerifyEmailAction />\n </Box>\n )}\n </Stack>\n )}\n {config.display_sms_edit_field_in_settings && (\n <Stack sx={{ flex: 1, pb: 14 }}>\n <TextField\n defaultValue={user.phone}\n fullWidth={true}\n label={settingsCopy.mobile_number}\n name=\"phone\"\n onChange={handleChange}\n />\n {showVerifyPhone && (\n <Box\n sx={{\n height: 20,\n '.MuiButton-root': {\n px: 0,\n ':hover': {\n bgcolor: 'transparent',\n },\n },\n }}\n >\n <VerifyPhoneAction />\n </Box>\n )}\n </Stack>\n )}\n </Stack>\n <Button\n disabled={!hasUnsavedChanges}\n onClick={handleSave}\n sx={{ width: 84 }}\n variant=\"contained\"\n >\n {commonCopy.save_button}\n </Button>\n </Stack>\n </Stack>\n )\n}\n\nexport default observer(PersonalDetails)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { H3 } from '@mxenabled/mxui'\n\nimport {\n Drawer,\n Loader,\n useAccountStore,\n useAppConfig,\n useGlobalCopyStore,\n useGlobalUiStore,\n useInsightsEnabled,\n useSettingsStore,\n useWidgetLoadTimer,\n} from '../../../common'\nimport { NotificationTypes } from '../../../core'\n\nimport { AccountNotificationProfiles } from './AccountNotificationProfiles'\nimport { BudgetNotificationProfiles } from './BudgetNotificationProfiles'\nimport { DeliveryMethods } from './DeliveryMethods'\nimport { InsightsNotificationProfiles } from './InsightsNotificationProfiles'\nimport PersonalDetails from './PersonalDetails'\n\nexport interface NotificationSettingsProps {\n notificationTypes?: NotificationTypes[]\n showPersonalDetails?: boolean\n view?: string | undefined\n}\n\nexport const NotificationSettings: React.FC<NotificationSettingsProps> = observer(\n ({\n notificationTypes = [NotificationTypes.Accounts, NotificationTypes.Budgets],\n showPersonalDetails = false,\n view,\n }) => {\n const { config } = useAppConfig()\n const { settings: copy } = useGlobalCopyStore()\n const { isInitialized } = useGlobalUiStore()\n const { isAccountDataLoaded, loadAccountData } = useAccountStore()\n const { clientCommunicationProfile: ccp, loadNotificationProfiles } = useSettingsStore()\n const isInsightsEnabled = useInsightsEnabled()\n\n const [isLoaded, setIsLoaded] = React.useState(false)\n const [profileTypeOpen, setProfileTypeOpen] = React.useState<NotificationTypes | undefined>(\n undefined,\n )\n\n if (notificationTypes.length > 0 && isInsightsEnabled)\n notificationTypes.push(NotificationTypes.Insights)\n\n useWidgetLoadTimer({\n widgetName: 'NotificationSettingsWidget',\n isLoaded: isLoaded,\n })\n\n React.useEffect(() => {\n if (!isAccountDataLoaded) {\n loadAccountData().finally()\n }\n }, [])\n\n React.useEffect(() => {\n if (isInitialized) {\n loadNotificationProfiles().finally(() => setIsLoaded(true))\n }\n }, [isInitialized])\n\n if (!isInitialized) {\n return <Loader />\n }\n\n let drawerTitle = copy.manage_account_notifications\n if (profileTypeOpen === NotificationTypes.Budgets) {\n drawerTitle = copy.manage_budget_notifications\n } else if (profileTypeOpen === NotificationTypes.Insights) {\n drawerTitle = copy.manage_insights_notifications\n }\n\n const {\n email_notifications_enabled: emailEnabled,\n sms_notifications_enabled: smsEnabled,\n push_notifications_enabled: pushEnabled,\n } = ccp\n\n const hasDeliveryMethods = emailEnabled || smsEnabled || pushEnabled\n\n if (view === 'accounts') {\n return <AccountNotificationProfiles />\n } else if (view === 'budgets') {\n return <BudgetNotificationProfiles />\n } else if (view === 'insights') {\n return <InsightsNotificationProfiles />\n }\n\n const canEditFields =\n config.display_email_edit_field_in_settings || config.display_sms_edit_field_in_settings\n const shouldShowPersonalDetails =\n showPersonalDetails && ccp.can_edit_contact_info && canEditFields\n\n return (\n <Stack sx={{ pt: hasDeliveryMethods ? 0 : 24 }}>\n <Stack sx={{ px: 24 }}>\n {hasDeliveryMethods && (\n <>\n <DeliveryMethods />\n <Divider sx={{ my: 24 }} />\n </>\n )}\n\n <H3 sx={{ mb: 4 }}>{copy.notification_types_title}</H3>\n </Stack>\n <List>\n {notificationTypes.includes(NotificationTypes.Accounts) && (\n <ListItem>\n <ListItemButton onClick={() => setProfileTypeOpen(NotificationTypes.Accounts)}>\n <ListItemText primary={copy.accounts_title} secondary={copy.accounts_subtitle} />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n )}\n {notificationTypes.includes(NotificationTypes.Budgets) && (\n <ListItem>\n <ListItemButton onClick={() => setProfileTypeOpen(NotificationTypes.Budgets)}>\n <ListItemText primary={copy.budgets_title} secondary={copy.budgets_subtitle} />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n )}\n {notificationTypes.includes(NotificationTypes.Insights) && (\n <ListItem>\n <ListItemButton onClick={() => setProfileTypeOpen(NotificationTypes.Insights)}>\n <ListItemText primary={copy.insights_title} secondary={copy.insights_subtitle} />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n )}\n </List>\n\n {shouldShowPersonalDetails && (\n <Stack sx={{ px: 24 }}>\n <PersonalDetails />\n </Stack>\n )}\n\n <Drawer\n isOpen={Boolean(profileTypeOpen)}\n onClose={() => setProfileTypeOpen(undefined)}\n title={drawerTitle}\n >\n <Stack>\n {profileTypeOpen === NotificationTypes.Accounts && <AccountNotificationProfiles />}\n {profileTypeOpen === NotificationTypes.Budgets && <BudgetNotificationProfiles />}\n {profileTypeOpen === NotificationTypes.Insights && <InsightsNotificationProfiles />}\n </Stack>\n </Drawer>\n </Stack>\n )\n },\n)\n"],"names":["VerifyEmailAction","observer","commonCopy","settingsCopy","useGlobalCopyStore","sendEmailVerification","useSettingsStore","user","useUserStore","theme","useTheme","isOpen","setIsOpen","React","handleClose","handleOpen","jsxs","Button","jsx","Text","ChevronRight","Dialog","Stack","VerifyTokenAction","handleVerify","token","setToken","TextField","e","VerifyPhoneAction","sendPhoneVerification","verifyPhoneToken","showVerifyToken","setShowVerifyToken","handlePhoneVerify","handleTokenVerify","AccountProfileListItem","onProfileUpdated","profile","recurringCopy","copy","updateAccount","useAccountStore","isPaymentReminder","AccountNotificationTypes","amount","setAmount","paymentDay","setPaymentDay","accountName","accountPaymentDate","buildDynamicCopy","formatOrdinal","secondaryText","formatCurrency","handleUpdateProfile","ToggleButtonListItem","InstitutionLogo","LocalizationProvider","AdapterDateFns","DateCalendar","endOfMonth","startOfMonth","date","CurrencyInput","value","AccountNotificationProfile","onUpdateProfile","clientCommunicationProfile","userCommunicationsProfile","isMobile","useScreenSize","isAccountProfile","emailDisabled","pushDisabled","smsDisabled","showEmail","showPush","showSms","Fragment","List","ToggleListItem","Divider","child","AccountNotificationProfiles","accountProfiles","updateNotificationProfile","selectedProfileGuid","setSelectedProfileGuid","selectedProfile","handleProfileToggle","handleProfileUpdate","Drawer","NotificationProfile","userDetails","isExpanded","setIsExpanded","updatedProfile","hasDeliveryMethods","ExpandMore","Collapse","BudgetNotificationProfiles","budgetProfiles","DeliveryMethods","onEvent","useEvent","ccp","updateUserCommunicationProfile","ucp","onProfileChange","key","notificationType","H3","Card","CardContent","Star","InsightsNotificationProfiles","insightsProfiles","PersonalDetails","config","useAppConfig","containerRef","width","useDimensions","updateUser","hasUnsavedChanges","setHasUnsavedChanges","modifiedUser","setModifiedUser","showVerifyEmail","showVerifyPhone","handleChange","event","name","changedUser","handleSave","Box","PersonalDetails$1","NotificationSettings","notificationTypes","NotificationTypes","showPersonalDetails","view","isInitialized","useGlobalUiStore","isAccountDataLoaded","loadAccountData","loadNotificationProfiles","isInsightsEnabled","useInsightsEnabled","isLoaded","setIsLoaded","profileTypeOpen","setProfileTypeOpen","useWidgetLoadTimer","Loader","drawerTitle","emailEnabled","smsEnabled","pushEnabled","canEditFields","shouldShowPersonalDetails","ListItem","ListItemButton","ListItemText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NotificationSettings-DltXMrnb.mjs","sources":["../src/settings/components/profile/actions/VerifyEmailAction.tsx","../src/settings/components/profile/actions/VerifyTokenAction.tsx","../src/settings/components/profile/actions/VerifyPhoneAction.tsx","../src/settings/components/notifications/AccountProfileListItem.tsx","../src/settings/components/notifications/AccountNotificationProfile.tsx","../src/settings/components/notifications/AccountNotificationProfiles.tsx","../src/settings/components/notifications/NotificationProfile.tsx","../src/settings/components/notifications/BudgetNotificationProfiles.tsx","../src/settings/components/notifications/DeliveryMethods.tsx","../src/settings/components/notifications/InsightsNotificationProfiles.tsx","../src/settings/components/notifications/PersonalDetails.tsx","../src/settings/components/notifications/NotificationSettings.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { Dialog, useGlobalCopyStore, useSettingsStore, useUserStore } from '../../../../common'\n\nconst VerifyEmailAction = observer(() => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { sendEmailVerification } = useSettingsStore()\n const { user } = useUserStore()\n const theme = useTheme()\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n const handleClose = (): void => {\n setIsOpen(false)\n }\n\n const handleOpen = (): void => {\n setIsOpen(true)\n }\n\n return (\n <React.Fragment>\n <Button onClick={handleOpen} sx={{ height: 'auto', p: 4, width: 'fit-content' }}>\n <Text variant=\"body2\">{settingsCopy.verify_email}</Text>\n <ChevronRight />\n </Button>\n <Dialog\n copy={{ title: '' }}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={sendEmailVerification}\n onSecondaryAction={handleClose}\n primaryText={settingsCopy.send_verification}\n secondaryText={commonCopy.back}\n sx={{\n '& .MuiDialogContent-root': { pt: 0, width: 400 },\n\n '& .MuiToolbar-root:last-child': {\n gap: 16,\n padding: '32px 60px 48px',\n justifyContent: 'center',\n },\n }}\n >\n <Stack spacing={16} sx={{ px: 40, textAlign: 'center', width: '100%' }}>\n <Text bold={true} truncate={false} variant=\"body1\">\n {settingsCopy.confirm_your_email}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.confirm_email}\n </Text>\n <Text\n sx={{\n border: `1px solid ${theme.palette.neutral.light}`,\n borderRadius: '4px',\n p: '16px 32px',\n }}\n variant=\"h3\"\n >\n {user.email}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.verification_notice_email}\n </Text>\n </Stack>\n </Dialog>\n </React.Fragment>\n )\n})\n\nexport default VerifyEmailAction\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Stack from '@mui/material/Stack'\nimport TextField from '@mui/material/TextField'\n\nimport { Dialog, useGlobalCopyStore } from '../../../../common'\n\ninterface ActionProps {\n handleClose: () => void\n handleVerify: (token: string) => void\n isOpen: boolean\n}\n\nconst VerifyTokenAction: React.FC<ActionProps> = observer(\n ({ handleClose, handleVerify, isOpen }) => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const [token, setToken] = React.useState('')\n\n return (\n <Dialog\n copy={{ title: settingsCopy.enter_verification_code }}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={() => handleVerify(token)}\n onSecondaryAction={handleClose}\n primaryText={settingsCopy.verify}\n secondaryText={commonCopy.cancel_button}\n sx={{\n '& .MuiDialogContent-root': { pt: 0, width: 400 },\n '& .MuiToolbar-root:last-child': {\n gap: 8,\n padding: 24,\n justifyContent: 'flex-end',\n },\n }}\n >\n <Stack>\n <TextField onChange={(e) => setToken(e.target.value)} sx={{ width: 352 }} value={token} />\n </Stack>\n </Dialog>\n )\n },\n)\n\nexport default VerifyTokenAction\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\nimport { Dialog, useGlobalCopyStore, useSettingsStore, useUserStore } from '../../../../common'\nimport VerifyTokenAction from './VerifyTokenAction'\n\nconst VerifyPhoneAction = observer(() => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { sendPhoneVerification, verifyPhoneToken } = useSettingsStore()\n const { user } = useUserStore()\n const theme = useTheme()\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [showVerifyToken, setShowVerifyToken] = React.useState(false)\n\n const handleClose = (): void => {\n setIsOpen(false)\n }\n\n const handleOpen = (): void => {\n setIsOpen(true)\n }\n\n const handlePhoneVerify = () => {\n sendPhoneVerification().finally(() => {\n setShowVerifyToken(true)\n })\n }\n\n const handleTokenVerify = (token: string) => {\n verifyPhoneToken(token).finally(() => {\n setShowVerifyToken(false)\n })\n }\n\n return (\n <React.Fragment>\n <Button onClick={handleOpen} sx={{ height: 'auto', p: 4, width: 'fit-content' }}>\n <Text variant=\"body2\">{settingsCopy.verify_phone}</Text>\n <ChevronRight />\n </Button>\n <Dialog\n copy={{ title: '' }}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={handlePhoneVerify}\n onSecondaryAction={handleClose}\n primaryText={settingsCopy.send_verification}\n secondaryText={commonCopy.back}\n sx={{\n '& .MuiDialogContent-root': { pt: 0, width: 400 },\n\n '& .MuiToolbar-root:last-child': {\n gap: 16,\n padding: '32px 60px 48px',\n justifyContent: 'center',\n },\n }}\n >\n <Stack spacing={16} sx={{ px: 40, textAlign: 'center', width: '100%' }}>\n <Text bold={true} truncate={false} variant=\"body1\">\n {settingsCopy.confirm_your_phone}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.confirm_phone}\n </Text>\n <Text\n sx={{\n border: `1px solid ${theme.palette.neutral.light}`,\n borderRadius: '4px',\n p: '16px 32px',\n }}\n variant=\"h3\"\n >\n {user.phone}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.verification_notice_phone}\n </Text>\n </Stack>\n </Dialog>\n <VerifyTokenAction\n handleClose={() => setShowVerifyToken(false)}\n handleVerify={handleTokenVerify}\n isOpen={showVerifyToken}\n />\n </React.Fragment>\n )\n})\n\nexport default VerifyPhoneAction\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { endOfMonth } from 'date-fns/endOfMonth'\nimport { startOfMonth } from 'date-fns/startOfMonth'\n\nimport Stack from '@mui/material/Stack'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { InstitutionLogo } from '@mxenabled/mxui'\n\nimport {\n CurrencyInput,\n Dialog,\n ToggleButtonListItem,\n useAccountStore,\n useGlobalCopyStore,\n} from '../../../common'\nimport { AccountNotificationTypes, DetailedNotificationProfile } from '../../../core'\nimport { formatCurrency, formatOrdinal } from '../../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface AccountProfileListItemProps {\n onProfileUpdated: (profile: DetailedNotificationProfile) => void\n profile: DetailedNotificationProfile\n}\n\nexport const AccountProfileListItem = observer(\n ({ onProfileUpdated, profile }: AccountProfileListItemProps) => {\n const { common: commonCopy, recurring: recurringCopy, settings: copy } = useGlobalCopyStore()\n const { updateAccount } = useAccountStore()\n\n const isPaymentReminder =\n profile.notification_type === AccountNotificationTypes.DebtPaymentReminder\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [amount, setAmount] = React.useState<number>(profile.threshold || 0)\n const [paymentDay, setPaymentDay] = React.useState<number>(\n profile.account?.day_payment_is_due || 0,\n )\n\n const accountName = profile.account?.name || profile.account?.feed_name || ''\n const accountPaymentDate = profile.account?.day_payment_is_due\n ? (buildDynamicCopy(\n copy.notification_debt_payment_date,\n formatOrdinal(profile.account?.day_payment_is_due),\n ) as string)\n : copy.notification_debt_payment_zero_state\n\n const secondaryText = isPaymentReminder\n ? accountPaymentDate\n : formatCurrency(profile.threshold ?? 0, '0,0')\n\n const handleUpdateProfile = async () => {\n if (isPaymentReminder && profile.account) {\n await updateAccount({ ...profile.account, day_payment_is_due: paymentDay })\n } else {\n onProfileUpdated({ ...profile, threshold: amount })\n }\n }\n\n return (\n <Stack>\n <ToggleButtonListItem\n avatar={\n profile.account?.institution_guid ? (\n <InstitutionLogo\n alt={profile.label}\n institutionGuid={profile.account?.institution_guid}\n />\n ) : undefined\n }\n endIcon={<ChevronRight />}\n isChecked={profile.is_enabled}\n isDisabled={!profile.is_enabled}\n isPrimaryTextBold={true}\n onClick={() => setIsOpen(true)}\n onToggle={() =>\n onProfileUpdated({\n ...profile,\n is_enabled: !profile.is_enabled,\n })\n }\n primaryText={accountName}\n secondaryText={!profile.is_enabled ? copy.notification_disabled : secondaryText}\n />\n\n <Dialog\n copy={{\n title: isPaymentReminder\n ? recurringCopy.day_of_the_month\n : copy.notification_threshold_label,\n close_aria: commonCopy.close_aria,\n }}\n disablePrimaryButton={isPaymentReminder && paymentDay === 0}\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onPrimaryAction={handleUpdateProfile}\n primaryText={commonCopy.save_button}\n >\n {isPaymentReminder ? (\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DateCalendar\n maxDate={endOfMonth(new Date())}\n minDate={startOfMonth(new Date())}\n onChange={(date: Date) => {\n setPaymentDay(date.getDate())\n }}\n slots={{\n // Hides the arrows\n leftArrowIcon: () => null,\n rightArrowIcon: () => null,\n }}\n sx={{\n // TODO: Needs to be updated in MXUI\n '& .MuiPickersDay-today': {\n color: 'primary.main',\n },\n }}\n views={['day']}\n />\n </LocalizationProvider>\n ) : (\n <CurrencyInput\n amount={amount}\n autoFocus={true}\n fullWidth={true}\n minAmount={0}\n setAmount={(value) => setAmount(Number(value) || 0)}\n sx={{ '.MuiTypography-body1': { p: 0 } }}\n />\n )}\n </Dialog>\n </Stack>\n )\n },\n)\n","import { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport {\n ToggleListItem,\n useGlobalCopyStore,\n useScreenSize,\n useSettingsStore,\n useUserStore,\n} from '../../../common'\nimport { DetailedNotificationProfile } from '../../../core'\n\nimport { AccountProfileListItem } from './AccountProfileListItem'\n\ninterface AccountNotificationProfileProps {\n onUpdateProfile: (profile: DetailedNotificationProfile) => void\n profile: DetailedNotificationProfile\n}\n\nexport const AccountNotificationProfile = observer(\n ({ onUpdateProfile, profile }: AccountNotificationProfileProps) => {\n const { settings: copy } = useGlobalCopyStore()\n const { user } = useUserStore()\n const { clientCommunicationProfile, userCommunicationsProfile } = useSettingsStore()\n const { isMobile } = useScreenSize()\n\n const isAccountProfile = profile.notification_type > 2\n const {\n opted_out_of_email_notifications: emailDisabled,\n opted_out_of_push_notifications: pushDisabled,\n opted_out_of_sms_notifications: smsDisabled,\n } = userCommunicationsProfile\n\n const {\n email_notifications_enabled: showEmail,\n push_notifications_enabled: showPush,\n sms_notifications_enabled: showSms,\n } = clientCommunicationProfile\n\n return (\n <Stack>\n {(showEmail || showSms || showPush) && (\n <>\n <Text bold={true} sx={{ mb: 4, ml: 24, mt: 12 }} variant=\"caption\">\n {copy.delivery_method_title}\n </Text>\n <List sx={{ bgcolor: 'background.paper' }}>\n {showEmail && (\n <Stack sx={{ pl: 24 }}>\n <ToggleListItem\n isChecked={!emailDisabled && profile.email_channel && !!user.email}\n isDisabled={emailDisabled || !user.email}\n onToggle={() =>\n onUpdateProfile({ ...profile, email_channel: !profile.email_channel })\n }\n primaryText={copy.delivery_method_email_label}\n secondaryText={\n emailDisabled || !profile.email_channel || !user.email\n ? copy.notification_disabled\n : copy.notification_enabled\n }\n useExtraPadding={false}\n />\n </Stack>\n )}\n\n {showEmail && (showSms || showPush) && <Divider sx={{ ml: isMobile ? 0 : 24 }} />}\n\n {showSms && (\n <Stack sx={{ pl: 24 }}>\n <ToggleListItem\n isChecked={!smsDisabled && profile.sms_channel && !!user.phone}\n isDisabled={smsDisabled || !user.phone}\n onToggle={() =>\n onUpdateProfile({ ...profile, sms_channel: !profile.sms_channel })\n }\n primaryText={`${copy.delivery_method_sms_label}`}\n secondaryText={\n smsDisabled || !profile.sms_channel || !user.phone\n ? copy.notification_disabled\n : copy.notification_enabled\n }\n useExtraPadding={false}\n />\n </Stack>\n )}\n\n {showSms && showPush && <Divider sx={{ ml: isMobile ? 0 : 24 }} />}\n\n {showPush && (\n <Stack sx={{ pl: 24 }}>\n <ToggleListItem\n isChecked={!pushDisabled && profile.push_channel}\n isDisabled={pushDisabled}\n onToggle={() =>\n onUpdateProfile({ ...profile, push_channel: !profile.push_channel })\n }\n primaryText={copy.delivery_method_push_label}\n secondaryText={copy.delivery_method_push_subtitle}\n useExtraPadding={false}\n />\n </Stack>\n )}\n <Divider />\n </List>\n </>\n )}\n\n {isAccountProfile && Boolean(profile.children?.length) && (\n <Stack>\n <Text bold={true} sx={{ mb: 4, ml: 24, mt: 12 }} variant=\"caption\">\n {copy.accounts_threshold_title}\n </Text>\n\n <List sx={{ bgcolor: 'background.paper' }}>\n {profile.children?.map((child) => (\n <AccountProfileListItem\n key={child.guid}\n onProfileUpdated={onUpdateProfile}\n profile={child}\n />\n ))}\n </List>\n </Stack>\n )}\n </Stack>\n )\n },\n)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { Drawer, ToggleButtonListItem, useSettingsStore } from '../../../common'\nimport { DetailedNotificationProfile } from '../../../core'\n\nimport { AccountNotificationProfile } from './AccountNotificationProfile'\n\nexport const AccountNotificationProfiles = observer(() => {\n const { accountProfiles, updateNotificationProfile } = useSettingsStore()\n\n const [selectedProfileGuid, setSelectedProfileGuid] = React.useState('')\n\n const selectedProfile = React.useMemo(\n () => accountProfiles.find((profile) => profile.guid === selectedProfileGuid),\n [accountProfiles, selectedProfileGuid],\n )\n\n const handleProfileToggle = async (profile: DetailedNotificationProfile) => {\n await updateNotificationProfile({\n ...profile,\n is_enabled: !profile.is_enabled,\n })\n }\n\n const handleProfileUpdate = async (profile: DetailedNotificationProfile) => {\n await updateNotificationProfile(profile)\n }\n\n return (\n <Stack sx={{ backgroundColor: 'background.paper' }}>\n {accountProfiles\n // Don't show notification profiles that have no associated accounts (children)\n .filter((profile) => profile.children && profile.children.length > 0)\n .map((profile) => (\n <ToggleButtonListItem\n endIcon={<ChevronRight />}\n isChecked={profile.is_enabled}\n isDisabled={!profile.is_enabled}\n key={profile.guid}\n onClick={() => setSelectedProfileGuid(profile.guid)}\n onToggle={() => handleProfileToggle(profile)}\n primaryText={profile.label}\n secondaryText={profile.is_enabled ? profile.deliveryMethodsLabel : undefined}\n />\n ))}\n <Drawer\n isOpen={Boolean(selectedProfile)}\n onClose={() => setSelectedProfileGuid('')}\n title={selectedProfile ? selectedProfile.label : ''}\n >\n {selectedProfile && (\n <AccountNotificationProfile\n onUpdateProfile={handleProfileUpdate}\n profile={selectedProfile}\n />\n )}\n </Drawer>\n </Stack>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Collapse from '@mui/material/Collapse'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\n\nimport { ExpandMore } from '@mxenabled/mx-icons'\n\nimport {\n ToggleButtonListItem,\n ToggleListItem,\n useGlobalCopyStore,\n useSettingsStore,\n useUserStore,\n} from '../../../common'\nimport { type DetailedNotificationProfile } from '../../../core'\n\ninterface BudgetNotificationProfileProps {\n profile: DetailedNotificationProfile\n}\n\nexport const NotificationProfile = observer(({ profile }: BudgetNotificationProfileProps) => {\n const { settings: copy } = useGlobalCopyStore()\n const {\n clientCommunicationProfile: {\n email_notifications_enabled: showEmail,\n push_notifications_enabled: showPush,\n sms_notifications_enabled: showSms,\n },\n updateNotificationProfile,\n userCommunicationsProfile: {\n opted_out_of_email_notifications: emailDisabled,\n opted_out_of_push_notifications: pushDisabled,\n opted_out_of_sms_notifications: smsDisabled,\n },\n } = useSettingsStore()\n\n const { user: userDetails } = useUserStore()\n\n const [isExpanded, setIsExpanded] = React.useState(false)\n\n const handleProfileToggle = async () => {\n await handleUpdateProfile({ ...profile, is_enabled: !profile.is_enabled })\n\n if (profile.is_enabled) {\n setIsExpanded(false)\n }\n }\n\n const handleUpdateProfile = async (updatedProfile: DetailedNotificationProfile) => {\n await updateNotificationProfile(updatedProfile)\n }\n\n const hasDeliveryMethods = showEmail || showSms || showPush\n\n return (\n <List key={profile.guid} sx={{ bgcolor: 'background.paper' }}>\n <ToggleButtonListItem\n endIcon={\n hasDeliveryMethods ? (\n <ExpandMore\n sx={{\n transition: 'transform 0.3s ease-in-out',\n transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)',\n }}\n />\n ) : undefined\n }\n isChecked={profile.is_enabled}\n isDisabled={!profile.is_enabled}\n key={profile.guid}\n onClick={() => setIsExpanded(!isExpanded)}\n onToggle={() => handleProfileToggle()}\n primaryText={profile.label}\n secondaryText={profile.is_enabled ? profile.deliveryMethodsLabel : undefined}\n />\n {hasDeliveryMethods && (\n <Collapse in={isExpanded}>\n <List sx={{ bgcolor: 'background.paper' }}>\n {showEmail && (\n <ToggleListItem\n isChecked={!emailDisabled && profile.email_channel && !!userDetails.email}\n isDisabled={emailDisabled || !userDetails.email}\n onToggle={() =>\n handleUpdateProfile({\n ...profile,\n email_channel: !profile.email_channel,\n })\n }\n primaryText={copy.delivery_method_email_label}\n />\n )}\n\n {showEmail && (showSms || showPush) && <Divider sx={{ ml: 48 }} />}\n\n {showSms && (\n <ToggleListItem\n isChecked={!smsDisabled && profile.sms_channel && !!userDetails.phone}\n isDisabled={smsDisabled || !userDetails.phone}\n onToggle={() =>\n handleUpdateProfile({\n ...profile,\n sms_channel: !profile.sms_channel,\n })\n }\n primaryText={copy.delivery_method_sms_label}\n />\n )}\n\n {showSms && showPush && <Divider sx={{ ml: 48 }} />}\n\n {showPush && (\n <ToggleListItem\n isChecked={!pushDisabled && profile.push_channel}\n isDisabled={pushDisabled}\n onToggle={() =>\n handleUpdateProfile({\n ...profile,\n push_channel: !profile.push_channel,\n })\n }\n primaryText={copy.delivery_method_push_label}\n />\n )}\n </List>\n </Collapse>\n )}\n <Divider />\n </List>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { NotificationProfile } from './NotificationProfile'\n\nimport { useSettingsStore } from '../../../common'\n\nexport const BudgetNotificationProfiles = observer(() => {\n const { budgetProfiles } = useSettingsStore()\n\n return (\n <Stack>\n {budgetProfiles.map((profile) => (\n <NotificationProfile key={profile.guid} profile={profile} />\n ))}\n </Stack>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Card from '@mui/material/Card'\nimport CardContent from '@mui/material/CardContent'\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\n\nimport { Star } from '@mxenabled/mx-icons'\n\nimport { H3, Text } from '@mxenabled/mxui'\n\nimport {\n ToggleListItem,\n useEvent,\n useGlobalCopyStore,\n useSettingsStore,\n useUserStore,\n} from '../../../common'\nimport { type UserCommunicationProfile } from '../../../core'\n\nexport const DeliveryMethods = observer(() => {\n const { onEvent } = useEvent()\n const { settings: copy } = useGlobalCopyStore()\n const {\n clientCommunicationProfile: ccp,\n updateUserCommunicationProfile,\n userCommunicationsProfile: ucp,\n } = useSettingsStore()\n const { user } = useUserStore()\n\n const onProfileChange = async <K extends keyof UserCommunicationProfile>(\n key: K,\n value: UserCommunicationProfile[K],\n ) => {\n const updatedProfile = { ...ucp, [key]: value }\n\n if (onEvent) {\n const keyParts = key.split('_')\n const notificationType = keyParts[3] // e.g., 'email', 'sms', 'push' 'all'\n if (value === false) {\n onEvent('opt_in_notification_method', { notificationType })\n } else {\n onEvent('opt_out_notification_method', { notificationType })\n }\n }\n\n await updateUserCommunicationProfile(updatedProfile)\n }\n\n return (\n <Stack>\n <H3 sx={{ mt: 24 }}>{copy.delivery_method_title}</H3>\n\n {ccp.email_notifications_enabled && (\n <>\n <ToggleListItem\n isChecked={!!user.email && !ucp.opted_out_of_email_notifications}\n isDisabled={!user.email}\n onToggle={() =>\n onProfileChange(\n 'opted_out_of_email_notifications',\n !ucp.opted_out_of_email_notifications,\n )\n }\n primaryText={copy.delivery_method_email_title}\n secondaryText={\n !!user.email && !ucp.opted_out_of_email_notifications\n ? copy.notification_enabled\n : copy.notification_disabled\n }\n useExtraPadding={false}\n />\n\n {(ccp.sms_notifications_enabled || ccp.push_notifications_enabled) && <Divider />}\n </>\n )}\n\n {ccp.sms_notifications_enabled && (\n <>\n <ToggleListItem\n isChecked={!!user.phone && !ucp.opted_out_of_sms_notifications}\n isDisabled={!user.phone}\n onToggle={() =>\n onProfileChange('opted_out_of_sms_notifications', !ucp.opted_out_of_sms_notifications)\n }\n primaryText={copy.delivery_method_sms_title}\n secondaryText={\n !!user.phone && !ucp.opted_out_of_sms_notifications\n ? copy.notification_enabled\n : copy.notification_disabled\n }\n useExtraPadding={false}\n />\n\n {ccp.push_notifications_enabled && <Divider />}\n </>\n )}\n\n {ccp.push_notifications_enabled && (\n <ToggleListItem\n isChecked={!ucp.opted_out_of_push_notifications}\n isDisabled={true}\n onToggle={() => {}}\n primaryText={copy.delivery_method_push_title}\n secondaryText={copy.delivery_method_push_subtitle}\n useExtraPadding={false}\n />\n )}\n\n {ccp.sms_notifications_enabled && (\n <Card sx={{ backgroundColor: 'background.default', mt: 12 }} variant=\"outlined\">\n <CardContent>\n <Stack alignItems=\"flex-start\" direction=\"row\" gap={6}>\n <Star color=\"primary\" filled={true} />\n <Text variant=\"caption\">{copy.delivery_method_sms_note_1}</Text>\n </Stack>\n </CardContent>\n </Card>\n )}\n </Stack>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useSettingsStore } from '../../../common'\n\nimport { NotificationProfile } from './NotificationProfile'\n\nexport const InsightsNotificationProfiles = observer(() => {\n const { insightsProfiles } = useSettingsStore()\n\n return (\n <Stack>\n {insightsProfiles.map((profile) => (\n <NotificationProfile key={profile.guid} profile={profile} />\n ))}\n </Stack>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\nimport TextField from '@mui/material/TextField'\n\nimport { H3 } from '@mxenabled/mxui'\n\nimport { useAppConfig, useGlobalCopyStore, useSettingsStore, useUserStore } from '../../../common'\nimport { type EditableUser } from '../../../core'\nimport { useDimensions } from '../../../common/hooks/useDimensions'\n\nimport VerifyEmailAction from '../profile/actions/VerifyEmailAction'\nimport VerifyPhoneAction from '../profile/actions/VerifyPhoneAction'\n\nconst PersonalDetails = () => {\n const { config } = useAppConfig()\n const [containerRef, { width }] = useDimensions()\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { updateUser } = useSettingsStore()\n const { user } = useUserStore()\n\n const [hasUnsavedChanges, setHasUnsavedChanges] = React.useState(false)\n const [modifiedUser, setModifiedUser] = React.useState<EditableUser>({\n email: user.email,\n phone: user.phone,\n })\n\n const showVerifyEmail = modifiedUser.email && !user.email_is_verified && !hasUnsavedChanges\n const showVerifyPhone = modifiedUser.phone && !user.phone_is_verified && !hasUnsavedChanges\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value } = event.target\n const changedUser = { ...modifiedUser, [name]: value }\n\n setModifiedUser(changedUser)\n setHasUnsavedChanges(JSON.stringify({ ...user, ...changedUser }) !== JSON.stringify(user))\n }\n\n const handleSave = async () => {\n await updateUser({ ...user, ...modifiedUser })\n setHasUnsavedChanges(false)\n }\n\n return (\n <Stack ref={containerRef}>\n <Divider />\n <Stack sx={{ pt: 12 }}>\n <H3 sx={{ lineHeight: '20px', pb: 4, pt: 16 }}>{settingsCopy.personal_details}</H3>\n <Stack sx={{ flexDirection: width <= 768 ? 'column' : 'row', gap: 24, py: 16 }}>\n {config.display_email_edit_field_in_settings && (\n <Stack sx={{ flex: 1, pb: 14 }}>\n <TextField\n defaultValue={user.email}\n fullWidth={true}\n label={settingsCopy.email_address}\n name=\"email\"\n onChange={handleChange}\n />\n {showVerifyEmail && (\n <Box\n sx={{\n height: 20,\n '.MuiButton-root': {\n px: 0,\n ':hover': {\n bgcolor: 'transparent',\n },\n },\n }}\n >\n <VerifyEmailAction />\n </Box>\n )}\n </Stack>\n )}\n {config.display_sms_edit_field_in_settings && (\n <Stack sx={{ flex: 1, pb: 14 }}>\n <TextField\n defaultValue={user.phone}\n fullWidth={true}\n label={settingsCopy.mobile_number}\n name=\"phone\"\n onChange={handleChange}\n />\n {showVerifyPhone && (\n <Box\n sx={{\n height: 20,\n '.MuiButton-root': {\n px: 0,\n ':hover': {\n bgcolor: 'transparent',\n },\n },\n }}\n >\n <VerifyPhoneAction />\n </Box>\n )}\n </Stack>\n )}\n </Stack>\n <Button\n disabled={!hasUnsavedChanges}\n onClick={handleSave}\n sx={{ width: 84 }}\n variant=\"contained\"\n >\n {commonCopy.save_button}\n </Button>\n </Stack>\n </Stack>\n )\n}\n\nexport default observer(PersonalDetails)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { H3 } from '@mxenabled/mxui'\n\nimport {\n Drawer,\n Loader,\n useAccountStore,\n useAppConfig,\n useGlobalCopyStore,\n useGlobalUiStore,\n useInsightsEnabled,\n useSettingsStore,\n useWidgetLoadTimer,\n} from '../../../common'\nimport { NotificationTypes } from '../../../core'\n\nimport { AccountNotificationProfiles } from './AccountNotificationProfiles'\nimport { BudgetNotificationProfiles } from './BudgetNotificationProfiles'\nimport { DeliveryMethods } from './DeliveryMethods'\nimport { InsightsNotificationProfiles } from './InsightsNotificationProfiles'\nimport PersonalDetails from './PersonalDetails'\n\nexport interface NotificationSettingsProps {\n notificationTypes?: NotificationTypes[]\n showPersonalDetails?: boolean\n view?: string | undefined\n}\n\nexport const NotificationSettings: React.FC<NotificationSettingsProps> = observer(\n ({\n notificationTypes = [NotificationTypes.Accounts, NotificationTypes.Budgets],\n showPersonalDetails = false,\n view,\n }) => {\n const { config } = useAppConfig()\n const { settings: copy } = useGlobalCopyStore()\n const { isInitialized } = useGlobalUiStore()\n const { isAccountDataLoaded, loadAccountData } = useAccountStore()\n const { clientCommunicationProfile: ccp, loadNotificationProfiles } = useSettingsStore()\n const isInsightsEnabled = useInsightsEnabled()\n\n const [isLoaded, setIsLoaded] = React.useState(false)\n const [profileTypeOpen, setProfileTypeOpen] = React.useState<NotificationTypes | undefined>(\n undefined,\n )\n\n if (notificationTypes.length > 0 && isInsightsEnabled)\n notificationTypes.push(NotificationTypes.Insights)\n\n useWidgetLoadTimer({\n widgetName: 'NotificationSettingsWidget',\n isLoaded: isLoaded,\n })\n\n React.useEffect(() => {\n if (!isAccountDataLoaded) {\n loadAccountData().finally()\n }\n }, [])\n\n React.useEffect(() => {\n if (isInitialized) {\n loadNotificationProfiles().finally(() => setIsLoaded(true))\n }\n }, [isInitialized])\n\n if (!isInitialized) {\n return <Loader />\n }\n\n let drawerTitle = copy.manage_account_notifications\n if (profileTypeOpen === NotificationTypes.Budgets) {\n drawerTitle = copy.manage_budget_notifications\n } else if (profileTypeOpen === NotificationTypes.Insights) {\n drawerTitle = copy.manage_insights_notifications\n }\n\n const {\n email_notifications_enabled: emailEnabled,\n sms_notifications_enabled: smsEnabled,\n push_notifications_enabled: pushEnabled,\n } = ccp\n\n const hasDeliveryMethods = emailEnabled || smsEnabled || pushEnabled\n\n if (view === 'accounts') {\n return <AccountNotificationProfiles />\n } else if (view === 'budgets') {\n return <BudgetNotificationProfiles />\n } else if (view === 'insights') {\n return <InsightsNotificationProfiles />\n }\n\n const canEditFields =\n config.display_email_edit_field_in_settings || config.display_sms_edit_field_in_settings\n const shouldShowPersonalDetails =\n showPersonalDetails && ccp.can_edit_contact_info && canEditFields\n\n return (\n <Stack sx={{ pt: hasDeliveryMethods ? 0 : 24 }}>\n <Stack sx={{ px: 24 }}>\n {hasDeliveryMethods && (\n <>\n <DeliveryMethods />\n <Divider sx={{ my: 24 }} />\n </>\n )}\n\n <H3 sx={{ mb: 4 }}>{copy.notification_types_title}</H3>\n </Stack>\n <List>\n {notificationTypes.includes(NotificationTypes.Accounts) && (\n <ListItem>\n <ListItemButton onClick={() => setProfileTypeOpen(NotificationTypes.Accounts)}>\n <ListItemText primary={copy.accounts_title} secondary={copy.accounts_subtitle} />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n )}\n {notificationTypes.includes(NotificationTypes.Budgets) && (\n <ListItem>\n <ListItemButton onClick={() => setProfileTypeOpen(NotificationTypes.Budgets)}>\n <ListItemText primary={copy.budgets_title} secondary={copy.budgets_subtitle} />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n )}\n {notificationTypes.includes(NotificationTypes.Insights) && (\n <ListItem>\n <ListItemButton onClick={() => setProfileTypeOpen(NotificationTypes.Insights)}>\n <ListItemText primary={copy.insights_title} secondary={copy.insights_subtitle} />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n )}\n </List>\n\n {shouldShowPersonalDetails && (\n <Stack sx={{ px: 24 }}>\n <PersonalDetails />\n </Stack>\n )}\n\n <Drawer\n isOpen={Boolean(profileTypeOpen)}\n onClose={() => setProfileTypeOpen(undefined)}\n title={drawerTitle}\n >\n <Stack>\n {profileTypeOpen === NotificationTypes.Accounts && <AccountNotificationProfiles />}\n {profileTypeOpen === NotificationTypes.Budgets && <BudgetNotificationProfiles />}\n {profileTypeOpen === NotificationTypes.Insights && <InsightsNotificationProfiles />}\n </Stack>\n </Drawer>\n </Stack>\n )\n },\n)\n"],"names":["VerifyEmailAction","observer","commonCopy","settingsCopy","useGlobalCopyStore","sendEmailVerification","useSettingsStore","user","useUserStore","theme","useTheme","isOpen","setIsOpen","React","handleClose","handleOpen","jsxs","Button","jsx","Text","ChevronRight","Dialog","Stack","VerifyTokenAction","handleVerify","token","setToken","TextField","e","VerifyPhoneAction","sendPhoneVerification","verifyPhoneToken","showVerifyToken","setShowVerifyToken","handlePhoneVerify","handleTokenVerify","AccountProfileListItem","onProfileUpdated","profile","recurringCopy","copy","updateAccount","useAccountStore","isPaymentReminder","AccountNotificationTypes","amount","setAmount","paymentDay","setPaymentDay","accountName","accountPaymentDate","buildDynamicCopy","formatOrdinal","secondaryText","formatCurrency","handleUpdateProfile","ToggleButtonListItem","InstitutionLogo","LocalizationProvider","AdapterDateFns","DateCalendar","endOfMonth","startOfMonth","date","CurrencyInput","value","AccountNotificationProfile","onUpdateProfile","clientCommunicationProfile","userCommunicationsProfile","isMobile","useScreenSize","isAccountProfile","emailDisabled","pushDisabled","smsDisabled","showEmail","showPush","showSms","Fragment","List","ToggleListItem","Divider","child","AccountNotificationProfiles","accountProfiles","updateNotificationProfile","selectedProfileGuid","setSelectedProfileGuid","selectedProfile","handleProfileToggle","handleProfileUpdate","Drawer","NotificationProfile","userDetails","isExpanded","setIsExpanded","updatedProfile","hasDeliveryMethods","ExpandMore","Collapse","BudgetNotificationProfiles","budgetProfiles","DeliveryMethods","onEvent","useEvent","ccp","updateUserCommunicationProfile","ucp","onProfileChange","key","notificationType","H3","Card","CardContent","Star","InsightsNotificationProfiles","insightsProfiles","PersonalDetails","config","useAppConfig","containerRef","width","useDimensions","updateUser","hasUnsavedChanges","setHasUnsavedChanges","modifiedUser","setModifiedUser","showVerifyEmail","showVerifyPhone","handleChange","event","name","changedUser","handleSave","Box","PersonalDetails$1","NotificationSettings","notificationTypes","NotificationTypes","showPersonalDetails","view","isInitialized","useGlobalUiStore","isAccountDataLoaded","loadAccountData","loadNotificationProfiles","isInsightsEnabled","useInsightsEnabled","isLoaded","setIsLoaded","profileTypeOpen","setProfileTypeOpen","useWidgetLoadTimer","Loader","drawerTitle","emailEnabled","smsEnabled","pushEnabled","canEditFields","shouldShowPersonalDetails","ListItem","ListItemButton","ListItemText"],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@ import _ from "react";
|
|
|
3
3
|
import { observer as p } from "mobx-react-lite";
|
|
4
4
|
import v from "@mui/material/TextField";
|
|
5
5
|
import { a as T, f as S } from "./NumberFormatting--XMeeBfr.mjs";
|
|
6
|
-
import { u as y, k as h } from "./hooks-
|
|
7
|
-
import { L as b } from "./ListItemAction-
|
|
8
|
-
import { C as f } from "./CurrencyInput-
|
|
6
|
+
import { u as y, k as h } from "./hooks-DWOrMnfZ.mjs";
|
|
7
|
+
import { L as b } from "./ListItemAction-GDU5z4BN.mjs";
|
|
8
|
+
import { C as f } from "./CurrencyInput-CABYmqBh.mjs";
|
|
9
9
|
const F = p(({ goal: e }) => {
|
|
10
10
|
const { goals: n } = y(), { setAlert: r, setSelectedGoal: l, updateGoal: m } = h(), [t, s] = _.useState(e.interest_rate ?? 0), c = !e.guid, i = t < 0, d = async () => {
|
|
11
11
|
const a = { ...e, interest_rate: t };
|
|
@@ -112,4 +112,4 @@ export {
|
|
|
112
112
|
M,
|
|
113
113
|
z as O
|
|
114
114
|
};
|
|
115
|
-
//# sourceMappingURL=OriginalBalanceAction-
|
|
115
|
+
//# sourceMappingURL=OriginalBalanceAction-KuJSsZCA.mjs.map
|
package/dist/{OriginalBalanceAction-YrvxBYAl.mjs.map → OriginalBalanceAction-KuJSsZCA.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginalBalanceAction-
|
|
1
|
+
{"version":3,"file":"OriginalBalanceAction-KuJSsZCA.mjs","sources":["../src/goals/components/actions/InterestRateAction.tsx","../src/goals/components/actions/MonthlyPaymentAction.tsx","../src/goals/components/actions/OriginalBalanceAction.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport TextField from '@mui/material/TextField'\n\nimport { ListItemAction, useGlobalCopyStore, useGoalStore } from '../../../common'\nimport { Goal } from '../../../core'\nimport { formatPercentage } from '../../../core/utils/NumberFormatting'\n\ninterface InterestRateActionProps {\n goal: Goal\n}\n\nexport const InterestRateAction = observer(({ goal }: InterestRateActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { setAlert, setSelectedGoal, updateGoal } = useGoalStore()\n\n const [rate, setRate] = React.useState<number>(goal.interest_rate ?? 0)\n\n const isNew = !goal.guid\n const isInvalid = rate < 0\n\n const handleSave = async () => {\n const updatedGoal = { ...goal, interest_rate: rate }\n goal.interest_rate = rate\n\n if (isNew) {\n setSelectedGoal(updatedGoal)\n } else {\n await updateGoal(updatedGoal)\n setAlert(copy.alert_goal_updated_interest_rate)\n }\n }\n\n const handleCancel = () => {\n setTimeout(() => {\n setRate(goal.interest_rate ?? 0)\n }, 250)\n }\n\n return (\n <ListItemAction\n isDisabled={goal.is_complete}\n isSaveDisabled={isInvalid}\n label={`${copy.details_interest_rate} (%)`}\n onCancel={handleCancel}\n onSave={handleSave}\n primaryText={copy.details_interest_rate}\n secondaryText={formatPercentage(Number(goal.interest_rate) / 100) as string}\n zeroStateText={!goal.interest_rate ? copy.add_interest_rate : undefined}\n >\n <TextField\n error={isInvalid}\n fullWidth={true}\n onChange={(e) =>\n setRate(!isNaN(parseFloat(e.target.value)) ? parseFloat(e.target.value) : 0)\n }\n type=\"number\"\n value={rate}\n />\n </ListItemAction>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { CurrencyInput, ListItemAction, useGlobalCopyStore, useGoalStore } from '../../../common'\nimport { Goal } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface MonthlyPaymentActionProps {\n goal: Goal\n}\n\nexport const MonthlyPaymentAction = observer(({ goal }: MonthlyPaymentActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { setAlert, setSelectedGoal, updateGoal } = useGoalStore()\n\n const [payment, setPayment] = React.useState<number>(goal.monthly_payment ?? 0)\n\n const isNew = !goal.guid\n const isInvalid = payment < 0 || payment > 99999999.99\n\n const handleSave = async () => {\n const updatedGoal = { ...goal, monthly_payment: payment }\n goal.monthly_payment = payment\n if (isNew) {\n setSelectedGoal(updatedGoal)\n } else {\n await updateGoal({ ...goal, monthly_payment: payment })\n setAlert(copy.alert_goal_updated_payment)\n }\n }\n\n const handleCancel = () => {\n setTimeout(() => {\n setPayment(goal.monthly_payment || 0)\n }, 250)\n }\n\n return (\n <ListItemAction\n isDisabled={goal.is_complete}\n isSaveDisabled={isInvalid}\n label={copy.details_monthly_payment}\n onCancel={handleCancel}\n onSave={handleSave}\n primaryText={copy.details_monthly_payment}\n secondaryText={formatCurrency(goal.monthly_payment, '0,0')}\n zeroStateText={!goal.monthly_payment ? copy.add_monthly_payment : undefined}\n >\n <CurrencyInput\n amount={payment}\n autoFocus={true}\n error={isInvalid}\n fullWidth={true}\n minAmount={0}\n setAmount={(v) => setPayment(!isNaN(Number(v)) ? Number(v) : payment)}\n sx={{ '.MuiTypography-body1': { p: 0 } }}\n />\n </ListItemAction>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { CurrencyInput, ListItemAction, useGlobalCopyStore, useGoalStore } from '../../../common'\nimport { Goal } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface OriginalBalanceActionProps {\n goal: Goal\n}\n\nexport const OriginalBalanceAction = observer(({ goal }: OriginalBalanceActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { setAlert, setSelectedGoal, updateGoal } = useGoalStore()\n\n const [balance, setBalance] = React.useState<number>(goal.initial_amount)\n\n const isNew = !goal.guid\n const isInvlaid = balance < 0 || balance > 99999999.99\n\n const handleSave = async () => {\n const updatedGoal = { ...goal, initial_amount: balance }\n goal.initial_amount = balance\n if (isNew) {\n setSelectedGoal(updatedGoal)\n } else {\n await updateGoal({ ...goal, initial_amount: balance })\n setAlert(copy.alert_goal_updated_balance)\n }\n }\n\n const handleCancel = () => {\n setTimeout(() => {\n setBalance(goal.initial_amount)\n }, 250)\n }\n\n return (\n <ListItemAction\n isDisabled={goal.is_complete}\n isSaveDisabled={isInvlaid}\n label={copy.details_original_balance}\n onCancel={handleCancel}\n onSave={handleSave}\n primaryText={copy.details_original_balance}\n secondaryText={formatCurrency(goal.initial_amount, '0,0')}\n zeroStateText={\n !goal.initial_amount && !goal.is_complete ? copy.add_original_balance : undefined\n }\n >\n <CurrencyInput\n amount={balance}\n autoFocus={true}\n error={isInvlaid}\n fullWidth={true}\n minAmount={0}\n setAmount={(v) => setBalance(!isNaN(Number(v)) ? Number(v) : balance)}\n sx={{ '.MuiTypography-body1': { p: 0 } }}\n />\n </ListItemAction>\n )\n})\n"],"names":["InterestRateAction","observer","goal","copy","useGlobalCopyStore","setAlert","setSelectedGoal","updateGoal","useGoalStore","rate","setRate","React","isNew","isInvalid","handleSave","updatedGoal","handleCancel","jsx","ListItemAction","formatPercentage","TextField","e","MonthlyPaymentAction","payment","setPayment","formatCurrency","CurrencyInput","v","OriginalBalanceAction","balance","setBalance","isInvlaid"],"mappings":"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"}
|