@mx-cartographer/experiences 8.0.0-alpha.sms2 → 9.0.0-alpha.mega1

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 (139) hide show
  1. package/CHANGELOG.md +217 -0
  2. package/dist/{Account-Cp30A3ad.mjs → Account-BIKn4XEZ.mjs} +1 -1
  3. package/dist/Account-CMjOp7S2.mjs +118 -0
  4. package/dist/AccountApi-DgZ8ILj1.mjs +19 -0
  5. package/dist/AccountDetailsHeader-BOV91g1o.mjs +95 -0
  6. package/dist/AccountDisplayName-CO7z3v99.mjs +11 -0
  7. package/dist/{AccountFields-CW6cIthP.mjs → AccountFields-BRRH37K1.mjs} +10 -11
  8. package/dist/{AccountListItem-DxmAs98Z.mjs → AccountListItem-Ds5C0mOT.mjs} +4 -4
  9. package/dist/{AccountStore-hIs-yA6W.mjs → AccountStore-BFKvXJSD.mjs} +79 -69
  10. package/dist/{Accounts-DUHkUyK4.mjs → Accounts-CuE8aSZN.mjs} +1 -1
  11. package/dist/{BudgetUtil-CIDAPPPT.mjs → BudgetUtil-CDSOZXem.mjs} +4 -4
  12. package/dist/CategorySelectorDrawer-C4aZYP4N.mjs +418 -0
  13. package/dist/CategoryStore-DEqAnHbi.mjs +186 -0
  14. package/dist/{CategoryUtil-DfVKKkRf.mjs → CategoryUtil-CFHBvaV4.mjs} +1 -1
  15. package/dist/{ConnectionsDrawer-CSo6AFkG.mjs → ConnectionsDrawer-BExzgE16.mjs} +5 -5
  16. package/dist/{CurrencyInput-BrGvhgVK.mjs → CurrencyInput-DDQ4DBrE.mjs} +1 -1
  17. package/dist/{CurrencyText-Dr0EZ7bp.mjs → CurrencyText-C-85TnUF.mjs} +3 -3
  18. package/dist/{DateUtil-CDPZw_-m.mjs → DateUtil-CVsMhbZU.mjs} +3 -3
  19. package/dist/{DebtsStore-hi1cqrRk.mjs → DebtsStore-Dv_T7Dts.mjs} +12 -12
  20. package/dist/{Dialog-CDV0kKxj.mjs → Dialog-CWymUiuO.mjs} +32 -35
  21. package/dist/Drawer-Bet2ZPJo.mjs +176 -0
  22. package/dist/{ExportCsvAction-CQ1grpwo.mjs → ExportCsvAction-oG_Mn66T.mjs} +3 -3
  23. package/dist/{FinstrongStore-dKZOZ2hM.mjs → FinstrongStore-BjFkMTIL.mjs} +6 -6
  24. package/dist/GlobalAccountFilter-BpWlPAl5.mjs +316 -0
  25. package/dist/{GoalStore-CFeAJloA.mjs → GoalStore-Dbjgft2i.mjs} +155 -137
  26. package/dist/{Help-i4OasOO-.mjs → Help-BW_ar-4B.mjs} +2 -2
  27. package/dist/LineChart-DHj-Bufi.mjs +580 -0
  28. package/dist/{ListItemAction-BNCWQAN_.mjs → ListItemAction-Cbr3417C.mjs} +10 -10
  29. package/dist/{ManageIncome-D_qVX5dN.mjs → ManageIncome-DIIyqDTp.mjs} +85 -85
  30. package/dist/{MicroWidgetContainer-BGpNl5ZS.mjs → MicroWidgetContainer-DSyYwRCU.mjs} +2 -2
  31. package/dist/{MiniWidgetContainer-D7MkHG15.mjs → MiniWidgetContainer-DKn7ndO6.mjs} +1 -1
  32. package/dist/NetWorthStore-B6ziBtaH.mjs +168 -0
  33. package/dist/NotificationSettings-e789PcRb.mjs +676 -0
  34. package/dist/{OriginalBalanceAction-62e0mU_3.mjs → OriginalBalanceAction-DFoG79Ba.mjs} +3 -3
  35. package/dist/{RecurringSettings-RfZ8Wuhh.mjs → RecurringSettings-BpCUcE8w.mjs} +4 -4
  36. package/dist/{RecurringTransactionsStore-D3EOKZ2B.mjs → RecurringTransactionsStore-D_--5PWH.mjs} +1 -1
  37. package/dist/{RecurringTransactions-Bhx56aA3.mjs → RepeatingTransaction-C2txVA9O.mjs} +3 -3
  38. package/dist/{SettingsStore-BASMQSIp.mjs → SettingsStore-CInvh-rQ.mjs} +1 -1
  39. package/dist/SpendingData-B7NuTQ9s.mjs +53 -0
  40. package/dist/SpendingLegend-BxefXiQd.mjs +193 -0
  41. package/dist/TransactionDetails-CPwv9xtZ.mjs +1374 -0
  42. package/dist/{TransactionStore-DgLrYW4C.mjs → TransactionStore-D2aMUClq.mjs} +128 -111
  43. package/dist/TrendsStore-BdsYfCc7.mjs +183 -0
  44. package/dist/{User-DqNX2GAK.mjs → User-CulNdZUr.mjs} +21 -20
  45. package/dist/ViewMoreMicroCard-CDWR16_h.mjs +1147 -0
  46. package/dist/WidgetContainer-mzejMmz2.mjs +555 -0
  47. package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsChart.d.ts +1 -0
  48. package/dist/accounts/index.es.js +933 -232
  49. package/dist/accounts/stores/AccountStore.d.ts +6 -2
  50. package/dist/accounts/utils/AccountDetails.d.ts +5 -0
  51. package/dist/analytics/index.es.js +2 -2
  52. package/dist/budgets/components/AddBudgets.d.ts +2 -1
  53. package/dist/budgets/index.es.js +561 -522
  54. package/dist/cashflow/index.es.js +397 -396
  55. package/dist/categories/components/CustomCategories/AddSubcategory.d.ts +1 -0
  56. package/dist/categories/components/CustomCategories/DeleteSubcategory.d.ts +1 -0
  57. package/dist/categories/components/CustomCategories/RenameSubcategory.d.ts +1 -0
  58. package/dist/categories/components/SubcategoryRow.d.ts +1 -0
  59. package/dist/categories/index.es.js +2 -2
  60. package/dist/categories/stores/CategoryStore.d.ts +5 -3
  61. package/dist/common/components/GlobalAccountFilter.d.ts +11 -0
  62. package/dist/common/components/WidgetContainer.d.ts +7 -6
  63. package/dist/common/components/charts/linechart/CustomTooltip.d.ts +6 -1
  64. package/dist/common/components/charts/stackedlinechart/CustomPointTooltip.d.ts +5 -2
  65. package/dist/common/components/globalaccountfilter/GlobalAccountFilterList.d.ts +7 -0
  66. package/dist/common/components/index.d.ts +2 -2
  67. package/dist/common/hooks/index.d.ts +1 -0
  68. package/dist/common/hooks/useWidgetLoadTimer.d.ts +6 -0
  69. package/dist/common/index.es.js +325 -306
  70. package/dist/common/stores/GlobalUiStore.d.ts +7 -4
  71. package/dist/common/types/localization/AccountsCopy.d.ts +6 -0
  72. package/dist/common/types/localization/CategoryCopy.d.ts +3 -0
  73. package/dist/common/types/localization/CommonCopy.d.ts +3 -0
  74. package/dist/common/types/localization/GoalsCopy.d.ts +3 -1
  75. package/dist/common/types/localization/MicroInsightsCopy.d.ts +1 -0
  76. package/dist/common/types/localization/TransactionsCopy.d.ts +4 -0
  77. package/dist/common/types/localization/TrendsCopy.d.ts +4 -0
  78. package/dist/dashboard/index.es.js +95 -125
  79. package/dist/debts/index.es.js +466 -460
  80. package/dist/{exportTransactionsToCSV-BFpuIAXW.mjs → exportTransactionsToCSV-BU1jTY0Q.mjs} +4 -4
  81. package/dist/finstrong/components/shared/CustomDoubleBarPlot.d.ts +4 -5
  82. package/dist/finstrong/index.es.js +1660 -1553
  83. package/dist/goals/index.es.js +716 -677
  84. package/dist/goals/stores/GoalStore.d.ts +2 -0
  85. package/dist/help/index.es.js +14 -10
  86. package/dist/{hooks-C41HAxM5.mjs → hooks-fY_n74f7.mjs} +16 -16
  87. package/dist/investments/index.es.js +464 -457
  88. package/dist/merchants/index.es.js +1 -1
  89. package/dist/microinsights/MicroCardTemplate.d.ts +23 -0
  90. package/dist/microinsights/beaticons/BeatMaterialIcon.d.ts +8 -0
  91. package/dist/microinsights/beaticons/MonthlySpendComparisonIcon.d.ts +1 -2
  92. package/dist/microinsights/beaticons/index.d.ts +1 -0
  93. package/dist/microinsights/cards/InsightCard.d.ts +0 -2
  94. package/dist/microinsights/cards/ViewMoreMicroCard.d.ts +2 -5
  95. package/dist/microinsights/index.d.ts +2 -2
  96. package/dist/microinsights/index.es.js +824 -14
  97. package/dist/networth/components/NetWorthChart.d.ts +3 -2
  98. package/dist/networth/components/NetWorthList.d.ts +3 -3
  99. package/dist/networth/index.es.js +433 -438
  100. package/dist/networth/stores/NetWorthStore.d.ts +20 -9
  101. package/dist/networth/utils/NetWorthUtils.d.ts +2 -2
  102. package/dist/notifications/index.es.js +5 -5
  103. package/dist/recurringtransactions/index.es.js +331 -325
  104. package/dist/settings/index.es.js +293 -285
  105. package/dist/spending/components/SpendingChart.d.ts +1 -1
  106. package/dist/spending/components/SpendingList.d.ts +1 -1
  107. package/dist/spending/components/SpendingTabLabel.d.ts +1 -0
  108. package/dist/spending/index.es.js +250 -235
  109. package/dist/transactions/index.es.js +288 -281
  110. package/dist/transactions/stores/TransactionStore.d.ts +5 -0
  111. package/dist/trends/components/TrendsTable.d.ts +0 -2
  112. package/dist/trends/index.es.js +876 -802
  113. package/dist/trends/utils/TrendsData.d.ts +1 -0
  114. package/dist/trends/utils/TrendsTable.d.ts +12 -0
  115. package/dist/{useAccountDisplayName-usSZCQ7I.mjs → useAccountDisplayName-DbkgGLdg.mjs} +2 -2
  116. package/dist/useAriaLive-B3_pRUio.mjs +35 -0
  117. package/dist/{useInsightsEnabled-CNjP5cfR.mjs → useInsightsEnabled-dhmXeSyF.mjs} +1 -1
  118. package/dist/useWidgetLoadTimer-CrUzxN-P.mjs +19 -0
  119. package/package.json +26 -21
  120. package/dist/AccountDetailsContent-C1HumFnW.mjs +0 -683
  121. package/dist/AccountDetailsHeader-NMx79DGs.mjs +0 -87
  122. package/dist/CategorySelectorDrawer-DqDAA_5I.mjs +0 -399
  123. package/dist/CategoryStore-MUwRWH9e.mjs +0 -176
  124. package/dist/ConnectDrawer-Dn1MlqLz.mjs +0 -545
  125. package/dist/Drawer-Dqe5EqvA.mjs +0 -163
  126. package/dist/LineChart-bc1D9xBE.mjs +0 -581
  127. package/dist/NetWorthStore-8FFC1Bs0.mjs +0 -150
  128. package/dist/NotificationSettings-BsWiYD94.mjs +0 -672
  129. package/dist/SpendingData-DPQ96k3x.mjs +0 -55
  130. package/dist/SpendingLegend-CZzDb-7d.mjs +0 -193
  131. package/dist/TransactionDetails-Duv1X9ec.mjs +0 -1379
  132. package/dist/TrendsStore-_mRaFUdf.mjs +0 -182
  133. package/dist/ViewMoreMicroCard-CH9E-jOx.mjs +0 -1930
  134. package/dist/WidgetContainer-B1Jzb4XA.mjs +0 -565
  135. package/dist/common/components/accountfilter/AccountFilter.d.ts +0 -20
  136. package/dist/common/components/accountfilter/AccountFilterOptions.d.ts +0 -31
  137. package/dist/common/components/accountfilter/index.d.ts +0 -1
  138. package/dist/microinsights/cards/BaseCard.d.ts +0 -13
  139. package/dist/{ToggleListItem-ciFTiqRS.mjs → Notification-Bs1fdbzI.mjs} +1 -1
@@ -5,35 +5,35 @@ import M from "@mui/material/Box";
5
5
  import T from "@mui/material/Divider";
6
6
  import K from "@mui/material/List";
7
7
  import h from "@mui/material/Stack";
8
- import { MerchantLogo as H, Text as S, H1 as oe, InstitutionLogo as ae, P as U } from "@mxenabled/mxui";
9
- import ie from "@mui/material/ListItem";
10
- import se from "@mui/material/ListItemAvatar";
11
- import ce from "@mui/material/ListItemButton";
12
- import le from "@mui/material/ListItemText";
13
- import { F as d, S as N, D as Y, g as Q, R, e as de } from "./RecurringTransactions-Bhx56aA3.mjs";
14
- import { subDays as _e } from "date-fns/subDays";
8
+ import { MerchantLogo as H, Text as S, P as F, InstitutionLogo as oe } from "@mxenabled/mxui";
9
+ import ae from "@mui/material/ListItem";
10
+ import ie from "@mui/material/ListItemAvatar";
11
+ import se from "@mui/material/ListItemButton";
12
+ import ce from "@mui/material/ListItemText";
13
+ import { F as d, S as N, D as Y, g as Q, R, e as le } from "./RepeatingTransaction-C2txVA9O.mjs";
14
+ import { subDays as de } from "date-fns/subDays";
15
15
  import { startOfToday as z } from "date-fns/startOfToday";
16
- import { endOfMonth as ue } from "date-fns/endOfMonth";
17
- import { parseISO as me } from "date-fns/parseISO";
16
+ import { endOfMonth as _e } from "date-fns/endOfMonth";
17
+ import { parseISO as ue } from "date-fns/parseISO";
18
18
  import $ from "@mui/material/Button";
19
- import { Delete as pe, Add as he, ReceiptLong as ye } from "@mxenabled/mx-icons";
20
- import { T as X, a as ge, b as fe, S as Ce, c as be } from "./TransactionDetails-Duv1X9ec.mjs";
21
- import { getDayOfYear as xe } from "date-fns/getDayOfYear";
22
- import { setDayOfYear as Se } from "date-fns/setDayOfYear";
23
- import { AdapterDateFns as ve } from "@mui/x-date-pickers/AdapterDateFnsV3";
24
- import { DatePicker as we } from "@mui/x-date-pickers";
25
- import { LocalizationProvider as Ae } from "@mui/x-date-pickers/LocalizationProvider";
26
- import { u as w, j as F, g as G, b as Ie, h as Z, p as De } from "./hooks-C41HAxM5.mjs";
27
- import { b as Re, f as J } from "./NumberFormatting-DjTD0t3W.mjs";
28
- import { D as O } from "./Drawer-Dqe5EqvA.mjs";
29
- import { A as E } from "./WidgetContainer-B1Jzb4XA.mjs";
30
- import { f as Ee, a as Te, D as Le } from "./Dialog-CDV0kKxj.mjs";
31
- import { formatISO as Oe } from "date-fns/formatISO";
32
- import { fromUnixTime as ke } from "date-fns/fromUnixTime";
33
- import { S as Ne } from "./SearchBox-B2_zLv8-.mjs";
34
- import { h as Me } from "./DateUtil-CDPZw_-m.mjs";
19
+ import { Delete as me, Add as pe, ReceiptLong as he } from "@mxenabled/mx-icons";
20
+ import { T as X, a as ye, u as ge, S as fe, b as Ce } from "./TransactionDetails-CPwv9xtZ.mjs";
21
+ import { getDayOfYear as be } from "date-fns/getDayOfYear";
22
+ import { setDayOfYear as xe } from "date-fns/setDayOfYear";
23
+ import { AdapterDateFns as Se } from "@mui/x-date-pickers/AdapterDateFnsV3";
24
+ import { DatePicker as ve } from "@mui/x-date-pickers";
25
+ import { LocalizationProvider as we } from "@mui/x-date-pickers/LocalizationProvider";
26
+ import { u as w, j as G, g as P, b as Ae, h as Z, o as Ie } from "./hooks-fY_n74f7.mjs";
27
+ import { b as De, f as J } from "./NumberFormatting-DjTD0t3W.mjs";
28
+ import { D as O } from "./Drawer-Bet2ZPJo.mjs";
29
+ import { A as E } from "./WidgetContainer-mzejMmz2.mjs";
30
+ import { f as Re, D as Ee, a as Te } from "./Dialog-CWymUiuO.mjs";
31
+ import { formatISO as Le } from "date-fns/formatISO";
32
+ import { fromUnixTime as Oe } from "date-fns/fromUnixTime";
33
+ import { S as ke } from "./SearchBox-B2_zLv8-.mjs";
34
+ import { h as Ne } from "./DateUtil-CVsMhbZU.mjs";
35
35
  import { b as B } from "./Category-Ccoew_sA.mjs";
36
- import { T as V } from "./User-DqNX2GAK.mjs";
36
+ import { T as V } from "./User-CulNdZUr.mjs";
37
37
  const ee = ({
38
38
  frequency: n,
39
39
  firstDay: t,
@@ -64,11 +64,11 @@ const ee = ({
64
64
  { id: 6, label: r.weekday_saturday }
65
65
  ], y = [...Array(31).keys()].map((p) => ({
66
66
  id: p + 1,
67
- label: Re(p + 1)
67
+ label: De(p + 1)
68
68
  }));
69
69
  y[30].label += ` (${r.last_day_of_month})`;
70
- const C = y.slice(0, 15), v = y.slice(14), b = n === d.EveryWeek || n === d.EveryOtherWeek, g = n === d.TwiceAMonth || n === d.EveryMonth || n === d.EveryOtherMonth || n === d.EveryQuarter || n === d.EveryOtherQuarter, I = Se(z(), t), f = (p) => {
71
- p && s(xe(p));
70
+ const C = y.slice(0, 15), v = y.slice(14), b = n === d.EveryWeek || n === d.EveryOtherWeek, g = n === d.TwiceAMonth || n === d.EveryMonth || n === d.EveryOtherMonth || n === d.EveryQuarter || n === d.EveryOtherQuarter, I = xe(z(), t), f = (p) => {
71
+ p && s(be(p));
72
72
  };
73
73
  return /* @__PURE__ */ c(h, { gap: 24, sx: { m: 24 }, children: [
74
74
  /* @__PURE__ */ e(
@@ -107,8 +107,8 @@ const ee = ({
107
107
  value: o || 0
108
108
  }
109
109
  ),
110
- n === d.EveryYear && /* @__PURE__ */ e(Ae, { dateAdapter: ve, children: /* @__PURE__ */ e(
111
- we,
110
+ n === d.EveryYear && /* @__PURE__ */ e(we, { dateAdapter: Se, children: /* @__PURE__ */ e(
111
+ ve,
112
112
  {
113
113
  disablePast: !0,
114
114
  label: r.next_payment_date,
@@ -117,8 +117,8 @@ const ee = ({
117
117
  }
118
118
  ) })
119
119
  ] });
120
- }, Fe = A(({ repeatingTransaction: n }) => {
121
- const { recurring: t } = w(), { updateRepeatingTransaction: o } = F(), { onEvent: i } = G(), [s, l] = _.useState(!1), [r, a] = _.useState(n.recurrence_type), [m, y] = _.useState(n.recurrence_day), [C, v] = _.useState(n.second_recurrence_day), b = async () => {
120
+ }, Me = A(({ repeatingTransaction: n }) => {
121
+ const { recurring: t } = w(), { updateRepeatingTransaction: o } = G(), { onEvent: i } = P(), [s, l] = _.useState(!1), [r, a] = _.useState(n.recurrence_type), [m, y] = _.useState(n.recurrence_day), [C, v] = _.useState(n.second_recurrence_day), b = async () => {
122
122
  await o({
123
123
  ...n,
124
124
  recurrence_type: r,
@@ -160,13 +160,13 @@ const ee = ({
160
160
  }
161
161
  )
162
162
  ] });
163
- }), Ge = A(
163
+ }), Fe = A(
164
164
  ({ onDeleted: n, recurringTransaction: t }) => {
165
- const { recurring: o } = w(), { selectedAccountGuids: i } = Ie(), { onEvent: s } = G(), { deleteRepeatingTransaction: l } = F(), { setFilter: r, transactions: a } = Z(), { amount: m, description: y, merchant_guid: C } = t, [v, b] = _.useState(!1), [g, I] = _.useState("");
165
+ const { recurring: o } = w(), { selectedAccountGuids: i } = Ae(), { onEvent: s } = P(), { deleteRepeatingTransaction: l } = G(), { setFilter: r, transactions: a } = Z(), { amount: m, description: y, merchant_guid: C } = t, [v, b] = _.useState(!1), [g, I] = _.useState("");
166
166
  _.useEffect(() => {
167
167
  r({
168
168
  accounts: i,
169
- dateRange: { start: _e(z(), 90), end: ue(z()) },
169
+ dateRange: { start: de(z(), 90), end: _e(z()) },
170
170
  custom: (u) => u.repeating_transaction_guid === t.guid
171
171
  });
172
172
  }, [t]);
@@ -175,7 +175,7 @@ const ee = ({
175
175
  [g, a]
176
176
  ), p = t.repeating_transaction_type === R.Income, k = async () => {
177
177
  await l(t.guid), n();
178
- }, P = () => {
178
+ }, U = () => {
179
179
  b(!0), s(E.RECURRING_TRANSACTIONS_DETAILS_CLICK_DELETE);
180
180
  };
181
181
  return /* @__PURE__ */ c(h, { bgcolor: "background.default", direction: "column", height: "100%", children: [
@@ -190,13 +190,13 @@ const ee = ({
190
190
  }
191
191
  ),
192
192
  /* @__PURE__ */ e(S, { bold: !0, variant: "body1", children: y }),
193
- /* @__PURE__ */ c(oe, { color: p ? "success.main" : "text.primary", sx: { my: 4 }, children: [
193
+ /* @__PURE__ */ c(F, { color: p ? "success.main" : "text.primary", sx: { my: 4 }, variant: "H1", children: [
194
194
  p ? "+" : "",
195
195
  J(m, "0,0.00")
196
196
  ] }),
197
- /* @__PURE__ */ e(S, { color: "text.secondary", variant: "body2", children: `${o.next_payment_date}: ${Ee(
198
- me(t.predicted_occurs_on),
199
- Te.MONTH_DAY_YEAR
197
+ /* @__PURE__ */ e(S, { color: "text.secondary", variant: "body2", children: `${o.next_payment_date}: ${Re(
198
+ ue(t.predicted_occurs_on),
199
+ Ee.MONTH_DAY_YEAR
200
200
  )}` })
201
201
  ] }),
202
202
  /* @__PURE__ */ c(K, { sx: { bgcolor: "background.paper" }, children: [
@@ -222,15 +222,15 @@ const ee = ({
222
222
  ),
223
223
  /* @__PURE__ */ e(T, { variant: "inset" })
224
224
  ] }),
225
- /* @__PURE__ */ e(Fe, { repeatingTransaction: t }),
225
+ /* @__PURE__ */ e(Me, { repeatingTransaction: t }),
226
226
  /* @__PURE__ */ e(T, {})
227
227
  ] }),
228
228
  /* @__PURE__ */ e(
229
229
  $,
230
230
  {
231
231
  color: "error",
232
- onClick: P,
233
- startIcon: /* @__PURE__ */ e(pe, {}),
232
+ onClick: U,
233
+ startIcon: /* @__PURE__ */ e(me, {}),
234
234
  sx: { mx: 24, my: 16 },
235
235
  variant: "text",
236
236
  children: p ? o.delete_income_title : o.delete_expense_title
@@ -245,11 +245,11 @@ const ee = ({
245
245
  isOpen: !!g && !!f,
246
246
  onClose: () => I(""),
247
247
  title: o.transaction_details_drawer_title,
248
- children: f && /* @__PURE__ */ e(ge, { transaction: f })
248
+ children: f && /* @__PURE__ */ e(ye, { transaction: f })
249
249
  }
250
250
  ),
251
251
  /* @__PURE__ */ e(
252
- Le,
252
+ Te,
253
253
  {
254
254
  copy: {
255
255
  title: p ? o.delete_income_title : o.delete_expense_title,
@@ -263,30 +263,30 @@ const ee = ({
263
263
  )
264
264
  ] });
265
265
  }
266
- ), Pe = A(
266
+ ), Ge = A(
267
267
  ({ onClick: n = () => {
268
268
  }, repeatingTransaction: t }) => {
269
269
  const { recurring: o } = w(), [i, s] = _.useState(!1), l = _.useMemo(
270
270
  () => t.transactions.length === 0 ? "" : t.transactions[0].category_guid || "",
271
271
  [t]
272
272
  ), r = t.account?.displayName || "", a = t.repeating_transaction_type === R.Income, m = Q(o, t, !0);
273
- return /* @__PURE__ */ c(ie, { disableGutters: !0, disablePadding: !0, children: [
274
- /* @__PURE__ */ c(ce, { onClick: () => {
273
+ return /* @__PURE__ */ c(ae, { disableGutters: !0, disablePadding: !0, children: [
274
+ /* @__PURE__ */ c(se, { onClick: () => {
275
275
  n(t), s(!0);
276
276
  }, children: [
277
- /* @__PURE__ */ e(se, { children: /* @__PURE__ */ e(
277
+ /* @__PURE__ */ e(ie, { children: /* @__PURE__ */ e(
278
278
  H,
279
279
  {
280
280
  categoryGuid: l,
281
281
  merchantGuid: t.merchant_guid
282
282
  }
283
283
  ) }),
284
- /* @__PURE__ */ e(le, { children: /* @__PURE__ */ c(h, { direction: "row", gap: 4, sx: { justifyContent: "space-between" }, children: [
284
+ /* @__PURE__ */ e(ce, { children: /* @__PURE__ */ c(h, { direction: "row", gap: 4, sx: { justifyContent: "space-between" }, children: [
285
285
  /* @__PURE__ */ c(h, { direction: "column", sx: { width: "50%" }, children: [
286
286
  /* @__PURE__ */ e(S, { bold: !0, variant: "body1", children: t.description }),
287
287
  /* @__PURE__ */ c(h, { alignItems: "center", direction: "row", gap: 6, children: [
288
288
  t.account?.institution_guid && /* @__PURE__ */ e(
289
- ae,
289
+ oe,
290
290
  {
291
291
  alt: r,
292
292
  institutionGuid: t.account?.institution_guid,
@@ -334,7 +334,7 @@ const ee = ({
334
334
  onClose: () => s(!1),
335
335
  title: t.repeating_transaction_type === R.Income ? o.income_details : o.expense_details,
336
336
  children: /* @__PURE__ */ e(
337
- Ge,
337
+ Fe,
338
338
  {
339
339
  onDeleted: () => s(!1),
340
340
  recurringTransaction: t
@@ -344,18 +344,18 @@ const ee = ({
344
344
  )
345
345
  ] });
346
346
  }
347
- ), Ue = A(
347
+ ), Pe = A(
348
348
  ({
349
349
  bgcolor: n = "background.default",
350
350
  description: t,
351
351
  onSearch: o,
352
352
  onSelected: i
353
353
  }) => {
354
- const { recurring: s } = w(), { searchValue: l, setSearchValue: r } = fe();
354
+ const { recurring: s } = w(), { searchValue: l, setSearchValue: r } = ge();
355
355
  return /* @__PURE__ */ c(h, { sx: { bgcolor: n, gap: 16, pt: 8 }, children: [
356
- t && /* @__PURE__ */ e(U, { sx: { mx: 24 }, children: t }),
356
+ t && /* @__PURE__ */ e(F, { sx: { mx: 24 }, children: t }),
357
357
  /* @__PURE__ */ e(
358
- Ne,
358
+ ke,
359
359
  {
360
360
  ariaLabel: s.select_transaction_search_aria,
361
361
  cancelAriaLabel: s.select_transaction_search_cancel_aria,
@@ -378,7 +378,7 @@ const ee = ({
378
378
  )
379
379
  ] });
380
380
  }
381
- ), Ye = A(
381
+ ), Ue = A(
382
382
  ({
383
383
  bgcolor: n = "background.default",
384
384
  firstDay: t,
@@ -392,8 +392,8 @@ const ee = ({
392
392
  const { recurring: m } = w();
393
393
  return /* @__PURE__ */ c(h, { bgcolor: n, gap: 24, height: "100%", children: [
394
394
  /* @__PURE__ */ c(h, { children: [
395
- /* @__PURE__ */ e(Ce, { bgcolor: n, children: Me(a.date) }),
396
- /* @__PURE__ */ e(be, { transaction: a })
395
+ /* @__PURE__ */ e(fe, { bgcolor: n, children: Ne(a.date) }),
396
+ /* @__PURE__ */ e(Ce, { transaction: a })
397
397
  ] }),
398
398
  /* @__PURE__ */ c(M, { children: [
399
399
  /* @__PURE__ */ e(S, { bold: !0, sx: { mx: 24 }, variant: "Body", children: m.payment_schedule }),
@@ -411,13 +411,13 @@ const ee = ({
411
411
  ] })
412
412
  ] });
413
413
  }
414
- ), q = (n) => n.top_level_category_guid !== B.INCOME && n.transaction_type === V.DEBIT, ze = (n, t) => q(n) ? n.payee?.toLowerCase().includes(t.toLowerCase()) || n.description.toLowerCase().includes(t.toLowerCase()) || n.feed_description.toLowerCase().includes(t.toLowerCase()) : !1, W = (n) => n.top_level_category_guid === B.INCOME || n.top_level_category_guid === B.TRANSFER && n.transaction_type === V.CREDIT, Be = (n, t) => W(n) ? n.payee?.toLowerCase().includes(t.toLowerCase()) || n.description?.toLowerCase().includes(t.toLowerCase()) || n.feed_description?.toLowerCase().includes(t.toLowerCase()) : !1, te = A(
414
+ ), q = (n) => n.top_level_category_guid !== B.INCOME && n.transaction_type === V.DEBIT, Ye = (n, t) => q(n) ? n.payee?.toLowerCase().includes(t.toLowerCase()) || n.description.toLowerCase().includes(t.toLowerCase()) || n.feed_description.toLowerCase().includes(t.toLowerCase()) : !1, W = (n) => n.top_level_category_guid === B.INCOME || n.top_level_category_guid === B.TRANSFER && n.transaction_type === V.CREDIT, ze = (n, t) => W(n) ? n.payee?.toLowerCase().includes(t.toLowerCase()) || n.description?.toLowerCase().includes(t.toLowerCase()) || n.feed_description?.toLowerCase().includes(t.toLowerCase()) : !1, te = A(
415
415
  ({
416
416
  isIncome: n = !1,
417
417
  label: t,
418
418
  onAddRecurringTransaction: o = () => null
419
419
  }) => {
420
- const { recurring: i } = w(), { filter: s, setFilter: l, transactions: r } = Z(), { addRepeatingTransaction: a } = F(), { user: m } = De(), [y, C] = _.useState(!1), [v, b] = _.useState(""), [g, I] = _.useState(d.EveryMonth), [f, p] = _.useState(1), [k, P] = _.useState(15), u = _.useMemo(
420
+ const { recurring: i } = w(), { filter: s, setFilter: l, transactions: r } = Z(), { addRepeatingTransaction: a } = G(), { user: m } = Ie(), [y, C] = _.useState(!1), [v, b] = _.useState(""), [g, I] = _.useState(d.EveryMonth), [f, p] = _.useState(1), [k, U] = _.useState(15), u = _.useMemo(
421
421
  () => r.find((x) => x.guid === v),
422
422
  [v, r]
423
423
  ), ne = () => {
@@ -428,14 +428,14 @@ const ee = ({
428
428
  return;
429
429
  }
430
430
  o();
431
- const x = de(g, ke(u.date)), D = {
431
+ const x = le(g, Oe(u.date)), D = {
432
432
  account_guid: u.account_guid,
433
433
  amount: u.amount,
434
434
  created_by: 0,
435
435
  // User
436
436
  merchant_guid: u.merchant_guid,
437
437
  description: u.payee || u.description || u.feed_description,
438
- predicted_occurs_on: Oe(x, { representation: "date" }),
438
+ predicted_occurs_on: Le(x, { representation: "date" }),
439
439
  recurrence_day: f,
440
440
  recurrence_type: g,
441
441
  repeating_transaction_type: n ? R.Income : R.Bill,
@@ -448,7 +448,7 @@ const ee = ({
448
448
  b(""), C(!1);
449
449
  };
450
450
  return /* @__PURE__ */ c(L, { children: [
451
- /* @__PURE__ */ e($, { onClick: ne, startIcon: /* @__PURE__ */ e(he, { size: 24 }), variant: "contained", children: t }),
451
+ /* @__PURE__ */ e($, { onClick: ne, startIcon: /* @__PURE__ */ e(pe, { size: 24 }), variant: "contained", children: t }),
452
452
  /* @__PURE__ */ e(
453
453
  O,
454
454
  {
@@ -457,13 +457,13 @@ const ee = ({
457
457
  onClose: () => C(!1),
458
458
  title: t,
459
459
  children: /* @__PURE__ */ e(
460
- Ue,
460
+ Pe,
461
461
  {
462
462
  description: n ? i.add_income_description : i.add_expense_description,
463
463
  onSearch: (x) => {
464
464
  l({
465
465
  ...s,
466
- custom: (D) => n ? x ? Be(D, x) : W(D) : x ? ze(D, x) : q(D)
466
+ custom: (D) => n ? x ? ze(D, x) : W(D) : x ? Ye(D, x) : q(D)
467
467
  });
468
468
  },
469
469
  onSelected: (x) => b(x)
@@ -480,13 +480,13 @@ const ee = ({
480
480
  onPrimaryAction: re,
481
481
  title: n ? i.income_details : i.expense_details,
482
482
  children: u && /* @__PURE__ */ e(
483
- Ye,
483
+ Ue,
484
484
  {
485
485
  firstDay: f,
486
486
  frequency: g,
487
487
  onFirstDayChange: p,
488
488
  onFrequencyChange: I,
489
- onSecondDayChange: P,
489
+ onSecondDayChange: U,
490
490
  secondDay: k,
491
491
  transaction: u
492
492
  }
@@ -495,13 +495,13 @@ const ee = ({
495
495
  )
496
496
  ] });
497
497
  }
498
- ), qe = A(
498
+ ), Be = A(
499
499
  ({ zeroStateFor: n }) => {
500
- const { recurring: t } = w(), { onEvent: o } = G(), i = n === "income", s = i ? t.recurring_setting_zero_state_income_title : t.recurring_setting_zero_state_expenses_title, l = i ? t.recurring_setting_zero_state_income_description : t.recurring_setting_zero_state_expenses_description, r = i ? t.add_income : t.add_expense;
500
+ const { recurring: t } = w(), { onEvent: o } = P(), i = n === "income", s = i ? t.recurring_setting_zero_state_income_title : t.recurring_setting_zero_state_expenses_title, l = i ? t.recurring_setting_zero_state_income_description : t.recurring_setting_zero_state_expenses_description, r = i ? t.add_income : t.add_expense;
501
501
  return /* @__PURE__ */ c(h, { sx: { alignItems: "center", p: 24, pt: 48 }, children: [
502
- /* @__PURE__ */ e(ye, { size: 48 }),
503
- /* @__PURE__ */ e(U, { sx: { my: 8, fontWeight: 600 }, variant: "body1", children: s }),
504
- /* @__PURE__ */ e(U, { color: "text.secondary", sx: { mb: 32 }, variant: "subtitle2", children: l }),
502
+ /* @__PURE__ */ e(he, { size: 48 }),
503
+ /* @__PURE__ */ e(F, { sx: { my: 8, fontWeight: 600 }, variant: "body1", children: s }),
504
+ /* @__PURE__ */ e(F, { color: "text.secondary", sx: { mb: 32 }, variant: "subtitle2", children: l }),
505
505
  /* @__PURE__ */ e(
506
506
  te,
507
507
  {
@@ -516,8 +516,8 @@ const ee = ({
516
516
  )
517
517
  ] });
518
518
  }
519
- ), It = A(({ forOverview: n = !1 }) => {
520
- const { recurring: t } = w(), { detailedRepeatingTransactions: o } = F(), { onEvent: i } = G(), s = (a) => {
519
+ ), At = A(({ forOverview: n = !1 }) => {
520
+ const { recurring: t } = w(), { detailedRepeatingTransactions: o } = G(), { onEvent: i } = P(), s = (a) => {
521
521
  i(E.RECURRING_TRANSACTIONS_CLICK_INCOME, {
522
522
  repeating_transaction_guid: a.guid
523
523
  });
@@ -536,7 +536,7 @@ const ee = ({
536
536
  children: [
537
537
  n && /* @__PURE__ */ e(S, { bold: !0, sx: { mb: 4, mt: 12, mx: 24 }, variant: "Small", children: t.income }),
538
538
  /* @__PURE__ */ e(M, { sx: { flex: 1, overflow: "auto" }, children: /* @__PURE__ */ e(K, { sx: { bgcolor: "background.paper" }, children: r.map((a, m) => /* @__PURE__ */ c(_.Fragment, { children: [
539
- /* @__PURE__ */ e(Pe, { onClick: s, repeatingTransaction: a }),
539
+ /* @__PURE__ */ e(Ge, { onClick: s, repeatingTransaction: a }),
540
540
  /* @__PURE__ */ e(
541
541
  T,
542
542
  {
@@ -570,16 +570,16 @@ const ee = ({
570
570
  ] })
571
571
  ]
572
572
  }
573
- ) : /* @__PURE__ */ e(qe, { zeroStateFor: "income" }) });
573
+ ) : /* @__PURE__ */ e(Be, { zeroStateFor: "income" }) });
574
574
  });
575
575
  export {
576
576
  te as A,
577
- It as M,
578
- Pe as R,
579
- Ue as S,
580
- qe as a,
581
- Ge as b,
582
- Ye as c,
577
+ At as M,
578
+ Ge as R,
579
+ Pe as S,
580
+ Be as a,
581
+ Fe as b,
582
+ Ue as c,
583
583
  W as d,
584
- Be as i
584
+ ze as i
585
585
  };
@@ -1,4 +1,4 @@
1
- import { jsxs as p, jsx as r, Fragment as f } from "react/jsx-runtime";
1
+ import { jsx as r, jsxs as p, Fragment as f } from "react/jsx-runtime";
2
2
  import x from "@mui/material/Button";
3
3
  import C from "@mui/material/Card";
4
4
  import b from "@mui/material/CardContent";
@@ -6,7 +6,7 @@ import g from "@mui/material/CardHeader";
6
6
  import { H3 as u, P as v } from "@mxenabled/mxui";
7
7
  import { ChevronRight as W } from "@mxenabled/mx-icons";
8
8
  import { u as w } from "./useDimensions-27p2evRx.mjs";
9
- import { W as H } from "./hooks-C41HAxM5.mjs";
9
+ import { W as H } from "./hooks-fY_n74f7.mjs";
10
10
  const D = ({
11
11
  children: i,
12
12
  className: o,
@@ -8,7 +8,7 @@ import z from "@mui/material/IconButton";
8
8
  import { Icon as H, ChevronRight as I } from "@mxenabled/mx-icons";
9
9
  import { H3 as W, Text as B, P as S } from "@mxenabled/mxui";
10
10
  import { u as j } from "./useDimensions-27p2evRx.mjs";
11
- import { W as w } from "./hooks-C41HAxM5.mjs";
11
+ import { W as w } from "./hooks-fY_n74f7.mjs";
12
12
  const G = ({
13
13
  children: m,
14
14
  className: a = "mx-cmn-mini-widget",
@@ -0,0 +1,168 @@
1
+ import { makeAutoObservable as p } from "mobx";
2
+ import { A as m } from "./AccountApi-DgZ8ILj1.mjs";
3
+ import { format as B } from "date-fns/format";
4
+ import { fromUnixTime as W } from "date-fns/fromUnixTime";
5
+ import { startOfMonth as D } from "date-fns/startOfMonth";
6
+ import { subMonths as _ } from "date-fns/subMonths";
7
+ import { a as f } from "./Accounts-CuE8aSZN.mjs";
8
+ import { e as L, f as M, a as v } from "./Account-CMjOp7S2.mjs";
9
+ const A = 13, I = (n, t) => n.filter((e) => {
10
+ const { is_closed: o, is_deleted: s, is_hidden: a, is_manual: c } = e;
11
+ return o || s || a ? !1 : c || !e.guid ? !0 : t.some((l) => n.some((u) => l.guid === u.member_guid));
12
+ }), N = (n, t) => [...n, ...t], g = (n) => {
13
+ if (n && n.length > 0)
14
+ return n[n.length - 1];
15
+ }, S = (n, t) => n.year_month - t.year_month, x = () => Array.from({ length: A }, (n, t) => Math.floor(D(_(/* @__PURE__ */ new Date(), t)).getTime() / 1e3)).sort(), T = (n, t, e) => !n.length || !t.length ? [] : x().reduceRight((s, a) => {
16
+ const c = t.filter(
17
+ ({ year_month: r }) => r === parseInt(B(W(a), "yyyyMM"))
18
+ ), l = n.map((r) => {
19
+ const i = c.find((h) => h.account_guid === r.guid), d = {
20
+ change: 0,
21
+ guid: r.guid,
22
+ name: r.name,
23
+ type: r.account_type,
24
+ balance: 0
25
+ };
26
+ if (!i && s.length === 0 && !r.balance) return d;
27
+ if (!i && s.length === 0)
28
+ return {
29
+ ...d,
30
+ value: f(r) ? -(r.balance ?? 0) : r.balance ?? 0
31
+ };
32
+ if (!i) {
33
+ const h = s[0].accounts.find((b) => b.guid === r.guid);
34
+ return h || d;
35
+ }
36
+ return {
37
+ change: i.transaction_total,
38
+ guid: r.guid,
39
+ name: r.name,
40
+ type: r.account_type,
41
+ value: i.balance
42
+ };
43
+ }), { y: u, change: y } = l.reduce(
44
+ (r, i) => ({
45
+ y: r.y + (i.value || 0),
46
+ change: r.change + (i.change || 0)
47
+ }),
48
+ { y: 0, change: 0 }
49
+ );
50
+ return [
51
+ {
52
+ accounts: l,
53
+ x: a,
54
+ y: u,
55
+ change: y
56
+ },
57
+ ...s
58
+ ];
59
+ }, []).slice(A - e), C = (n) => {
60
+ const t = [], e = [];
61
+ let o = 0, s = 0;
62
+ return n?.accounts.forEach((a) => {
63
+ a.change > 0 && (t.push({ accountName: a.name, gain: a.change }), o += a.change), a.change < 0 && (e.push({ accountName: a.name, loss: a.change }), s += a.change);
64
+ }), { netWorth: n, gains: t, losses: e, totalGains: o, totalLosses: s };
65
+ }, w = (n) => {
66
+ const t = [], e = [];
67
+ let o = 0, s = 0;
68
+ return n.forEach((a) => {
69
+ if (f(a)) {
70
+ const c = a.balance ?? 0;
71
+ e.push({ accountName: a.name, accountType: a.account_type, balance: c }), s += c;
72
+ } else {
73
+ const c = a.balance ?? 0;
74
+ t.push({ accountName: a.name, accountType: a.account_type, balance: c }), o += c;
75
+ }
76
+ }), { assets: t, liabilities: e, totalAssets: o, totalLiabilities: s };
77
+ }, z = (n) => {
78
+ const t = n.reduce((e, o) => {
79
+ const s = o.accountType;
80
+ return e[s] || (e[s] = []), e[s].push(o), e;
81
+ }, {});
82
+ return Object.entries(t).map(([e, o]) => ({
83
+ icon: M[+e] || v[+e],
84
+ name: L[+e],
85
+ accounts: o
86
+ }));
87
+ };
88
+ class P {
89
+ globalStore;
90
+ accountsApi = new m("/", "");
91
+ monthlyAccountBalances = [];
92
+ monthlyAccountBalancesLoaded = !1;
93
+ hoveredIndex = -1;
94
+ selectedIndex = -1;
95
+ timeframe = 6;
96
+ // default timeframe is 6 months
97
+ constructor(t) {
98
+ this.globalStore = t, this.accountsApi = new m(
99
+ t.endpoint,
100
+ t.sessionToken,
101
+ t.onError
102
+ ), p(this);
103
+ }
104
+ get isNetWorthDataLoaded() {
105
+ return this.globalStore.accountStore.isAccountDataLoaded && this.monthlyAccountBalancesLoaded;
106
+ }
107
+ get netWorthAccounts() {
108
+ return I(
109
+ this.globalStore.globalUiStore.selectedAccounts,
110
+ this.globalStore.accountStore.members
111
+ );
112
+ }
113
+ get netWorthData() {
114
+ return {
115
+ accounts: this.netWorthAccounts,
116
+ monthlyAccountBalances: this.monthlyAccountBalances
117
+ };
118
+ }
119
+ get netWorthChartData() {
120
+ return T(this.netWorthAccounts, this.monthlyAccountBalances, this.timeframe);
121
+ }
122
+ get selectedData() {
123
+ if (!(!this.netWorthChartData || this.netWorthChartData.length === 0))
124
+ return this.selectedIndex === -1 ? g(this.netWorthChartData) : this.netWorthChartData[this.selectedIndex];
125
+ }
126
+ get hoveredData() {
127
+ return this.hoveredIndex >= 0 ? this.netWorthChartData[this.hoveredIndex] : void 0;
128
+ }
129
+ get gainsLosses() {
130
+ return C(this.selectedData);
131
+ }
132
+ get assetsLiabilities() {
133
+ const { assets: t, liabilities: e, totalAssets: o, totalLiabilities: s } = w(
134
+ this.netWorthData.accounts
135
+ );
136
+ return {
137
+ netWorth: g(this.netWorthChartData),
138
+ assets: t,
139
+ liabilities: e,
140
+ totalAssets: o,
141
+ totalLiabilities: s
142
+ };
143
+ }
144
+ loadNetWorthData = async () => {
145
+ this.globalStore.accountStore.isAccountDataLoaded || await this.globalStore.accountStore.loadAccountData();
146
+ const e = (await Promise.all(
147
+ this.netWorthAccounts.map((o) => this.getMonthlyAccountBalances(o.guid))
148
+ )).reduce(N, []).sort(S);
149
+ this.setMonthlyAccountBalances(e);
150
+ };
151
+ getMonthlyAccountBalances = async (t) => {
152
+ try {
153
+ return await this.accountsApi.getMonthlyAccountBalances(t);
154
+ } catch (e) {
155
+ return console.error(`Error occured while fetching monthly account balances: ${e}`), [];
156
+ }
157
+ };
158
+ setHoveredIndex = (t) => this.hoveredIndex = t;
159
+ setMonthlyAccountBalances = (t) => {
160
+ this.monthlyAccountBalances = t, this.monthlyAccountBalancesLoaded = !0;
161
+ };
162
+ setSelectedIndex = (t) => this.selectedIndex = t;
163
+ setTimeframe = (t) => this.timeframe = t;
164
+ }
165
+ export {
166
+ P as N,
167
+ z as g
168
+ };