@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.
Files changed (128) hide show
  1. package/CHANGELOG.md +0 -6
  2. package/dist/{AccountDetailsDrawer-Cq4kiiKD.mjs → AccountDetailsDrawer-Dae8eUXt.mjs} +10 -10
  3. package/dist/{AccountDetailsDrawer-Cq4kiiKD.mjs.map → AccountDetailsDrawer-Dae8eUXt.mjs.map} +1 -1
  4. package/dist/{AccountDetailsHeader-BliEZhz7.mjs → AccountDetailsHeader-D_UjMD99.mjs} +4 -4
  5. package/dist/{AccountDetailsHeader-BliEZhz7.mjs.map → AccountDetailsHeader-D_UjMD99.mjs.map} +1 -1
  6. package/dist/{Analytics-CkYXKvco.mjs → Analytics-BJDUP2qI.mjs} +2 -2
  7. package/dist/{Analytics-CkYXKvco.mjs.map → Analytics-BJDUP2qI.mjs.map} +1 -1
  8. package/dist/{CategorySelectorDrawer-NJsFsKP1.mjs → CategorySelectorDrawer-k8AZYC8I.mjs} +2 -2
  9. package/dist/{CategorySelectorDrawer-NJsFsKP1.mjs.map → CategorySelectorDrawer-k8AZYC8I.mjs.map} +1 -1
  10. package/dist/{Connect-BH0Pt6zc.mjs → Connect-tID_S_5e.mjs} +2 -2
  11. package/dist/{Connect-BH0Pt6zc.mjs.map → Connect-tID_S_5e.mjs.map} +1 -1
  12. package/dist/{ConnectCard-D7uxoH5Y.mjs → ConnectCard-DcM6tUOX.mjs} +2 -2
  13. package/dist/{ConnectCard-D7uxoH5Y.mjs.map → ConnectCard-DcM6tUOX.mjs.map} +1 -1
  14. package/dist/{ConnectDrawer-CW4LA3H3.mjs → ConnectDrawer-BQy4YYuc.mjs} +3 -3
  15. package/dist/{ConnectDrawer-CW4LA3H3.mjs.map → ConnectDrawer-BQy4YYuc.mjs.map} +1 -1
  16. package/dist/{ConnectionsDrawer-CZU9ku-k.mjs → ConnectionsDrawer-C73ASLMj.mjs} +3 -3
  17. package/dist/{ConnectionsDrawer-CZU9ku-k.mjs.map → ConnectionsDrawer-C73ASLMj.mjs.map} +1 -1
  18. package/dist/{CurrencyInput-DaGEQaLW.mjs → CurrencyInput-CABYmqBh.mjs} +2 -2
  19. package/dist/{CurrencyInput-DaGEQaLW.mjs.map → CurrencyInput-CABYmqBh.mjs.map} +1 -1
  20. package/dist/{EmbeddedCard-DCOQnTz-.mjs → EmbeddedCard-BwfkCsUN.mjs} +3 -3
  21. package/dist/{EmbeddedCard-DCOQnTz-.mjs.map → EmbeddedCard-BwfkCsUN.mjs.map} +1 -1
  22. package/dist/{Error-Dtw6yxkf.mjs → Error-BFJ3BnfS.mjs} +2 -2
  23. package/dist/{Error-Dtw6yxkf.mjs.map → Error-BFJ3BnfS.mjs.map} +1 -1
  24. package/dist/ErrorBoundary-C7BlHx04.mjs +27 -0
  25. package/dist/ErrorBoundary-C7BlHx04.mjs.map +1 -0
  26. package/dist/{ExportCsvAction-C-IisDcv.mjs → ExportCsvAction-B1257a3M.mjs} +3 -3
  27. package/dist/{ExportCsvAction-C-IisDcv.mjs.map → ExportCsvAction-B1257a3M.mjs.map} +1 -1
  28. package/dist/{GlobalAccountFilter-BhzR5Vb1.mjs → GlobalAccountFilter-DEEc3Bc5.mjs} +2 -2
  29. package/dist/{GlobalAccountFilter-BhzR5Vb1.mjs.map → GlobalAccountFilter-DEEc3Bc5.mjs.map} +1 -1
  30. package/dist/GlobalCopyApi-Tz10hezK.mjs +130 -0
  31. package/dist/GlobalCopyApi-Tz10hezK.mjs.map +1 -0
  32. package/dist/{Help-zVZdcmlk.mjs → Help-BAj_yo3q.mjs} +145 -145
  33. package/dist/Help-BAj_yo3q.mjs.map +1 -0
  34. package/dist/{LineChart-CUfiH86G.mjs → LineChart-BxEIZHht.mjs} +2 -2
  35. package/dist/{LineChart-CUfiH86G.mjs.map → LineChart-BxEIZHht.mjs.map} +1 -1
  36. package/dist/{ListItemAction-BqUCLj_w.mjs → ListItemAction-GDU5z4BN.mjs} +2 -2
  37. package/dist/{ListItemAction-BqUCLj_w.mjs.map → ListItemAction-GDU5z4BN.mjs.map} +1 -1
  38. package/dist/{ListItemWrapper-DRse79Iu.mjs → ListItemWrapper-D6b-6m4t.mjs} +2 -2
  39. package/dist/{ListItemWrapper-DRse79Iu.mjs.map → ListItemWrapper-D6b-6m4t.mjs.map} +1 -1
  40. package/dist/{ManageIncome-B_8i71mE.mjs → ManageIncome-BJWVPAly.mjs} +32 -32
  41. package/dist/{ManageIncome-B_8i71mE.mjs.map → ManageIncome-BJWVPAly.mjs.map} +1 -1
  42. package/dist/{MicroWidgetContainer-B2NnKBgW.mjs → MicroWidgetContainer-IUZQlml1.mjs} +2 -2
  43. package/dist/{MicroWidgetContainer-B2NnKBgW.mjs.map → MicroWidgetContainer-IUZQlml1.mjs.map} +1 -1
  44. package/dist/{MiniWidgetContainer-Bmv_WeUd.mjs → MiniWidgetContainer-CIswJui8.mjs} +2 -2
  45. package/dist/{MiniWidgetContainer-Bmv_WeUd.mjs.map → MiniWidgetContainer-CIswJui8.mjs.map} +1 -1
  46. package/dist/{NotificationSettings-CW7okUrk.mjs → NotificationSettings-DltXMrnb.mjs} +33 -33
  47. package/dist/{NotificationSettings-CW7okUrk.mjs.map → NotificationSettings-DltXMrnb.mjs.map} +1 -1
  48. package/dist/{OriginalBalanceAction-YrvxBYAl.mjs → OriginalBalanceAction-KuJSsZCA.mjs} +4 -4
  49. package/dist/{OriginalBalanceAction-YrvxBYAl.mjs.map → OriginalBalanceAction-KuJSsZCA.mjs.map} +1 -1
  50. package/dist/{RecurringSettings-hs0YUp83.mjs → RecurringSettings-D2Aaqz7d.mjs} +3 -3
  51. package/dist/{RecurringSettings-hs0YUp83.mjs.map → RecurringSettings-D2Aaqz7d.mjs.map} +1 -1
  52. package/dist/{SpendingLegend-CxvNOg3c.mjs → SpendingLegend-C_dMdqbe.mjs} +2 -2
  53. package/dist/{SpendingLegend-CxvNOg3c.mjs.map → SpendingLegend-C_dMdqbe.mjs.map} +1 -1
  54. package/dist/{TransactionDetails-DT-MQqOB.mjs → TransactionDetails-CDZNsKv7.mjs} +5 -5
  55. package/dist/{TransactionDetails-DT-MQqOB.mjs.map → TransactionDetails-CDZNsKv7.mjs.map} +1 -1
  56. package/dist/{UserStore-E5WvBXaY.mjs → UserStore-DzGgxsKk.mjs} +302 -317
  57. package/dist/UserStore-DzGgxsKk.mjs.map +1 -0
  58. package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs → ViewMoreMicroCard-DXaJ-56q.mjs} +4 -4
  59. package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs.map → ViewMoreMicroCard-DXaJ-56q.mjs.map} +1 -1
  60. package/dist/{WidgetContainer-CjdCY4sj.mjs → WidgetContainer-5O6N88mr.mjs} +3 -3
  61. package/dist/{WidgetContainer-CjdCY4sj.mjs.map → WidgetContainer-5O6N88mr.mjs.map} +1 -1
  62. package/dist/accounts/index.es.js +11 -11
  63. package/dist/analytics/index.es.js +2 -2
  64. package/dist/budgets/index.es.js +10 -10
  65. package/dist/cashflow/index.es.js +70 -70
  66. package/dist/categories/index.es.js +1 -1
  67. package/dist/common/components/ErrorBoundary.d.ts +2 -0
  68. package/dist/common/context/GlobalDataProvider.d.ts +2 -1
  69. package/dist/common/context/hooks.d.ts +3 -0
  70. package/dist/common/context/index.d.ts +1 -1
  71. package/dist/common/index.es.js +66 -65
  72. package/dist/core/api/AccountApi.d.ts +2 -2
  73. package/dist/core/api/AnalyticsApi.d.ts +2 -2
  74. package/dist/core/api/AppDataApi.d.ts +2 -2
  75. package/dist/core/api/BeatApi.d.ts +2 -2
  76. package/dist/core/api/BudgetsApi.d.ts +2 -2
  77. package/dist/core/api/CategoryApi.d.ts +2 -2
  78. package/dist/core/api/FinstrongApi.d.ts +2 -2
  79. package/dist/core/api/GlobalCopyApi.d.ts +2 -2
  80. package/dist/core/api/GoalApi.d.ts +2 -2
  81. package/dist/core/api/HelpApi.d.ts +2 -2
  82. package/dist/core/api/HoldingApi.d.ts +2 -2
  83. package/dist/core/api/MerchantApi.d.ts +2 -2
  84. package/dist/core/api/NotificationApi.d.ts +2 -2
  85. package/dist/core/api/RepeatingTransactionsApi.d.ts +2 -2
  86. package/dist/core/api/ScheduledPaymentsApi.d.ts +2 -2
  87. package/dist/core/api/SettingsApi.d.ts +2 -2
  88. package/dist/core/api/TransactionApi.d.ts +2 -2
  89. package/dist/core/api/UserApi.d.ts +2 -2
  90. package/dist/core/index.es.js +95 -95
  91. package/dist/core/index.es.js.map +1 -1
  92. package/dist/core/stores/GlobalStore.d.ts +4 -2
  93. package/dist/core/types/Handlers.d.ts +1 -0
  94. package/dist/core/types/index.d.ts +1 -1
  95. package/dist/core/utils/Fetch.d.ts +3 -2
  96. package/dist/dashboard/index.es.js +4 -4
  97. package/dist/debts/index.es.js +8 -8
  98. package/dist/finstrong/index.es.js +12 -12
  99. package/dist/goals/index.es.js +9 -9
  100. package/dist/help/index.es.js +4 -4
  101. package/dist/hooks-DWOrMnfZ.mjs +83 -0
  102. package/dist/hooks-DWOrMnfZ.mjs.map +1 -0
  103. package/dist/insights/index.es.js +4 -4
  104. package/dist/investments/index.es.js +4 -4
  105. package/dist/merchants/index.es.js +1 -1
  106. package/dist/microinsights/index.es.js +1 -1
  107. package/dist/networth/index.es.js +6 -6
  108. package/dist/notifications/index.es.js +8 -8
  109. package/dist/recurringtransactions/index.es.js +38 -38
  110. package/dist/settings/index.es.js +27 -27
  111. package/dist/spending/index.es.js +7 -7
  112. package/dist/transactions/index.es.js +11 -11
  113. package/dist/trends/index.es.js +12 -12
  114. package/dist/{useAccountDisplayName-BsiXA0qf.mjs → useAccountDisplayName-DHXXCFYZ.mjs} +2 -2
  115. package/dist/{useAccountDisplayName-BsiXA0qf.mjs.map → useAccountDisplayName-DHXXCFYZ.mjs.map} +1 -1
  116. package/dist/{useInsightsEnabled-D5Sdm0TJ.mjs → useInsightsEnabled-B_UpjpE6.mjs} +2 -2
  117. package/dist/{useInsightsEnabled-D5Sdm0TJ.mjs.map → useInsightsEnabled-B_UpjpE6.mjs.map} +1 -1
  118. package/dist/{useWidgetLoadTimer-B0tB-yzL.mjs → useWidgetLoadTimer-C0Mr0eRf.mjs} +2 -2
  119. package/dist/{useWidgetLoadTimer-B0tB-yzL.mjs.map → useWidgetLoadTimer-C0Mr0eRf.mjs.map} +1 -1
  120. package/package.json +1 -1
  121. package/dist/ErrorBoundary-CsdOcnJ9.mjs +0 -24
  122. package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +0 -1
  123. package/dist/GlobalCopyApi-wcnDUzMV.mjs +0 -129
  124. package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +0 -1
  125. package/dist/Help-zVZdcmlk.mjs.map +0 -1
  126. package/dist/UserStore-E5WvBXaY.mjs.map +0 -1
  127. package/dist/hooks-97sNJ_lf.mjs +0 -78
  128. package/dist/hooks-97sNJ_lf.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,9 +1,3 @@
1
- ## [9.1.3] - 07-03-2026
2
-
3
- - **FIXED** - Spending drawer intermittently showed an empty transaction list for months outside the cached transaction window
4
- - **FIXED** - Transaction list stayed empty until hard refresh when any data load failed, because in-flight flags never reset, blocking retries
5
- - **FIXED** - A failed date-range expansion no longer wipes the already-loaded transactions from the list
6
-
7
1
  ## [9.1.2] - 07-02-2026
8
2
 
9
3
  - **FIXED** - Net Worth timeframe analytics event (`netWorth_click_timePeriod`) fired on every dashboard load/refresh instead of only on user timeframe selection
@@ -1,10 +1,10 @@
1
1
  import { jsx as e, jsxs as u, Fragment as T } from "react/jsx-runtime";
2
2
  import { observer as x } from "mobx-react-lite";
3
3
  import { useTheme as $, alpha as rt } from "@mui/material/styles";
4
- import { u as S, a as lt, b as dt, A as ut } from "./AccountDetailsHeader-BliEZhz7.mjs";
5
- import { L as _t } from "./LineChart-CUfiH86G.mjs";
4
+ import { u as S, a as lt, b as dt, A as ut } from "./AccountDetailsHeader-D_UjMD99.mjs";
5
+ import { L as _t } from "./LineChart-BxEIZHht.mjs";
6
6
  import { g as mt, a as pt, b as ht } from "./SpendingData-Fii_xATx.mjs";
7
- import { l as gt, u as D, c as V, i as Ct, f as P, g as Q } from "./hooks-97sNJ_lf.mjs";
7
+ import { l as gt, u as D, c as V, i as Ct, f as P, g as Q } from "./hooks-DWOrMnfZ.mjs";
8
8
  import { c as Y, C as G, e as m, N as Z } from "./Account-DR7Plrqy.mjs";
9
9
  import { I as tt, P as et, S as nt, T as H } from "./TabContentContainer-B0eYJP5p.mjs";
10
10
  import _ from "react";
@@ -24,12 +24,12 @@ import L from "@mui/material/ListItemAvatar";
24
24
  import { Error as W, Language as Tt, CheckCircle as xt } from "@mxenabled/mx-icons";
25
25
  import { I as O } from "./IconBacking-DgT8DCeh.mjs";
26
26
  import { f as Dt } from "./NumberFormatting--XMeeBfr.mjs";
27
- import { u as St } from "./useAccountDisplayName-BsiXA0qf.mjs";
27
+ import { u as St } from "./useAccountDisplayName-DHXXCFYZ.mjs";
28
28
  import { A as I } from "./Analytics-D-jdcL72.mjs";
29
29
  import { D as U } from "./Dialog-Bvd2n8hz.mjs";
30
30
  import { D as z } from "./Drawer-DsnW2o0v.mjs";
31
31
  import Et from "@mui/material/Stack";
32
- import { C as st } from "./ConnectDrawer-CW4LA3H3.mjs";
32
+ import { C as st } from "./ConnectDrawer-BQy4YYuc.mjs";
33
33
  import { fromUnixTime as vt } from "date-fns/fromUnixTime";
34
34
  import { isToday as wt } from "date-fns/isToday";
35
35
  import { isYesterday as It } from "date-fns/isYesterday";
@@ -43,15 +43,15 @@ import { LocalizationProvider as Pt } from "@mui/x-date-pickers-pro";
43
43
  import J from "@mui/material/MenuItem";
44
44
  import Rt from "@mui/material/Select";
45
45
  import Bt from "@mui/material/TextField";
46
- import { F as R } from "./Connect-BH0Pt6zc.mjs";
47
- import { C as Ft } from "./CurrencyInput-DaGEQaLW.mjs";
46
+ import { F as R } from "./Connect-tID_S_5e.mjs";
47
+ import { C as Ft } from "./CurrencyInput-CABYmqBh.mjs";
48
48
  import Ut from "@mui/material/Alert";
49
49
  import $t from "@mui/material/AlertTitle";
50
50
  import Vt from "@mui/material/Link";
51
51
  import Wt from "@mui/material/Paper";
52
52
  import { endOfToday as zt, subDays as Yt, startOfToday as Gt } from "date-fns";
53
- import { T as Ht } from "./EmbeddedCard-DCOQnTz-.mjs";
54
- import { T as jt } from "./TransactionDetails-DT-MQqOB.mjs";
53
+ import { T as Ht } from "./EmbeddedCard-BwfkCsUN.mjs";
54
+ import { T as jt } from "./TransactionDetails-CDZNsKv7.mjs";
55
55
  const Kt = (t, o) => {
56
56
  const n = tt.includes(o) ? mt(t) : [], a = et.includes(o) ? pt(t) : [], c = nt.includes(o) ? ht(t) : [];
57
57
  return [n, a, c].filter((l) => l.length > 0);
@@ -919,4 +919,4 @@ export {
919
919
  fe as b,
920
920
  Qt as u
921
921
  };
922
- //# sourceMappingURL=AccountDetailsDrawer-Cq4kiiKD.mjs.map
922
+ //# sourceMappingURL=AccountDetailsDrawer-Dae8eUXt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccountDetailsDrawer-Cq4kiiKD.mjs","sources":["../src/trends/components/TrendsChart.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountActionsRow.tsx","../src/accounts/hooks/useGetMergeableAccounts.tsx","../src/accounts/components/ConnectionStatusIcons.tsx","../src/accounts/components/AccountListItem.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountActions.tsx","../src/accounts/utils/getConnectionMessages.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountConnection.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailEdit.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetails.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsTab.tsx","../src/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.tsx","../src/accounts/components/detailsdrawer/Transactions/TransactionsTab.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\nimport { useTheme } from '@mui/material/styles'\n\nimport {\n useCategoryStore,\n useGlobalCopyStore,\n INCOME_ACCOUNT_TYPES,\n PAYMENT_ACCOUNT_TYPES,\n SPENDING_ACCOUNT_TYPES,\n} from '../../common'\nimport { AccountType, MonthlyCategoryTotals, TrendsCopy } from '../../core'\n\nimport { useAccountUiStore } from '../../accounts/hooks/useUiStore'\nimport { LineChart } from '../../common/components/charts/LineChart'\nimport type { LineChartDataset, LineChartLabel } from '../../common/components/charts/LineChart'\n\nimport { getIncomeTotals, getPaymentTotals, getSpendingTotals } from '../utils/SpendingData'\n\nconst getDatasets = (\n totals: MonthlyCategoryTotals[],\n accountType: AccountType,\n): LineChartDataset[] => {\n const incomeData = INCOME_ACCOUNT_TYPES.includes(accountType) ? getIncomeTotals(totals) : []\n const paymentData = PAYMENT_ACCOUNT_TYPES.includes(accountType) ? getPaymentTotals(totals) : []\n const spendingData = SPENDING_ACCOUNT_TYPES.includes(accountType) ? getSpendingTotals(totals) : []\n\n // There should always be 1-2 datasets returned. No account type will have all three categories.\n return [incomeData, paymentData, spendingData].filter((data) => data.length > 0)\n}\n\nconst getLabels = (datasets: LineChartDataset[], accountType: AccountType, copy: TrendsCopy) => {\n const [dataA, dataB] = datasets\n const credits = dataA\n const debits = dataB ?? dataA\n const labels: LineChartLabel[] = []\n\n if (credits && debits && INCOME_ACCOUNT_TYPES.includes(accountType)) {\n const lastIncome = credits[credits.length - 1].y\n labels.push({ label: copy.income_label, amount: lastIncome })\n } else if (PAYMENT_ACCOUNT_TYPES.includes(accountType)) {\n const lastPayment = credits[credits.length - 1].y\n labels.push({ label: copy.payments_label, amount: lastPayment })\n }\n\n if (debits && SPENDING_ACCOUNT_TYPES.includes(accountType)) {\n const lastSpending = debits[debits.length - 1].y\n labels.push({ label: copy.spending_label, amount: lastSpending })\n }\n\n return labels\n}\n\nconst TrendsChart = () => {\n const theme = useTheme()\n const { selectedAccount } = useAccountUiStore()\n const { monthlyCategoryTotals } = useCategoryStore()\n const { trends: trendsCopy } = useGlobalCopyStore()\n\n const colors = [theme.palette.chart?.chart1, theme.palette.chart?.chart2]\n const datasets = getDatasets(monthlyCategoryTotals, selectedAccount.account_type)\n const labels = getLabels(datasets, selectedAccount.account_type, trendsCopy)\n const isLoan = [AccountType.LOAN, AccountType.MORTGAGE].includes(selectedAccount.account_type)\n\n return (\n <div data-testid=\"TrendsChart\">\n <LineChart\n colors={colors}\n datasets={datasets}\n height={185}\n labels={labels}\n showAverage={isLoan}\n showAxisHighlight={true}\n showBars={isLoan}\n showLegend={true}\n showTooltip={true}\n showXAxis={true}\n showXAxisTicks={true}\n showYAxis={true}\n showYAxisTicks={true}\n valueFormatterString=\"0,0\"\n />\n </div>\n )\n}\n\nexport default observer(TrendsChart)\n","import ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\ninterface AccountActionsRowProps {\n ariaPressed?: boolean\n onClick: () => void\n isLast?: boolean\n primaryText: string\n secondaryText: string\n}\n\nconst AccountActionsRow: React.FC<React.PropsWithChildren<AccountActionsRowProps>> = ({\n ariaPressed,\n children,\n isLast = false,\n onClick,\n primaryText,\n secondaryText,\n}) => {\n return (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n <ListItemButton aria-pressed={ariaPressed} onClick={onClick}>\n <ListItemText primary={primaryText} secondary={secondaryText} />\n {children}\n </ListItemButton>\n </ListItem>\n )\n}\n\nexport default AccountActionsRow\n","import { useAccountStore } from '../../common'\nimport { useAccountUiStore } from './useUiStore'\n\nexport const useGetMergeableAccounts = () => {\n const { accounts } = useAccountStore()\n const { selectedAccount, selectedMember } = useAccountUiStore()\n return accounts.filter(\n (account) =>\n account.member_guid === selectedMember.guid &&\n selectedMember.successfully_aggregated_at &&\n account.guid !== selectedAccount.guid,\n )\n}\n","import { CheckCircle as CheckCircleIcon, Error as ErrorIcon } from '@mxenabled/mx-icons'\n\nimport { IconBacking } from '../../common'\n\ntype IconProp = {\n size?: number\n}\n\nconst iconStyle = {\n gridRow: 1,\n gridColumn: 1,\n zIndex: 2,\n}\n\nexport const ConnectedStatus = ({ size = 20 }: IconProp) => (\n <IconBacking size={size}>\n <CheckCircleIcon color=\"success\" filled={true} sx={{ fontSize: size, ...iconStyle }} />\n </IconBacking>\n)\n\nexport const ErrorStatus = ({ size = 20 }: IconProp) => (\n <IconBacking size={size}>\n <ErrorIcon color=\"error\" filled={true} sx={{ fontSize: size, ...iconStyle }} />\n </IconBacking>\n)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Badge from '@mui/material/Badge'\nimport Box from '@mui/material/Box'\nimport ListItem, { ListItemOwnProps } from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport { useTheme } from '@mui/material/styles'\n\nimport { InstitutionLogo, Text } from '@mxenabled/mxui'\n\nimport { ErrorStatus } from './ConnectionStatusIcons'\n\nimport { useAccountDisplayName, useAppConfig, useGlobalCopyStore } from '../../common'\nimport { Account, ConnectionStatus } from '../../core'\nimport { getAccountBalanceDetails } from '../utils/AccountFields'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface AccountListItemProps {\n account: Account\n onRowClick?: () => void\n listItemProps?: ListItemOwnProps\n shouldShowConnectionStatus?: boolean\n}\n\nconst AccountListItem: React.FC<AccountListItemProps> = ({\n account,\n onRowClick,\n listItemProps,\n shouldShowConnectionStatus = false,\n}) => {\n const theme = useTheme()\n const displayName = useAccountDisplayName(account)\n const { config } = useAppConfig()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { firstSubtitle, firstValue, secondSubtitle, secondValue } = getAccountBalanceDetails(\n account,\n accountsCopy,\n config.display_available_balance_in_accounts,\n )\n\n let statusIcon = undefined\n if (\n account.connectionStatus === ConnectionStatus.Error ||\n account.connectionStatus === ConnectionStatus.RequiresMfa\n ) {\n statusIcon = <ErrorStatus size={16} />\n }\n\n const content = (\n <>\n <ListItemAvatar>\n <Badge\n badgeContent={shouldShowConnectionStatus ? statusIcon : undefined}\n sx={{\n '& .MuiBadge-badge': {\n right: -1,\n },\n }}\n >\n <InstitutionLogo alt=\"MX\" institutionGuid={account.institution_guid || ''} />\n </Badge>\n </ListItemAvatar>\n\n <ListItemText\n disableTypography={true}\n primary={\n <Text\n bold={true}\n color={account.is_hidden ? theme.palette.text.secondary : undefined}\n variant=\"body1\"\n >\n {`${displayName} ${account.account_number ? `*${account.account_number}` : ''}`}{' '}\n {account.is_hidden && !account.is_closed && accountsCopy.is_hidden}\n {account.is_closed && accountsCopy.is_closed}\n </Text>\n }\n secondary={\n <>\n <Box sx={{ alignItems: 'center', display: 'flex', justifyContent: 'space-between' }}>\n <Text variant=\"caption\">{firstSubtitle}</Text>\n <Text bold={true} variant=\"body2\">\n {formatCurrency(firstValue, '0,0.00')}\n </Text>\n </Box>\n <Box sx={{ alignItems: 'center', display: 'flex', justifyContent: 'space-between' }}>\n <Text variant=\"caption\">{secondSubtitle}</Text>\n <Text ml=\"auto\" variant=\"caption\">\n {secondValue}\n </Text>\n </Box>\n </>\n }\n />\n </>\n )\n\n return (\n <ListItem\n {...listItemProps}\n sx={{\n backgroundColor: 'background.paper',\n color: account.is_closed ? 'grey.700' : '',\n ...listItemProps?.sx,\n }}\n >\n {onRowClick ? (\n <ListItemButton alignItems=\"flex-start\" onClick={onRowClick} sx={{ px: 24 }}>\n {content}\n </ListItemButton>\n ) : (\n content\n )}\n </ListItem>\n )\n}\n\nexport default observer(AccountListItem)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Switch from '@mui/material/Switch'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport AccountActionsRow from './AccountActionsRow'\n\nimport {\n ANALYTICS_EVENTS,\n Dialog,\n Drawer,\n useAccountStore,\n useEvent,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../../common'\nimport { type Account } from '../../../../core'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { useGetMergeableAccounts } from '../../../hooks/useGetMergeableAccounts'\nimport AccountListItem from '../../AccountListItem'\nimport { buildDynamicCopy } from '../../../../core/utils/Localization'\n\ntype UpdatedValue = Pick<Account, 'is_closed'> | Pick<Account, 'is_hidden'>\n\nconst AccountActions = () => {\n const [shouldShowCloseAccountModal, setShouldShowCloseAccountModal] = React.useState(false)\n const [shouldShowAccountMergeDrawer, setShouldShowAccountMergeDrawer] = React.useState(false)\n const [shouldShowMergeConfirmModal, setShouldShowMergeConfirmModal] = React.useState(false)\n const [accountToMerge, setAccountToMerge] = React.useState({} as Account)\n\n const { selectedAccount: account } = useAccountUiStore()\n const { mergeAccounts, updateAccount } = useAccountStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const mergeableAccounts = useGetMergeableAccounts()\n const { onEvent } = useEvent()\n const { modifyTransactionByAccountGuid } = useTransactionStore()\n\n const handleUpdateAccount = async (updatedValue: UpdatedValue) => {\n await updateAccount({\n ...account,\n ...updatedValue,\n })\n if ('is_closed' in updatedValue && updatedValue.is_closed !== account.is_closed)\n modifyTransactionByAccountGuid(account.guid, { accountIsClosed: updatedValue.is_closed })\n }\n\n const handleMergeAccounts = () => {\n mergeAccounts([account.guid, accountToMerge.guid]).finally(() =>\n setShouldShowAccountMergeDrawer(false),\n )\n }\n\n return (\n <>\n <ListSubheader sx={{ backgroundColor: 'transparent', mb: 4, mt: 12, mx: 8 }}>\n <Text bold={true} component=\"h2\" variant=\"caption\">\n {accountsCopy.actions}\n </Text>\n </ListSubheader>\n\n <AccountActionsRow\n ariaPressed={account.is_hidden}\n onClick={() => {\n handleUpdateAccount({ is_hidden: !account.is_hidden })\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_HIDE, { account_guid: account.guid })\n }}\n primaryText={account.is_hidden ? accountsCopy.unhide_account : accountsCopy.hide_Account}\n secondaryText={\n account.is_hidden ? accountsCopy.include_this_account : accountsCopy.exclude_this_account\n }\n >\n <Switch aria-hidden={true} checked={account.is_hidden} tabIndex={-1} />\n </AccountActionsRow>\n\n <AccountActionsRow\n onClick={() => {\n setShouldShowCloseAccountModal(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_MARK_CLOSED, {\n account_guid: account.guid,\n })\n }}\n primaryText={account.is_closed ? accountsCopy.mark_as_open : accountsCopy.mark_as_closed}\n secondaryText={\n account.is_closed\n ? accountsCopy.this_will_set_the_closed_account\n : accountsCopy.this_will_set_the_account_balance_to_0\n }\n >\n <Icon name=\"chevron_right\" />\n <div onClick={(e) => e.stopPropagation()}>\n <Dialog\n copy={{\n close_aria: accountsCopy.close_modal,\n title: account.is_closed\n ? accountsCopy.confirm_mark_as_open\n : accountsCopy.confirm_mark_closed,\n }}\n isOpen={shouldShowCloseAccountModal}\n onClose={() => {\n setShouldShowCloseAccountModal(false)\n }}\n onPrimaryAction={() => handleUpdateAccount({ is_closed: !account.is_closed })}\n >\n <Text truncate={false}>\n {\n buildDynamicCopy(\n account.is_closed\n ? accountsCopy.this_will_resume_updating_the_balance\n : accountsCopy.this_will_set_the_balance_of_your_account,\n account.name,\n ) as string\n }\n </Text>\n </Dialog>\n </div>\n </AccountActionsRow>\n\n {mergeableAccounts.length > 0 && (\n <AccountActionsRow\n isLast={true}\n onClick={() => {\n setShouldShowAccountMergeDrawer(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_MARK_DUPLICATE, {\n account_guid: account.guid,\n })\n }}\n primaryText={accountsCopy.mark_as_duplicate}\n secondaryText={accountsCopy.if_a_connected_account_is_showing_up_twice}\n >\n <Icon name=\"chevron_right\" />\n </AccountActionsRow>\n )}\n\n <Drawer\n ariaLabelClose={accountsCopy.close_drawer}\n isOpen={shouldShowAccountMergeDrawer}\n onClose={() => setShouldShowAccountMergeDrawer(false)}\n title={accountsCopy.mark_as_duplicate}\n >\n <List>\n {mergeableAccounts.map((account: Account) => {\n const isLast = mergeableAccounts.indexOf(account) === mergeableAccounts.length - 1\n return (\n <AccountListItem\n account={account}\n key={account.guid}\n listItemProps={{\n sx: {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n },\n }}\n onRowClick={() => {\n setShouldShowMergeConfirmModal(true)\n setAccountToMerge(account)\n }}\n />\n )\n })}\n </List>\n {shouldShowMergeConfirmModal && (\n <Dialog\n copy={{\n close_aria: accountsCopy.close_modal,\n title: accountsCopy.confirm_merge,\n }}\n isOpen={shouldShowMergeConfirmModal}\n onClose={() => setShouldShowMergeConfirmModal(false)}\n onPrimaryAction={handleMergeAccounts}\n >\n <Text truncate={false}>\n {\n buildDynamicCopy(\n accountsCopy.this_means_accounts_will_be_merged,\n account.name,\n accountToMerge.name,\n ) as string\n }\n </Text>\n <Text color=\"error\" sx={{ mt: 24 }}>\n {accountsCopy.this_action_cannot_be_undone}\n </Text>\n </Dialog>\n )}\n </Drawer>\n </>\n )\n}\n\nexport default observer(AccountActions)\n","import { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { isToday } from 'date-fns/isToday'\nimport { isYesterday } from 'date-fns/isYesterday'\n\nimport { ConnectCopy, ConnectionStatusEnums, type Member } from '../../core'\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nexport interface ConnectionMessageObject {\n cta?: string\n main: string\n statusName: string\n title: string\n}\n\nexport const getConnectionMessages: any = (member: Member, copy: ConnectCopy) => {\n const { connection_messages } = copy\n\n switch (member.connection_status) {\n case ConnectionStatusEnums.CHALLENGED: {\n return {\n cta: connection_messages.challenged_cta,\n main: buildDynamicCopy(\n connection_messages.challenged_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.challenged_connection_title,\n }\n }\n case ConnectionStatusEnums.CLOSED: {\n return {\n main: connection_messages.closed_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.closed_connection_title,\n }\n }\n case ConnectionStatusEnums.DEGRADED: {\n return {\n main: connection_messages.degraded_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.degraded_connection_title,\n }\n }\n case ConnectionStatusEnums.DELAYED: {\n return {\n main: buildDynamicCopy(\n connection_messages.delayed_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.delayed_connection_title,\n }\n }\n case ConnectionStatusEnums.DENIED: {\n return {\n cta: connection_messages.denied_cta,\n main: buildDynamicCopy(\n connection_messages.denied_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.denied_connection_title,\n }\n }\n case ConnectionStatusEnums.DISABLED: {\n return {\n main: connection_messages.disabled_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.disabled_connection_title,\n }\n }\n case ConnectionStatusEnums.DISCONNECTED: {\n return {\n main: buildDynamicCopy(\n connection_messages.disconnected_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.disconnected_connection_title,\n }\n }\n case ConnectionStatusEnums.DISCONTINUED: {\n return {\n main: connection_messages.discontinued_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.discontinued_connection_title,\n }\n }\n case ConnectionStatusEnums.EXPIRED: {\n return {\n cta: connection_messages.expired_cta,\n main: connection_messages.expired_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.expired_connection_title,\n }\n }\n case ConnectionStatusEnums.FAILED: {\n return {\n main: buildDynamicCopy(\n connection_messages.failed_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.failed_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPAIRED: {\n return {\n cta: connection_messages.impaired_cta,\n main: buildDynamicCopy(\n connection_messages.impaired_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.impaired_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPEDED: {\n return {\n main: buildDynamicCopy(\n connection_messages.impeded_connection_description,\n member.name,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.impeded_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPORTED: {\n return {\n cta: connection_messages.imported_cta,\n main: buildDynamicCopy(\n connection_messages.imported_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.imported_connection_title,\n }\n }\n case ConnectionStatusEnums.LOCKED: {\n return {\n cta: connection_messages.locked_cta,\n main: buildDynamicCopy(\n connection_messages.locked_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.locked_connection_title,\n }\n }\n case ConnectionStatusEnums.PREVENTED: {\n return {\n cta: connection_messages.prevented_cta,\n main: connection_messages.prevented_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.prevented_connection_title,\n }\n }\n case ConnectionStatusEnums.REJECTED: {\n return {\n cta: connection_messages.rejected_cta,\n main: connection_messages.rejected_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.rejected_connection_title,\n }\n }\n default: {\n const lastUpdatedCopy = () => {\n const lastUpdated = member.successfully_aggregated_at\n ? fromUnixTime(member.successfully_aggregated_at)\n : undefined\n const lastUpdatedFormattedTime =\n lastUpdated && formatDate(lastUpdated, DATE_FORMATS_INTL.TIME_STAMP_HOUR_MINUTE)\n\n if (!lastUpdatedFormattedTime) return undefined\n if (isToday(lastUpdated))\n return buildDynamicCopy(copy.last_updated_at, copy.today, lastUpdatedFormattedTime)\n if (isYesterday(lastUpdated))\n return buildDynamicCopy(copy.last_updated_at, copy.yesterday, lastUpdatedFormattedTime)\n return buildDynamicCopy(\n copy.last_updated_at,\n formatDate(lastUpdated, DATE_FORMATS_INTL.MONTH_DAY_YEAR),\n lastUpdatedFormattedTime,\n )\n }\n return {\n statusName: copy.connection_statuses[6], // Connected\n title: lastUpdatedCopy(),\n }\n }\n }\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Icon, Text } from '@mxenabled/mxui'\nimport {\n CheckCircle as CheckCircleRoundedIcon,\n Error as ErrorIcon,\n Language as LanguageRoundedIcon,\n} from '@mxenabled/mx-icons'\n\nimport ConnectDrawer from '../../../../common/components/ConnectDrawer'\nimport { IconBacking, useGlobalCopyStore } from '../../../../common'\nimport { NonConnectedStatuses } from '../../../../core'\nimport { getConnectionMessages } from '../../../utils/getConnectionMessages'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\nconst iconStyle = {\n color: 'background.default',\n fontSize: 20,\n gridRow: 1,\n gridColumn: 1,\n zIndex: 2,\n}\n\nconst AccountConnection = () => {\n const [shouldShowConnectDrawer, setShouldShowConnectDrawer] = React.useState(false)\n const {\n palette: { mode },\n } = useTheme()\n const { selectedMember: member } = useAccountUiStore()\n const { accounts: accountsCopy, connect: connectCopy } = useGlobalCopyStore()\n\n const statusMessages = getConnectionMessages(member, connectCopy)\n\n const status = NonConnectedStatuses.includes(member.connection_status)\n ? {\n color: 'error.main',\n ctaCopy: statusMessages.cta ?? '',\n icon: <ErrorIcon filled={true} sx={{ ...iconStyle }} />,\n mainMessage: statusMessages.statusName,\n secondaryMessage: `${statusMessages.title}.`,\n }\n : {\n color: 'success.main',\n icon: <CheckCircleRoundedIcon filled={true} sx={{ ...iconStyle }} />,\n mainMessage: statusMessages.statusName,\n secondaryMessage: statusMessages.title,\n }\n\n return (\n <>\n <ListSubheader sx={{ mb: 4, mt: 12, mx: 8 }}>\n <Text bold={true} component=\"h2\" variant=\"caption\">\n {accountsCopy.connection_status}\n </Text>\n </ListSubheader>\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: member.is_manual || !member.institution_url ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n {member.is_manual || !status.ctaCopy ? (\n <Stack alignItems=\"center\" direction=\"row\" px={24} py={12}>\n <ListItemAvatar>\n <IconBacking backingSx={{ backgroundColor: status.color, borderRadius: 1 }} size={32}>\n {status.icon}\n </IconBacking>\n </ListItemAvatar>\n <ListItemText primary={status.mainMessage} secondary={status.secondaryMessage} />\n </Stack>\n ) : (\n <ListItemButton onClick={() => setShouldShowConnectDrawer(true)}>\n <ListItemAvatar>\n <IconBacking backingSx={{ backgroundColor: status.color, borderRadius: 1 }} size={32}>\n {status.icon}\n </IconBacking>\n </ListItemAvatar>\n <ListItemText\n primary={status.mainMessage}\n secondary={\n status.secondaryMessage && (\n <>\n {status.secondaryMessage}{' '}\n <Text bold={true} sx={{ color: 'action.active' }} variant=\"caption\">\n {status.ctaCopy}\n </Text>\n </>\n )\n }\n />\n <Icon name=\"chevron_right\" />\n </ListItemButton>\n )}\n </ListItem>\n\n {!member.is_manual && member.institution_url && (\n <>\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <ListItemButton component=\"a\" href={member.institution_url} target=\"_blank\">\n <ListItemAvatar>\n <IconBacking\n backingSx={{\n backgroundColor: mode === 'light' ? 'grey.300' : 'grey.700',\n borderRadius: 1,\n }}\n size={32}\n >\n <LanguageRoundedIcon\n sx={{\n ...iconStyle,\n color: mode === 'light' ? 'grey.900' : 'common.white',\n }}\n />\n </IconBacking>\n </ListItemAvatar>\n <ListItemText primary={member.name} secondary={member.institution_url} />\n <Icon name=\"launch\" />\n </ListItemButton>\n </ListItem>\n </>\n )}\n\n {shouldShowConnectDrawer && (\n <ConnectDrawer\n loadWidgetProps={{ current_member_guid: member.guid }}\n onClose={() => setShouldShowConnectDrawer(false)}\n showConnectWidget={shouldShowConnectDrawer}\n title={accountsCopy.manage_connection}\n />\n )}\n </>\n )\n}\n\nexport default observer(AccountConnection)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { addMonths } from 'date-fns/addMonths'\nimport { alpha } from '@mui/material/styles'\n\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport FormControl from '@mui/material/FormControl'\nimport InputLabel from '@mui/material/InputLabel'\nimport { LocalizationProvider } from '@mui/x-date-pickers-pro'\nimport MenuItem from '@mui/material/MenuItem'\nimport Select from '@mui/material/Select'\nimport TextField from '@mui/material/TextField'\n\nimport { CurrencyInput, Dialog, useAccountStore, useGlobalCopyStore } from '../../../../common'\nimport { type AccountField } from '../../../utils/AccountFields'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { FieldType } from '../../../constants/Accounts'\nimport { buildDynamicCopy } from '../../../../core/utils/Localization'\n\ninterface AccountDetailEditProps {\n field: AccountField\n isOpen: boolean\n onClose: () => void\n}\n\nconst AccountDetailEdit: React.FC<AccountDetailEditProps> = ({ field, isOpen, onClose }) => {\n const { updateAccount } = useAccountStore()\n const { selectedAccount: account } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n const [editedValue, setEditedValue] = React.useState<any>(account[field.name])\n const [errorMessage, setErrorMessage] = React.useState('')\n const [hasValidCurrencyInput, setHasValidCurrencyInput] = React.useState(true)\n\n const handleClose = () => {\n setEditedValue('')\n setErrorMessage('')\n onClose()\n }\n\n const getEditableField = () => {\n switch (field.type) {\n case FieldType.Select: {\n return (\n <FormControl fullWidth={true}>\n <InputLabel id={`${field.label}-select-label`}>{field.label}</InputLabel>\n <Select\n displayEmpty={true}\n id={`${field.label}-select`}\n label={field.label}\n labelId={`${field.label}-select-label`}\n onChange={(e) => setEditedValue(e.target.value)}\n slotProps={{\n input: {\n sx: {\n backgroundColor: 'background.paper',\n },\n },\n }}\n value={editedValue}\n >\n {!editedValue && (\n <MenuItem disabled={true} value=\"\">\n {field.placeholder}\n </MenuItem>\n )}\n {field.options?.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n )\n }\n\n case FieldType.Currency: {\n return (\n <CurrencyInput\n amount={(editedValue as string | number) || ''}\n ariaLabel={field.placeholder}\n fullWidth={true}\n label={field.label}\n placeholder={field.placeholder}\n setAmount={setEditedValue}\n setHasValidInput={setHasValidCurrencyInput}\n />\n )\n }\n\n case FieldType.Date: {\n return (\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DateCalendar\n maxDate={addMonths(new Date(), 1)}\n minDate={new Date()}\n onChange={(date: Date) => {\n if (account[field.name] && Number(account[field.name]) <= 31) {\n // gets and sets the day of the month to editedValue\n setEditedValue(date.getDate())\n } else {\n // the day of the month was already passed, so we set it directly to state\n setEditedValue(date)\n }\n }}\n sx={{\n '& .MuiPickersDay-today': {\n color: 'primary.lighter',\n },\n '& .MuiPickersArrowSwitcher-button': {\n color: 'primary.lighter',\n '&:hover': {\n backgroundColor: (theme) => alpha(theme.palette.primary.light, 0.1),\n },\n },\n }}\n views={['day']}\n />\n </LocalizationProvider>\n )\n }\n\n default: {\n return (\n <TextField\n defaultValue={account[field.name]}\n error={!!errorMessage}\n fullWidth={true}\n helperText={errorMessage}\n onChange={updateField}\n placeholder={field.placeholder}\n slotProps={{\n htmlInput: {\n 'aria-label': field.placeholder,\n },\n }}\n />\n )\n }\n }\n }\n\n const saveField = () => {\n // prevents any unnecessary api calls\n if (account[field.name] !== editedValue) {\n updateAccount({\n ...account,\n [field.name]: editedValue,\n })\n }\n handleClose()\n }\n\n const updateField = (e: React.ChangeEvent<HTMLInputElement>) => {\n setEditedValue(e.target.value)\n\n if (field.validation) {\n setErrorMessage(field.validation(e.target.value))\n }\n }\n\n return (\n <Dialog\n copy={{\n close_aria: accountsCopy.close_aria,\n title: buildDynamicCopy(accountsCopy.edit_field, field.label) as string,\n }}\n disablePrimaryButton={!!errorMessage || !hasValidCurrencyInput}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={saveField}\n primaryText={accountsCopy.save}\n sx={{\n '& .MuiButton-root:focus-visible, & .MuiButton-root:focus': {\n outline: '2px solid',\n outlineColor: 'primary.main',\n outlineOffset: '2px',\n },\n }}\n >\n {getEditableField()}\n </Dialog>\n )\n}\n\nexport default observer(AccountDetailEdit)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport AccountDetailEdit from './AccountDetailEdit'\n\nimport { getAccountDetailFields, type AccountField } from '../../../utils/AccountFields'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { useEvent, useGlobalCopyStore } from '../../../../common'\n\nconst AccountDetails = () => {\n const widgetProfile = window.app?.config\n\n const { onEvent } = useEvent()\n const { selectedAccount: account } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n const fields = getAccountDetailFields(account, accountsCopy)\n const canEdit =\n account.member_is_managed_by_user ||\n (!account.member_is_managed_by_user && widgetProfile.enable_renaming_home_accounts)\n\n const [showEditDialog, setShowEditDialog] = React.useState(false)\n const [fieldToEdit, setFieldToEdit] = React.useState<AccountField>(fields[0])\n\n const displayableFields = fields.filter(\n (field) => canEdit || account[field.name] || account[field.name] === 0,\n )\n\n return (\n <>\n {displayableFields.map((field) => {\n const hasValue = account[field.name] || account[field.name] === 0\n const isLast = displayableFields.indexOf(field) === displayableFields.length - 1\n\n const content = (\n <ListItemText\n disableTypography={true}\n primary={<Text sx={{ fontSize: 11 }}>{field.label}</Text>}\n secondary={\n <Text bold={true} sx={{ fontSize: 15 }}>\n {hasValue\n ? (field.valueFormatter(account[field.name]) as string)\n : field.placeholder}\n </Text>\n }\n />\n )\n\n return (\n <React.Fragment key={field.name}>\n {canEdit ? (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n px: 0,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n <ListItemButton\n onClick={() => {\n setFieldToEdit(field)\n setShowEditDialog(true)\n if (field?.event) onEvent(field.event, { account_guid: account.guid })\n }}\n >\n {content}\n <Icon name=\"chevron_right\" />\n </ListItemButton>\n </ListItem>\n ) : (\n hasValue && (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n px: 24,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n {content}\n </ListItem>\n )\n )}\n </React.Fragment>\n )\n })}\n {showEditDialog && fieldToEdit && (\n <AccountDetailEdit\n field={fieldToEdit}\n isOpen={showEditDialog}\n onClose={() => setShowEditDialog(false)}\n />\n )}\n </>\n )\n}\n\nexport default observer(AccountDetails)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\n\nimport AccountActions from './AccountActions'\nimport AccountConnection from './AccountConnection'\nimport AccountDetails from './AccountDetails'\n\nimport { ANALYTICS_EVENTS, useEvent } from '../../../../common'\n\nconst AccountDetailsTab = () => {\n const { onEvent } = useEvent()\n React.useEffect(() => onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_VIEW), [])\n\n return (\n <List>\n <AccountDetails />\n <AccountConnection />\n <AccountActions />\n </List>\n )\n}\n\nexport default observer(AccountDetailsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Alert from '@mui/material/Alert'\nimport AlertTitle from '@mui/material/AlertTitle'\nimport Link from '@mui/material/Link'\nimport Paper from '@mui/material/Paper'\n\nimport { Text } from '@mxenabled/mxui'\nimport { Error as ErrorIcon } from '@mxenabled/mx-icons'\n\nimport ConnectDrawer from '../../../../common/components/ConnectDrawer'\n\nimport {\n getConnectionMessages,\n ConnectionMessageObject,\n} from '../../../utils/getConnectionMessages'\nimport { useGlobalCopyStore } from '../../../../common'\nimport { NonConnectedStatuses } from '../../../../core'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\ninterface ConnectionErrorMessageProps {\n setTabValue: (val: number) => void\n}\n\nconst ConnectionErrorMessage: React.FC<ConnectionErrorMessageProps> = ({ setTabValue }) => {\n const [shouldShowConnectDrawer, setShouldShowConnectDrawer] = React.useState(false)\n\n const { selectedMember: member } = useAccountUiStore()\n const { accounts: accountsCopy, connect: connectCopy } = useGlobalCopyStore()\n\n const hasError =\n member.connection_status && NonConnectedStatuses.includes(member.connection_status)\n\n React.useEffect(() => {\n if (hasError) {\n setTabValue(1)\n }\n }, [hasError])\n\n if (!hasError) return\n\n const statusMessages: ConnectionMessageObject = getConnectionMessages(member, connectCopy)\n\n // eslint-disable-next-line consistent-return\n return (\n <>\n <Paper\n sx={{\n mb: 16,\n mt: 24,\n mx: 24,\n }}\n >\n <Alert\n icon={<ErrorIcon filled={true} />}\n role=\"none\"\n severity=\"error\"\n sx={{\n borderLeft: 5,\n borderTopLeftRadius: 6,\n borderBottomLeftRadius: 6,\n borderColor: 'error.main',\n color: 'text.primary',\n '&.MuiPaper-root': {\n backgroundColor: 'background.paper',\n },\n }}\n >\n {statusMessages.title && (\n <AlertTitle sx={{ fontWeight: 600, marginTop: 2 }} variant=\"body1\">\n {statusMessages.title}\n </AlertTitle>\n )}\n <Text component=\"p\" variant=\"subtitle2\">\n {statusMessages.main}\n </Text>\n {statusMessages.cta && (\n <Link\n onClick={() => setShouldShowConnectDrawer(true)}\n sx={{ fontSize: 15, fontWeight: 600, ml: 0 }}\n >\n {statusMessages.cta}\n </Link>\n )}\n </Alert>\n </Paper>\n\n {shouldShowConnectDrawer && (\n <ConnectDrawer\n loadWidgetProps={{ current_member_guid: member.guid }}\n onClose={() => setShouldShowConnectDrawer(false)}\n showConnectWidget={shouldShowConnectDrawer}\n title={accountsCopy.manage_connection}\n />\n )}\n </>\n )\n}\n\nexport default observer(ConnectionErrorMessage)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { subDays, startOfToday, endOfToday } from 'date-fns'\n\nimport {\n ANALYTICS_EVENTS,\n Drawer,\n useEvent,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../../common'\nimport { TransactionDetails, TransactionList } from '../../../../transactions'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\nconst TransactionsTab = () => {\n const [guid, setGuid] = React.useState('')\n\n const { onEvent } = useEvent()\n const { selectedAccount } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { isTransactionDataLoaded, loadTransactionData, setFilter, sortedTransactions } =\n useTransactionStore()\n\n React.useEffect(() => {\n if (!isTransactionDataLoaded) {\n loadTransactionData().finally()\n }\n }, [])\n\n const transaction = React.useMemo(\n () => sortedTransactions.find((t) => t.guid === guid),\n [guid, sortedTransactions],\n )\n\n React.useEffect(() => {\n setFilter({\n dateRange: { start: subDays(startOfToday(), 90), end: endOfToday() },\n accounts: [selectedAccount.guid],\n })\n }, [selectedAccount])\n\n React.useEffect(() => onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_VIEW_TRANSACTIONS), [])\n\n return (\n <>\n <TransactionList onClick={setGuid} />\n {transaction && (\n <Drawer\n ariaLabelClose={accountsCopy.close_drawer}\n isOpen={!!guid}\n onClose={() => setGuid('')}\n title={accountsCopy.transaction_drawer_title}\n >\n <TransactionDetails transaction={transaction} />\n </Drawer>\n )}\n </>\n )\n}\n\nexport default observer(TransactionsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { TabContentContainer, useGlobalCopyStore } from '../../../../common'\n\nimport AccountDetailsTab from './AccountDetailsTab'\nimport ConnectionErrorMessage from './ConnectionErrorMessage'\nimport TransactionsTab from '../Transactions/TransactionsTab'\n\nconst AccountDetailsContent = () => {\n const [tabValue, setTabValue] = React.useState(0)\n\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n return (\n <>\n <ConnectionErrorMessage setTabValue={setTabValue} />\n\n <Tabs\n aria-label={accountsCopy.transactions_and_details_aria}\n centered={true}\n onChange={(_, val) => setTabValue(val)}\n textColor=\"primary\"\n value={tabValue}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"transaction-details-tabpanel-0\"\n id=\"transaction-details-tab-0\"\n label={accountsCopy.transactions}\n />\n <Tab\n aria-controls=\"account-details-tabpanel-1\"\n id=\"account-details-tab-1\"\n label={accountsCopy.account_details}\n />\n </Tabs>\n\n <TabContentContainer index={0} name=\"transaction-details\" value={tabValue}>\n <TransactionsTab />\n </TabContentContainer>\n\n <TabContentContainer index={1} name=\"account-details\" value={tabValue}>\n <AccountDetailsTab />\n </TabContentContainer>\n </>\n )\n}\n\nexport default observer(AccountDetailsContent)\n","import { Drawer, useGlobalCopyStore } from '../../../../common'\nimport TrendsChart from '../../../../trends/components/TrendsChart'\n\nimport AccountDetailsContent from './AccountDetailsContent'\nimport AccountDetailsHeader from './AccountDetailsHeader'\n\ninterface AccountDetailsDrawerProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst AccountDetailsDrawer = ({ isOpen, onClose }: AccountDetailsDrawerProps) => {\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n return (\n <Drawer\n ariaLabelClose={accountsCopy.close_account_details_aria}\n isOpen={isOpen}\n onClose={onClose}\n title={accountsCopy.account_details}\n >\n <AccountDetailsHeader ChartComponent={TrendsChart} />\n\n <AccountDetailsContent />\n </Drawer>\n )\n}\n\nexport default AccountDetailsDrawer\n"],"names":["getDatasets","totals","accountType","incomeData","INCOME_ACCOUNT_TYPES","getIncomeTotals","paymentData","PAYMENT_ACCOUNT_TYPES","getPaymentTotals","spendingData","SPENDING_ACCOUNT_TYPES","getSpendingTotals","data","getLabels","datasets","copy","dataA","dataB","credits","debits","labels","lastIncome","lastPayment","lastSpending","TrendsChart","theme","useTheme","selectedAccount","useAccountUiStore","monthlyCategoryTotals","useCategoryStore","trendsCopy","useGlobalCopyStore","colors","isLoan","AccountType","jsx","LineChart","TrendsChart$1","observer","AccountActionsRow","ariaPressed","children","isLast","onClick","primaryText","secondaryText","ListItem","jsxs","ListItemButton","ListItemText","useGetMergeableAccounts","accounts","useAccountStore","selectedMember","account","iconStyle","ErrorStatus","size","IconBacking","ErrorIcon","AccountListItem","onRowClick","listItemProps","shouldShowConnectionStatus","displayName","useAccountDisplayName","config","useAppConfig","accountsCopy","firstSubtitle","firstValue","secondSubtitle","secondValue","getAccountBalanceDetails","statusIcon","ConnectionStatus","content","Fragment","ListItemAvatar","Badge","InstitutionLogo","Text","Box","formatCurrency","AccountListItem$1","AccountActions","shouldShowCloseAccountModal","setShouldShowCloseAccountModal","React","shouldShowAccountMergeDrawer","setShouldShowAccountMergeDrawer","shouldShowMergeConfirmModal","setShouldShowMergeConfirmModal","accountToMerge","setAccountToMerge","mergeAccounts","updateAccount","mergeableAccounts","onEvent","useEvent","modifyTransactionByAccountGuid","useTransactionStore","handleUpdateAccount","updatedValue","handleMergeAccounts","ListSubheader","ANALYTICS_EVENTS","Switch","Icon","e","Dialog","buildDynamicCopy","Drawer","List","AccountActions$1","getConnectionMessages","member","connection_messages","ConnectionStatusEnums","lastUpdatedCopy","lastUpdated","fromUnixTime","lastUpdatedFormattedTime","formatDate","DATE_FORMATS_INTL","isToday","isYesterday","AccountConnection","shouldShowConnectDrawer","setShouldShowConnectDrawer","mode","connectCopy","statusMessages","status","NonConnectedStatuses","CheckCircleRoundedIcon","Stack","LanguageRoundedIcon","ConnectDrawer","AccountConnection$1","AccountDetailEdit","field","isOpen","onClose","editedValue","setEditedValue","errorMessage","setErrorMessage","hasValidCurrencyInput","setHasValidCurrencyInput","handleClose","getEditableField","FieldType","FormControl","InputLabel","Select","MenuItem","option","CurrencyInput","LocalizationProvider","AdapterDateFns","DateCalendar","addMonths","date","alpha","TextField","updateField","saveField","AccountDetailEdit$1","AccountDetails","widgetProfile","fields","getAccountDetailFields","canEdit","showEditDialog","setShowEditDialog","fieldToEdit","setFieldToEdit","displayableFields","hasValue","AccountDetails$1","AccountDetailsTab","AccountDetailsTab$1","ConnectionErrorMessage","setTabValue","hasError","Paper","Alert","AlertTitle","Link","ConnectionErrorMessage$1","TransactionsTab","guid","setGuid","isTransactionDataLoaded","loadTransactionData","setFilter","sortedTransactions","transaction","t","subDays","startOfToday","endOfToday","TransactionList","TransactionDetails","TransactionsTab$1","AccountDetailsContent","tabValue","Tabs","_","val","Tab","TabContentContainer","AccountDetailsContent$1","AccountDetailsDrawer","AccountDetailsHeader"],"mappings":"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"}
1
+ {"version":3,"file":"AccountDetailsDrawer-Dae8eUXt.mjs","sources":["../src/trends/components/TrendsChart.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountActionsRow.tsx","../src/accounts/hooks/useGetMergeableAccounts.tsx","../src/accounts/components/ConnectionStatusIcons.tsx","../src/accounts/components/AccountListItem.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountActions.tsx","../src/accounts/utils/getConnectionMessages.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountConnection.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailEdit.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetails.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsTab.tsx","../src/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.tsx","../src/accounts/components/detailsdrawer/Transactions/TransactionsTab.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\nimport { useTheme } from '@mui/material/styles'\n\nimport {\n useCategoryStore,\n useGlobalCopyStore,\n INCOME_ACCOUNT_TYPES,\n PAYMENT_ACCOUNT_TYPES,\n SPENDING_ACCOUNT_TYPES,\n} from '../../common'\nimport { AccountType, MonthlyCategoryTotals, TrendsCopy } from '../../core'\n\nimport { useAccountUiStore } from '../../accounts/hooks/useUiStore'\nimport { LineChart } from '../../common/components/charts/LineChart'\nimport type { LineChartDataset, LineChartLabel } from '../../common/components/charts/LineChart'\n\nimport { getIncomeTotals, getPaymentTotals, getSpendingTotals } from '../utils/SpendingData'\n\nconst getDatasets = (\n totals: MonthlyCategoryTotals[],\n accountType: AccountType,\n): LineChartDataset[] => {\n const incomeData = INCOME_ACCOUNT_TYPES.includes(accountType) ? getIncomeTotals(totals) : []\n const paymentData = PAYMENT_ACCOUNT_TYPES.includes(accountType) ? getPaymentTotals(totals) : []\n const spendingData = SPENDING_ACCOUNT_TYPES.includes(accountType) ? getSpendingTotals(totals) : []\n\n // There should always be 1-2 datasets returned. No account type will have all three categories.\n return [incomeData, paymentData, spendingData].filter((data) => data.length > 0)\n}\n\nconst getLabels = (datasets: LineChartDataset[], accountType: AccountType, copy: TrendsCopy) => {\n const [dataA, dataB] = datasets\n const credits = dataA\n const debits = dataB ?? dataA\n const labels: LineChartLabel[] = []\n\n if (credits && debits && INCOME_ACCOUNT_TYPES.includes(accountType)) {\n const lastIncome = credits[credits.length - 1].y\n labels.push({ label: copy.income_label, amount: lastIncome })\n } else if (PAYMENT_ACCOUNT_TYPES.includes(accountType)) {\n const lastPayment = credits[credits.length - 1].y\n labels.push({ label: copy.payments_label, amount: lastPayment })\n }\n\n if (debits && SPENDING_ACCOUNT_TYPES.includes(accountType)) {\n const lastSpending = debits[debits.length - 1].y\n labels.push({ label: copy.spending_label, amount: lastSpending })\n }\n\n return labels\n}\n\nconst TrendsChart = () => {\n const theme = useTheme()\n const { selectedAccount } = useAccountUiStore()\n const { monthlyCategoryTotals } = useCategoryStore()\n const { trends: trendsCopy } = useGlobalCopyStore()\n\n const colors = [theme.palette.chart?.chart1, theme.palette.chart?.chart2]\n const datasets = getDatasets(monthlyCategoryTotals, selectedAccount.account_type)\n const labels = getLabels(datasets, selectedAccount.account_type, trendsCopy)\n const isLoan = [AccountType.LOAN, AccountType.MORTGAGE].includes(selectedAccount.account_type)\n\n return (\n <div data-testid=\"TrendsChart\">\n <LineChart\n colors={colors}\n datasets={datasets}\n height={185}\n labels={labels}\n showAverage={isLoan}\n showAxisHighlight={true}\n showBars={isLoan}\n showLegend={true}\n showTooltip={true}\n showXAxis={true}\n showXAxisTicks={true}\n showYAxis={true}\n showYAxisTicks={true}\n valueFormatterString=\"0,0\"\n />\n </div>\n )\n}\n\nexport default observer(TrendsChart)\n","import ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\ninterface AccountActionsRowProps {\n ariaPressed?: boolean\n onClick: () => void\n isLast?: boolean\n primaryText: string\n secondaryText: string\n}\n\nconst AccountActionsRow: React.FC<React.PropsWithChildren<AccountActionsRowProps>> = ({\n ariaPressed,\n children,\n isLast = false,\n onClick,\n primaryText,\n secondaryText,\n}) => {\n return (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n <ListItemButton aria-pressed={ariaPressed} onClick={onClick}>\n <ListItemText primary={primaryText} secondary={secondaryText} />\n {children}\n </ListItemButton>\n </ListItem>\n )\n}\n\nexport default AccountActionsRow\n","import { useAccountStore } from '../../common'\nimport { useAccountUiStore } from './useUiStore'\n\nexport const useGetMergeableAccounts = () => {\n const { accounts } = useAccountStore()\n const { selectedAccount, selectedMember } = useAccountUiStore()\n return accounts.filter(\n (account) =>\n account.member_guid === selectedMember.guid &&\n selectedMember.successfully_aggregated_at &&\n account.guid !== selectedAccount.guid,\n )\n}\n","import { CheckCircle as CheckCircleIcon, Error as ErrorIcon } from '@mxenabled/mx-icons'\n\nimport { IconBacking } from '../../common'\n\ntype IconProp = {\n size?: number\n}\n\nconst iconStyle = {\n gridRow: 1,\n gridColumn: 1,\n zIndex: 2,\n}\n\nexport const ConnectedStatus = ({ size = 20 }: IconProp) => (\n <IconBacking size={size}>\n <CheckCircleIcon color=\"success\" filled={true} sx={{ fontSize: size, ...iconStyle }} />\n </IconBacking>\n)\n\nexport const ErrorStatus = ({ size = 20 }: IconProp) => (\n <IconBacking size={size}>\n <ErrorIcon color=\"error\" filled={true} sx={{ fontSize: size, ...iconStyle }} />\n </IconBacking>\n)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Badge from '@mui/material/Badge'\nimport Box from '@mui/material/Box'\nimport ListItem, { ListItemOwnProps } from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport { useTheme } from '@mui/material/styles'\n\nimport { InstitutionLogo, Text } from '@mxenabled/mxui'\n\nimport { ErrorStatus } from './ConnectionStatusIcons'\n\nimport { useAccountDisplayName, useAppConfig, useGlobalCopyStore } from '../../common'\nimport { Account, ConnectionStatus } from '../../core'\nimport { getAccountBalanceDetails } from '../utils/AccountFields'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface AccountListItemProps {\n account: Account\n onRowClick?: () => void\n listItemProps?: ListItemOwnProps\n shouldShowConnectionStatus?: boolean\n}\n\nconst AccountListItem: React.FC<AccountListItemProps> = ({\n account,\n onRowClick,\n listItemProps,\n shouldShowConnectionStatus = false,\n}) => {\n const theme = useTheme()\n const displayName = useAccountDisplayName(account)\n const { config } = useAppConfig()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { firstSubtitle, firstValue, secondSubtitle, secondValue } = getAccountBalanceDetails(\n account,\n accountsCopy,\n config.display_available_balance_in_accounts,\n )\n\n let statusIcon = undefined\n if (\n account.connectionStatus === ConnectionStatus.Error ||\n account.connectionStatus === ConnectionStatus.RequiresMfa\n ) {\n statusIcon = <ErrorStatus size={16} />\n }\n\n const content = (\n <>\n <ListItemAvatar>\n <Badge\n badgeContent={shouldShowConnectionStatus ? statusIcon : undefined}\n sx={{\n '& .MuiBadge-badge': {\n right: -1,\n },\n }}\n >\n <InstitutionLogo alt=\"MX\" institutionGuid={account.institution_guid || ''} />\n </Badge>\n </ListItemAvatar>\n\n <ListItemText\n disableTypography={true}\n primary={\n <Text\n bold={true}\n color={account.is_hidden ? theme.palette.text.secondary : undefined}\n variant=\"body1\"\n >\n {`${displayName} ${account.account_number ? `*${account.account_number}` : ''}`}{' '}\n {account.is_hidden && !account.is_closed && accountsCopy.is_hidden}\n {account.is_closed && accountsCopy.is_closed}\n </Text>\n }\n secondary={\n <>\n <Box sx={{ alignItems: 'center', display: 'flex', justifyContent: 'space-between' }}>\n <Text variant=\"caption\">{firstSubtitle}</Text>\n <Text bold={true} variant=\"body2\">\n {formatCurrency(firstValue, '0,0.00')}\n </Text>\n </Box>\n <Box sx={{ alignItems: 'center', display: 'flex', justifyContent: 'space-between' }}>\n <Text variant=\"caption\">{secondSubtitle}</Text>\n <Text ml=\"auto\" variant=\"caption\">\n {secondValue}\n </Text>\n </Box>\n </>\n }\n />\n </>\n )\n\n return (\n <ListItem\n {...listItemProps}\n sx={{\n backgroundColor: 'background.paper',\n color: account.is_closed ? 'grey.700' : '',\n ...listItemProps?.sx,\n }}\n >\n {onRowClick ? (\n <ListItemButton alignItems=\"flex-start\" onClick={onRowClick} sx={{ px: 24 }}>\n {content}\n </ListItemButton>\n ) : (\n content\n )}\n </ListItem>\n )\n}\n\nexport default observer(AccountListItem)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Switch from '@mui/material/Switch'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport AccountActionsRow from './AccountActionsRow'\n\nimport {\n ANALYTICS_EVENTS,\n Dialog,\n Drawer,\n useAccountStore,\n useEvent,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../../common'\nimport { type Account } from '../../../../core'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { useGetMergeableAccounts } from '../../../hooks/useGetMergeableAccounts'\nimport AccountListItem from '../../AccountListItem'\nimport { buildDynamicCopy } from '../../../../core/utils/Localization'\n\ntype UpdatedValue = Pick<Account, 'is_closed'> | Pick<Account, 'is_hidden'>\n\nconst AccountActions = () => {\n const [shouldShowCloseAccountModal, setShouldShowCloseAccountModal] = React.useState(false)\n const [shouldShowAccountMergeDrawer, setShouldShowAccountMergeDrawer] = React.useState(false)\n const [shouldShowMergeConfirmModal, setShouldShowMergeConfirmModal] = React.useState(false)\n const [accountToMerge, setAccountToMerge] = React.useState({} as Account)\n\n const { selectedAccount: account } = useAccountUiStore()\n const { mergeAccounts, updateAccount } = useAccountStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const mergeableAccounts = useGetMergeableAccounts()\n const { onEvent } = useEvent()\n const { modifyTransactionByAccountGuid } = useTransactionStore()\n\n const handleUpdateAccount = async (updatedValue: UpdatedValue) => {\n await updateAccount({\n ...account,\n ...updatedValue,\n })\n if ('is_closed' in updatedValue && updatedValue.is_closed !== account.is_closed)\n modifyTransactionByAccountGuid(account.guid, { accountIsClosed: updatedValue.is_closed })\n }\n\n const handleMergeAccounts = () => {\n mergeAccounts([account.guid, accountToMerge.guid]).finally(() =>\n setShouldShowAccountMergeDrawer(false),\n )\n }\n\n return (\n <>\n <ListSubheader sx={{ backgroundColor: 'transparent', mb: 4, mt: 12, mx: 8 }}>\n <Text bold={true} component=\"h2\" variant=\"caption\">\n {accountsCopy.actions}\n </Text>\n </ListSubheader>\n\n <AccountActionsRow\n ariaPressed={account.is_hidden}\n onClick={() => {\n handleUpdateAccount({ is_hidden: !account.is_hidden })\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_HIDE, { account_guid: account.guid })\n }}\n primaryText={account.is_hidden ? accountsCopy.unhide_account : accountsCopy.hide_Account}\n secondaryText={\n account.is_hidden ? accountsCopy.include_this_account : accountsCopy.exclude_this_account\n }\n >\n <Switch aria-hidden={true} checked={account.is_hidden} tabIndex={-1} />\n </AccountActionsRow>\n\n <AccountActionsRow\n onClick={() => {\n setShouldShowCloseAccountModal(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_MARK_CLOSED, {\n account_guid: account.guid,\n })\n }}\n primaryText={account.is_closed ? accountsCopy.mark_as_open : accountsCopy.mark_as_closed}\n secondaryText={\n account.is_closed\n ? accountsCopy.this_will_set_the_closed_account\n : accountsCopy.this_will_set_the_account_balance_to_0\n }\n >\n <Icon name=\"chevron_right\" />\n <div onClick={(e) => e.stopPropagation()}>\n <Dialog\n copy={{\n close_aria: accountsCopy.close_modal,\n title: account.is_closed\n ? accountsCopy.confirm_mark_as_open\n : accountsCopy.confirm_mark_closed,\n }}\n isOpen={shouldShowCloseAccountModal}\n onClose={() => {\n setShouldShowCloseAccountModal(false)\n }}\n onPrimaryAction={() => handleUpdateAccount({ is_closed: !account.is_closed })}\n >\n <Text truncate={false}>\n {\n buildDynamicCopy(\n account.is_closed\n ? accountsCopy.this_will_resume_updating_the_balance\n : accountsCopy.this_will_set_the_balance_of_your_account,\n account.name,\n ) as string\n }\n </Text>\n </Dialog>\n </div>\n </AccountActionsRow>\n\n {mergeableAccounts.length > 0 && (\n <AccountActionsRow\n isLast={true}\n onClick={() => {\n setShouldShowAccountMergeDrawer(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_MARK_DUPLICATE, {\n account_guid: account.guid,\n })\n }}\n primaryText={accountsCopy.mark_as_duplicate}\n secondaryText={accountsCopy.if_a_connected_account_is_showing_up_twice}\n >\n <Icon name=\"chevron_right\" />\n </AccountActionsRow>\n )}\n\n <Drawer\n ariaLabelClose={accountsCopy.close_drawer}\n isOpen={shouldShowAccountMergeDrawer}\n onClose={() => setShouldShowAccountMergeDrawer(false)}\n title={accountsCopy.mark_as_duplicate}\n >\n <List>\n {mergeableAccounts.map((account: Account) => {\n const isLast = mergeableAccounts.indexOf(account) === mergeableAccounts.length - 1\n return (\n <AccountListItem\n account={account}\n key={account.guid}\n listItemProps={{\n sx: {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n },\n }}\n onRowClick={() => {\n setShouldShowMergeConfirmModal(true)\n setAccountToMerge(account)\n }}\n />\n )\n })}\n </List>\n {shouldShowMergeConfirmModal && (\n <Dialog\n copy={{\n close_aria: accountsCopy.close_modal,\n title: accountsCopy.confirm_merge,\n }}\n isOpen={shouldShowMergeConfirmModal}\n onClose={() => setShouldShowMergeConfirmModal(false)}\n onPrimaryAction={handleMergeAccounts}\n >\n <Text truncate={false}>\n {\n buildDynamicCopy(\n accountsCopy.this_means_accounts_will_be_merged,\n account.name,\n accountToMerge.name,\n ) as string\n }\n </Text>\n <Text color=\"error\" sx={{ mt: 24 }}>\n {accountsCopy.this_action_cannot_be_undone}\n </Text>\n </Dialog>\n )}\n </Drawer>\n </>\n )\n}\n\nexport default observer(AccountActions)\n","import { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { isToday } from 'date-fns/isToday'\nimport { isYesterday } from 'date-fns/isYesterday'\n\nimport { ConnectCopy, ConnectionStatusEnums, type Member } from '../../core'\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nexport interface ConnectionMessageObject {\n cta?: string\n main: string\n statusName: string\n title: string\n}\n\nexport const getConnectionMessages: any = (member: Member, copy: ConnectCopy) => {\n const { connection_messages } = copy\n\n switch (member.connection_status) {\n case ConnectionStatusEnums.CHALLENGED: {\n return {\n cta: connection_messages.challenged_cta,\n main: buildDynamicCopy(\n connection_messages.challenged_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.challenged_connection_title,\n }\n }\n case ConnectionStatusEnums.CLOSED: {\n return {\n main: connection_messages.closed_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.closed_connection_title,\n }\n }\n case ConnectionStatusEnums.DEGRADED: {\n return {\n main: connection_messages.degraded_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.degraded_connection_title,\n }\n }\n case ConnectionStatusEnums.DELAYED: {\n return {\n main: buildDynamicCopy(\n connection_messages.delayed_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.delayed_connection_title,\n }\n }\n case ConnectionStatusEnums.DENIED: {\n return {\n cta: connection_messages.denied_cta,\n main: buildDynamicCopy(\n connection_messages.denied_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.denied_connection_title,\n }\n }\n case ConnectionStatusEnums.DISABLED: {\n return {\n main: connection_messages.disabled_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.disabled_connection_title,\n }\n }\n case ConnectionStatusEnums.DISCONNECTED: {\n return {\n main: buildDynamicCopy(\n connection_messages.disconnected_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.disconnected_connection_title,\n }\n }\n case ConnectionStatusEnums.DISCONTINUED: {\n return {\n main: connection_messages.discontinued_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.discontinued_connection_title,\n }\n }\n case ConnectionStatusEnums.EXPIRED: {\n return {\n cta: connection_messages.expired_cta,\n main: connection_messages.expired_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.expired_connection_title,\n }\n }\n case ConnectionStatusEnums.FAILED: {\n return {\n main: buildDynamicCopy(\n connection_messages.failed_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.failed_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPAIRED: {\n return {\n cta: connection_messages.impaired_cta,\n main: buildDynamicCopy(\n connection_messages.impaired_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.impaired_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPEDED: {\n return {\n main: buildDynamicCopy(\n connection_messages.impeded_connection_description,\n member.name,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.impeded_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPORTED: {\n return {\n cta: connection_messages.imported_cta,\n main: buildDynamicCopy(\n connection_messages.imported_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.imported_connection_title,\n }\n }\n case ConnectionStatusEnums.LOCKED: {\n return {\n cta: connection_messages.locked_cta,\n main: buildDynamicCopy(\n connection_messages.locked_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.locked_connection_title,\n }\n }\n case ConnectionStatusEnums.PREVENTED: {\n return {\n cta: connection_messages.prevented_cta,\n main: connection_messages.prevented_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.prevented_connection_title,\n }\n }\n case ConnectionStatusEnums.REJECTED: {\n return {\n cta: connection_messages.rejected_cta,\n main: connection_messages.rejected_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.rejected_connection_title,\n }\n }\n default: {\n const lastUpdatedCopy = () => {\n const lastUpdated = member.successfully_aggregated_at\n ? fromUnixTime(member.successfully_aggregated_at)\n : undefined\n const lastUpdatedFormattedTime =\n lastUpdated && formatDate(lastUpdated, DATE_FORMATS_INTL.TIME_STAMP_HOUR_MINUTE)\n\n if (!lastUpdatedFormattedTime) return undefined\n if (isToday(lastUpdated))\n return buildDynamicCopy(copy.last_updated_at, copy.today, lastUpdatedFormattedTime)\n if (isYesterday(lastUpdated))\n return buildDynamicCopy(copy.last_updated_at, copy.yesterday, lastUpdatedFormattedTime)\n return buildDynamicCopy(\n copy.last_updated_at,\n formatDate(lastUpdated, DATE_FORMATS_INTL.MONTH_DAY_YEAR),\n lastUpdatedFormattedTime,\n )\n }\n return {\n statusName: copy.connection_statuses[6], // Connected\n title: lastUpdatedCopy(),\n }\n }\n }\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Icon, Text } from '@mxenabled/mxui'\nimport {\n CheckCircle as CheckCircleRoundedIcon,\n Error as ErrorIcon,\n Language as LanguageRoundedIcon,\n} from '@mxenabled/mx-icons'\n\nimport ConnectDrawer from '../../../../common/components/ConnectDrawer'\nimport { IconBacking, useGlobalCopyStore } from '../../../../common'\nimport { NonConnectedStatuses } from '../../../../core'\nimport { getConnectionMessages } from '../../../utils/getConnectionMessages'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\nconst iconStyle = {\n color: 'background.default',\n fontSize: 20,\n gridRow: 1,\n gridColumn: 1,\n zIndex: 2,\n}\n\nconst AccountConnection = () => {\n const [shouldShowConnectDrawer, setShouldShowConnectDrawer] = React.useState(false)\n const {\n palette: { mode },\n } = useTheme()\n const { selectedMember: member } = useAccountUiStore()\n const { accounts: accountsCopy, connect: connectCopy } = useGlobalCopyStore()\n\n const statusMessages = getConnectionMessages(member, connectCopy)\n\n const status = NonConnectedStatuses.includes(member.connection_status)\n ? {\n color: 'error.main',\n ctaCopy: statusMessages.cta ?? '',\n icon: <ErrorIcon filled={true} sx={{ ...iconStyle }} />,\n mainMessage: statusMessages.statusName,\n secondaryMessage: `${statusMessages.title}.`,\n }\n : {\n color: 'success.main',\n icon: <CheckCircleRoundedIcon filled={true} sx={{ ...iconStyle }} />,\n mainMessage: statusMessages.statusName,\n secondaryMessage: statusMessages.title,\n }\n\n return (\n <>\n <ListSubheader sx={{ mb: 4, mt: 12, mx: 8 }}>\n <Text bold={true} component=\"h2\" variant=\"caption\">\n {accountsCopy.connection_status}\n </Text>\n </ListSubheader>\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: member.is_manual || !member.institution_url ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n {member.is_manual || !status.ctaCopy ? (\n <Stack alignItems=\"center\" direction=\"row\" px={24} py={12}>\n <ListItemAvatar>\n <IconBacking backingSx={{ backgroundColor: status.color, borderRadius: 1 }} size={32}>\n {status.icon}\n </IconBacking>\n </ListItemAvatar>\n <ListItemText primary={status.mainMessage} secondary={status.secondaryMessage} />\n </Stack>\n ) : (\n <ListItemButton onClick={() => setShouldShowConnectDrawer(true)}>\n <ListItemAvatar>\n <IconBacking backingSx={{ backgroundColor: status.color, borderRadius: 1 }} size={32}>\n {status.icon}\n </IconBacking>\n </ListItemAvatar>\n <ListItemText\n primary={status.mainMessage}\n secondary={\n status.secondaryMessage && (\n <>\n {status.secondaryMessage}{' '}\n <Text bold={true} sx={{ color: 'action.active' }} variant=\"caption\">\n {status.ctaCopy}\n </Text>\n </>\n )\n }\n />\n <Icon name=\"chevron_right\" />\n </ListItemButton>\n )}\n </ListItem>\n\n {!member.is_manual && member.institution_url && (\n <>\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <ListItemButton component=\"a\" href={member.institution_url} target=\"_blank\">\n <ListItemAvatar>\n <IconBacking\n backingSx={{\n backgroundColor: mode === 'light' ? 'grey.300' : 'grey.700',\n borderRadius: 1,\n }}\n size={32}\n >\n <LanguageRoundedIcon\n sx={{\n ...iconStyle,\n color: mode === 'light' ? 'grey.900' : 'common.white',\n }}\n />\n </IconBacking>\n </ListItemAvatar>\n <ListItemText primary={member.name} secondary={member.institution_url} />\n <Icon name=\"launch\" />\n </ListItemButton>\n </ListItem>\n </>\n )}\n\n {shouldShowConnectDrawer && (\n <ConnectDrawer\n loadWidgetProps={{ current_member_guid: member.guid }}\n onClose={() => setShouldShowConnectDrawer(false)}\n showConnectWidget={shouldShowConnectDrawer}\n title={accountsCopy.manage_connection}\n />\n )}\n </>\n )\n}\n\nexport default observer(AccountConnection)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { addMonths } from 'date-fns/addMonths'\nimport { alpha } from '@mui/material/styles'\n\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport FormControl from '@mui/material/FormControl'\nimport InputLabel from '@mui/material/InputLabel'\nimport { LocalizationProvider } from '@mui/x-date-pickers-pro'\nimport MenuItem from '@mui/material/MenuItem'\nimport Select from '@mui/material/Select'\nimport TextField from '@mui/material/TextField'\n\nimport { CurrencyInput, Dialog, useAccountStore, useGlobalCopyStore } from '../../../../common'\nimport { type AccountField } from '../../../utils/AccountFields'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { FieldType } from '../../../constants/Accounts'\nimport { buildDynamicCopy } from '../../../../core/utils/Localization'\n\ninterface AccountDetailEditProps {\n field: AccountField\n isOpen: boolean\n onClose: () => void\n}\n\nconst AccountDetailEdit: React.FC<AccountDetailEditProps> = ({ field, isOpen, onClose }) => {\n const { updateAccount } = useAccountStore()\n const { selectedAccount: account } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n const [editedValue, setEditedValue] = React.useState<any>(account[field.name])\n const [errorMessage, setErrorMessage] = React.useState('')\n const [hasValidCurrencyInput, setHasValidCurrencyInput] = React.useState(true)\n\n const handleClose = () => {\n setEditedValue('')\n setErrorMessage('')\n onClose()\n }\n\n const getEditableField = () => {\n switch (field.type) {\n case FieldType.Select: {\n return (\n <FormControl fullWidth={true}>\n <InputLabel id={`${field.label}-select-label`}>{field.label}</InputLabel>\n <Select\n displayEmpty={true}\n id={`${field.label}-select`}\n label={field.label}\n labelId={`${field.label}-select-label`}\n onChange={(e) => setEditedValue(e.target.value)}\n slotProps={{\n input: {\n sx: {\n backgroundColor: 'background.paper',\n },\n },\n }}\n value={editedValue}\n >\n {!editedValue && (\n <MenuItem disabled={true} value=\"\">\n {field.placeholder}\n </MenuItem>\n )}\n {field.options?.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n )\n }\n\n case FieldType.Currency: {\n return (\n <CurrencyInput\n amount={(editedValue as string | number) || ''}\n ariaLabel={field.placeholder}\n fullWidth={true}\n label={field.label}\n placeholder={field.placeholder}\n setAmount={setEditedValue}\n setHasValidInput={setHasValidCurrencyInput}\n />\n )\n }\n\n case FieldType.Date: {\n return (\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DateCalendar\n maxDate={addMonths(new Date(), 1)}\n minDate={new Date()}\n onChange={(date: Date) => {\n if (account[field.name] && Number(account[field.name]) <= 31) {\n // gets and sets the day of the month to editedValue\n setEditedValue(date.getDate())\n } else {\n // the day of the month was already passed, so we set it directly to state\n setEditedValue(date)\n }\n }}\n sx={{\n '& .MuiPickersDay-today': {\n color: 'primary.lighter',\n },\n '& .MuiPickersArrowSwitcher-button': {\n color: 'primary.lighter',\n '&:hover': {\n backgroundColor: (theme) => alpha(theme.palette.primary.light, 0.1),\n },\n },\n }}\n views={['day']}\n />\n </LocalizationProvider>\n )\n }\n\n default: {\n return (\n <TextField\n defaultValue={account[field.name]}\n error={!!errorMessage}\n fullWidth={true}\n helperText={errorMessage}\n onChange={updateField}\n placeholder={field.placeholder}\n slotProps={{\n htmlInput: {\n 'aria-label': field.placeholder,\n },\n }}\n />\n )\n }\n }\n }\n\n const saveField = () => {\n // prevents any unnecessary api calls\n if (account[field.name] !== editedValue) {\n updateAccount({\n ...account,\n [field.name]: editedValue,\n })\n }\n handleClose()\n }\n\n const updateField = (e: React.ChangeEvent<HTMLInputElement>) => {\n setEditedValue(e.target.value)\n\n if (field.validation) {\n setErrorMessage(field.validation(e.target.value))\n }\n }\n\n return (\n <Dialog\n copy={{\n close_aria: accountsCopy.close_aria,\n title: buildDynamicCopy(accountsCopy.edit_field, field.label) as string,\n }}\n disablePrimaryButton={!!errorMessage || !hasValidCurrencyInput}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={saveField}\n primaryText={accountsCopy.save}\n sx={{\n '& .MuiButton-root:focus-visible, & .MuiButton-root:focus': {\n outline: '2px solid',\n outlineColor: 'primary.main',\n outlineOffset: '2px',\n },\n }}\n >\n {getEditableField()}\n </Dialog>\n )\n}\n\nexport default observer(AccountDetailEdit)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport AccountDetailEdit from './AccountDetailEdit'\n\nimport { getAccountDetailFields, type AccountField } from '../../../utils/AccountFields'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { useEvent, useGlobalCopyStore } from '../../../../common'\n\nconst AccountDetails = () => {\n const widgetProfile = window.app?.config\n\n const { onEvent } = useEvent()\n const { selectedAccount: account } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n const fields = getAccountDetailFields(account, accountsCopy)\n const canEdit =\n account.member_is_managed_by_user ||\n (!account.member_is_managed_by_user && widgetProfile.enable_renaming_home_accounts)\n\n const [showEditDialog, setShowEditDialog] = React.useState(false)\n const [fieldToEdit, setFieldToEdit] = React.useState<AccountField>(fields[0])\n\n const displayableFields = fields.filter(\n (field) => canEdit || account[field.name] || account[field.name] === 0,\n )\n\n return (\n <>\n {displayableFields.map((field) => {\n const hasValue = account[field.name] || account[field.name] === 0\n const isLast = displayableFields.indexOf(field) === displayableFields.length - 1\n\n const content = (\n <ListItemText\n disableTypography={true}\n primary={<Text sx={{ fontSize: 11 }}>{field.label}</Text>}\n secondary={\n <Text bold={true} sx={{ fontSize: 15 }}>\n {hasValue\n ? (field.valueFormatter(account[field.name]) as string)\n : field.placeholder}\n </Text>\n }\n />\n )\n\n return (\n <React.Fragment key={field.name}>\n {canEdit ? (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n px: 0,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n <ListItemButton\n onClick={() => {\n setFieldToEdit(field)\n setShowEditDialog(true)\n if (field?.event) onEvent(field.event, { account_guid: account.guid })\n }}\n >\n {content}\n <Icon name=\"chevron_right\" />\n </ListItemButton>\n </ListItem>\n ) : (\n hasValue && (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n px: 24,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n {content}\n </ListItem>\n )\n )}\n </React.Fragment>\n )\n })}\n {showEditDialog && fieldToEdit && (\n <AccountDetailEdit\n field={fieldToEdit}\n isOpen={showEditDialog}\n onClose={() => setShowEditDialog(false)}\n />\n )}\n </>\n )\n}\n\nexport default observer(AccountDetails)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\n\nimport AccountActions from './AccountActions'\nimport AccountConnection from './AccountConnection'\nimport AccountDetails from './AccountDetails'\n\nimport { ANALYTICS_EVENTS, useEvent } from '../../../../common'\n\nconst AccountDetailsTab = () => {\n const { onEvent } = useEvent()\n React.useEffect(() => onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_VIEW), [])\n\n return (\n <List>\n <AccountDetails />\n <AccountConnection />\n <AccountActions />\n </List>\n )\n}\n\nexport default observer(AccountDetailsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Alert from '@mui/material/Alert'\nimport AlertTitle from '@mui/material/AlertTitle'\nimport Link from '@mui/material/Link'\nimport Paper from '@mui/material/Paper'\n\nimport { Text } from '@mxenabled/mxui'\nimport { Error as ErrorIcon } from '@mxenabled/mx-icons'\n\nimport ConnectDrawer from '../../../../common/components/ConnectDrawer'\n\nimport {\n getConnectionMessages,\n ConnectionMessageObject,\n} from '../../../utils/getConnectionMessages'\nimport { useGlobalCopyStore } from '../../../../common'\nimport { NonConnectedStatuses } from '../../../../core'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\ninterface ConnectionErrorMessageProps {\n setTabValue: (val: number) => void\n}\n\nconst ConnectionErrorMessage: React.FC<ConnectionErrorMessageProps> = ({ setTabValue }) => {\n const [shouldShowConnectDrawer, setShouldShowConnectDrawer] = React.useState(false)\n\n const { selectedMember: member } = useAccountUiStore()\n const { accounts: accountsCopy, connect: connectCopy } = useGlobalCopyStore()\n\n const hasError =\n member.connection_status && NonConnectedStatuses.includes(member.connection_status)\n\n React.useEffect(() => {\n if (hasError) {\n setTabValue(1)\n }\n }, [hasError])\n\n if (!hasError) return\n\n const statusMessages: ConnectionMessageObject = getConnectionMessages(member, connectCopy)\n\n // eslint-disable-next-line consistent-return\n return (\n <>\n <Paper\n sx={{\n mb: 16,\n mt: 24,\n mx: 24,\n }}\n >\n <Alert\n icon={<ErrorIcon filled={true} />}\n role=\"none\"\n severity=\"error\"\n sx={{\n borderLeft: 5,\n borderTopLeftRadius: 6,\n borderBottomLeftRadius: 6,\n borderColor: 'error.main',\n color: 'text.primary',\n '&.MuiPaper-root': {\n backgroundColor: 'background.paper',\n },\n }}\n >\n {statusMessages.title && (\n <AlertTitle sx={{ fontWeight: 600, marginTop: 2 }} variant=\"body1\">\n {statusMessages.title}\n </AlertTitle>\n )}\n <Text component=\"p\" variant=\"subtitle2\">\n {statusMessages.main}\n </Text>\n {statusMessages.cta && (\n <Link\n onClick={() => setShouldShowConnectDrawer(true)}\n sx={{ fontSize: 15, fontWeight: 600, ml: 0 }}\n >\n {statusMessages.cta}\n </Link>\n )}\n </Alert>\n </Paper>\n\n {shouldShowConnectDrawer && (\n <ConnectDrawer\n loadWidgetProps={{ current_member_guid: member.guid }}\n onClose={() => setShouldShowConnectDrawer(false)}\n showConnectWidget={shouldShowConnectDrawer}\n title={accountsCopy.manage_connection}\n />\n )}\n </>\n )\n}\n\nexport default observer(ConnectionErrorMessage)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { subDays, startOfToday, endOfToday } from 'date-fns'\n\nimport {\n ANALYTICS_EVENTS,\n Drawer,\n useEvent,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../../common'\nimport { TransactionDetails, TransactionList } from '../../../../transactions'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\nconst TransactionsTab = () => {\n const [guid, setGuid] = React.useState('')\n\n const { onEvent } = useEvent()\n const { selectedAccount } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { isTransactionDataLoaded, loadTransactionData, setFilter, sortedTransactions } =\n useTransactionStore()\n\n React.useEffect(() => {\n if (!isTransactionDataLoaded) {\n loadTransactionData().finally()\n }\n }, [])\n\n const transaction = React.useMemo(\n () => sortedTransactions.find((t) => t.guid === guid),\n [guid, sortedTransactions],\n )\n\n React.useEffect(() => {\n setFilter({\n dateRange: { start: subDays(startOfToday(), 90), end: endOfToday() },\n accounts: [selectedAccount.guid],\n })\n }, [selectedAccount])\n\n React.useEffect(() => onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_VIEW_TRANSACTIONS), [])\n\n return (\n <>\n <TransactionList onClick={setGuid} />\n {transaction && (\n <Drawer\n ariaLabelClose={accountsCopy.close_drawer}\n isOpen={!!guid}\n onClose={() => setGuid('')}\n title={accountsCopy.transaction_drawer_title}\n >\n <TransactionDetails transaction={transaction} />\n </Drawer>\n )}\n </>\n )\n}\n\nexport default observer(TransactionsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { TabContentContainer, useGlobalCopyStore } from '../../../../common'\n\nimport AccountDetailsTab from './AccountDetailsTab'\nimport ConnectionErrorMessage from './ConnectionErrorMessage'\nimport TransactionsTab from '../Transactions/TransactionsTab'\n\nconst AccountDetailsContent = () => {\n const [tabValue, setTabValue] = React.useState(0)\n\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n return (\n <>\n <ConnectionErrorMessage setTabValue={setTabValue} />\n\n <Tabs\n aria-label={accountsCopy.transactions_and_details_aria}\n centered={true}\n onChange={(_, val) => setTabValue(val)}\n textColor=\"primary\"\n value={tabValue}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"transaction-details-tabpanel-0\"\n id=\"transaction-details-tab-0\"\n label={accountsCopy.transactions}\n />\n <Tab\n aria-controls=\"account-details-tabpanel-1\"\n id=\"account-details-tab-1\"\n label={accountsCopy.account_details}\n />\n </Tabs>\n\n <TabContentContainer index={0} name=\"transaction-details\" value={tabValue}>\n <TransactionsTab />\n </TabContentContainer>\n\n <TabContentContainer index={1} name=\"account-details\" value={tabValue}>\n <AccountDetailsTab />\n </TabContentContainer>\n </>\n )\n}\n\nexport default observer(AccountDetailsContent)\n","import { Drawer, useGlobalCopyStore } from '../../../../common'\nimport TrendsChart from '../../../../trends/components/TrendsChart'\n\nimport AccountDetailsContent from './AccountDetailsContent'\nimport AccountDetailsHeader from './AccountDetailsHeader'\n\ninterface AccountDetailsDrawerProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst AccountDetailsDrawer = ({ isOpen, onClose }: AccountDetailsDrawerProps) => {\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n return (\n <Drawer\n ariaLabelClose={accountsCopy.close_account_details_aria}\n isOpen={isOpen}\n onClose={onClose}\n title={accountsCopy.account_details}\n >\n <AccountDetailsHeader ChartComponent={TrendsChart} />\n\n <AccountDetailsContent />\n </Drawer>\n )\n}\n\nexport default AccountDetailsDrawer\n"],"names":["getDatasets","totals","accountType","incomeData","INCOME_ACCOUNT_TYPES","getIncomeTotals","paymentData","PAYMENT_ACCOUNT_TYPES","getPaymentTotals","spendingData","SPENDING_ACCOUNT_TYPES","getSpendingTotals","data","getLabels","datasets","copy","dataA","dataB","credits","debits","labels","lastIncome","lastPayment","lastSpending","TrendsChart","theme","useTheme","selectedAccount","useAccountUiStore","monthlyCategoryTotals","useCategoryStore","trendsCopy","useGlobalCopyStore","colors","isLoan","AccountType","jsx","LineChart","TrendsChart$1","observer","AccountActionsRow","ariaPressed","children","isLast","onClick","primaryText","secondaryText","ListItem","jsxs","ListItemButton","ListItemText","useGetMergeableAccounts","accounts","useAccountStore","selectedMember","account","iconStyle","ErrorStatus","size","IconBacking","ErrorIcon","AccountListItem","onRowClick","listItemProps","shouldShowConnectionStatus","displayName","useAccountDisplayName","config","useAppConfig","accountsCopy","firstSubtitle","firstValue","secondSubtitle","secondValue","getAccountBalanceDetails","statusIcon","ConnectionStatus","content","Fragment","ListItemAvatar","Badge","InstitutionLogo","Text","Box","formatCurrency","AccountListItem$1","AccountActions","shouldShowCloseAccountModal","setShouldShowCloseAccountModal","React","shouldShowAccountMergeDrawer","setShouldShowAccountMergeDrawer","shouldShowMergeConfirmModal","setShouldShowMergeConfirmModal","accountToMerge","setAccountToMerge","mergeAccounts","updateAccount","mergeableAccounts","onEvent","useEvent","modifyTransactionByAccountGuid","useTransactionStore","handleUpdateAccount","updatedValue","handleMergeAccounts","ListSubheader","ANALYTICS_EVENTS","Switch","Icon","e","Dialog","buildDynamicCopy","Drawer","List","AccountActions$1","getConnectionMessages","member","connection_messages","ConnectionStatusEnums","lastUpdatedCopy","lastUpdated","fromUnixTime","lastUpdatedFormattedTime","formatDate","DATE_FORMATS_INTL","isToday","isYesterday","AccountConnection","shouldShowConnectDrawer","setShouldShowConnectDrawer","mode","connectCopy","statusMessages","status","NonConnectedStatuses","CheckCircleRoundedIcon","Stack","LanguageRoundedIcon","ConnectDrawer","AccountConnection$1","AccountDetailEdit","field","isOpen","onClose","editedValue","setEditedValue","errorMessage","setErrorMessage","hasValidCurrencyInput","setHasValidCurrencyInput","handleClose","getEditableField","FieldType","FormControl","InputLabel","Select","MenuItem","option","CurrencyInput","LocalizationProvider","AdapterDateFns","DateCalendar","addMonths","date","alpha","TextField","updateField","saveField","AccountDetailEdit$1","AccountDetails","widgetProfile","fields","getAccountDetailFields","canEdit","showEditDialog","setShowEditDialog","fieldToEdit","setFieldToEdit","displayableFields","hasValue","AccountDetails$1","AccountDetailsTab","AccountDetailsTab$1","ConnectionErrorMessage","setTabValue","hasError","Paper","Alert","AlertTitle","Link","ConnectionErrorMessage$1","TransactionsTab","guid","setGuid","isTransactionDataLoaded","loadTransactionData","setFilter","sortedTransactions","transaction","t","subDays","startOfToday","endOfToday","TransactionList","TransactionDetails","TransactionsTab$1","AccountDetailsContent","tabValue","Tabs","_","val","Tab","TabContentContainer","AccountDetailsContent$1","AccountDetailsDrawer","AccountDetailsHeader"],"mappings":"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"}
@@ -4,10 +4,10 @@ import d from "@mui/material/Stack";
4
4
  import { Text as b, Icon as y, H3 as M, InstitutionLogo as H, H2 as U } from "@mxenabled/mxui";
5
5
  import { f as _, i as C, a as Y, b as w } from "./NumberFormatting--XMeeBfr.mjs";
6
6
  import h from "react";
7
- import { G as j, c as v, l as k, e as V, i as z, u as B } from "./hooks-97sNJ_lf.mjs";
7
+ import { G as j, c as v, l as k, e as V, i as z, u as B } from "./hooks-DWOrMnfZ.mjs";
8
8
  import { c as u, b as W, f as $, h as q } from "./Account-DR7Plrqy.mjs";
9
9
  import { g as A, a as K, u as J, i as Q, b as X, c as Z } from "./AccountUtils-Cbh8r9cP.mjs";
10
- import { F as o } from "./Connect-BH0Pt6zc.mjs";
10
+ import { F as o } from "./Connect-tID_S_5e.mjs";
11
11
  import { j as T } from "./DateUtil-CzBmbjmA.mjs";
12
12
  import { b as s } from "./Localization-DnoVyBNK.mjs";
13
13
  import { f as S, D } from "./DateFormats-HudZ3Bjs.mjs";
@@ -16,7 +16,7 @@ import te from "@mui/material/CardContent";
16
16
  import ae from "@mui/material/CardHeader";
17
17
  import { L as ne } from "./Loader-CxeBwuPG.mjs";
18
18
  import { I as ie, P as re, S as le } from "./TabContentContainer-B0eYJP5p.mjs";
19
- import { u as se } from "./useAccountDisplayName-BsiXA0qf.mjs";
19
+ import { u as se } from "./useAccountDisplayName-DHXXCFYZ.mjs";
20
20
  const I = () => {
21
21
  if (!h.useContext(j))
22
22
  throw new Error("useCategoryUiStore() must be used within the GlobalDataContext");
@@ -227,4 +227,4 @@ export {
227
227
  xe as g,
228
228
  I as u
229
229
  };
230
- //# sourceMappingURL=AccountDetailsHeader-BliEZhz7.mjs.map
230
+ //# sourceMappingURL=AccountDetailsHeader-D_UjMD99.mjs.map