@mx-cartographer/experiences 7.10.30 → 7.10.32

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 (33) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{BudgetUtil-DKNyjCWc.mjs → BudgetUtil-CHDuDNhl.mjs} +69 -71
  3. package/dist/{ExportCsvAction-8uWKc_e2.mjs → ExportCsvAction-BqNTIBjm.mjs} +2 -2
  4. package/dist/{ManageIncome-BtOMmeKb.mjs → ManageIncome-CWQoWlbs.mjs} +3 -3
  5. package/dist/{RecurringSettings-DOgdSycO.mjs → RecurringSettings-BapZfEnY.mjs} +1 -1
  6. package/dist/StatusIndicator-0iX3Gnnu.mjs +55 -0
  7. package/dist/{Transaction-RmKYEKSk.mjs → Transaction-BiOMLCAA.mjs} +4 -3
  8. package/dist/TransactionDetails-c7ncR7HI.mjs +1172 -0
  9. package/dist/{TransactionList-Dxi733-M.mjs → TransactionList-CmZSDhKW.mjs} +1 -1
  10. package/dist/{TransactionStore-B-fc3CsB.mjs → TransactionStore-DoBXsvqm.mjs} +2 -2
  11. package/dist/accounts/index.es.js +2 -2
  12. package/dist/budgets/components/BudgetDetailsDrawerV2.d.ts +2 -1
  13. package/dist/budgets/index.es.js +759 -740
  14. package/dist/cashflow/index.es.js +3 -3
  15. package/dist/common/components/CurrencyDialog.d.ts +1 -1
  16. package/dist/common/index.es.js +6 -6
  17. package/dist/common/types/localization/BudgetsCopy.d.ts +1 -0
  18. package/dist/{exportTransactionsToCSV-RUWymyA3.mjs → exportTransactionsToCSV-YO3xewit.mjs} +1 -1
  19. package/dist/finstrong/index.es.js +3 -3
  20. package/dist/insights/components/insights/CategorySpendingV2/types/CategorySpendingV2.d.ts +1 -0
  21. package/dist/insights/components/shared/ChartDrawerTemplate/ChartDrawerTemplate.d.ts +2 -1
  22. package/dist/insights/components/shared/ChartTransactionWithDrillDown.d.ts +2 -1
  23. package/dist/insights/components/shared/StatusIndicator.d.ts +1 -1
  24. package/dist/insights/index.es.js +698 -690
  25. package/dist/recurringtransactions/index.es.js +4 -4
  26. package/dist/spending/index.es.js +3 -3
  27. package/dist/transactions/components/shared/transactiondetails/actions/AddMerchantBudgetAction.d.ts +6 -0
  28. package/dist/transactions/constants/Actions.d.ts +4 -3
  29. package/dist/transactions/index.es.js +10 -10
  30. package/dist/trends/index.es.js +3 -3
  31. package/package.json +1 -1
  32. package/dist/StatusIndicator-yCwjN_ky.mjs +0 -55
  33. package/dist/TransactionDetails-BYKl7pix.mjs +0 -1158
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [7.10.32] - 02-24-2026
2
+
3
+ - **UPDATED** - Added Merchant Budget List Item in the transcation Details and a small tweak in the color to use 'text.primary' as per FIGMA
4
+
5
+ ## [7.10.31] - 02-24-2026
6
+
7
+ - **UPDATED** - `Insights` drilldown layout
8
+
1
9
  ## [7.10.30] - 02-23-2026
2
10
 
3
11
  - **UPDATED** - Use `recentNotifications` instead of `newNotifications` in `NotificationList`
@@ -1,54 +1,54 @@
1
1
  import { jsx as c, jsxs as f } from "react/jsx-runtime";
2
2
  import { Icon as w } from "@mxenabled/mx-icons";
3
3
  import { H3 as M, P as S } from "@mxenabled/mxui";
4
- import C from "@mui/material/Button";
4
+ import y from "@mui/material/Button";
5
5
  import j from "@mui/material/Dialog";
6
- import F from "@mui/material/DialogActions";
6
+ import N from "@mui/material/DialogActions";
7
7
  import P from "@mui/material/DialogContent";
8
8
  import A from "@mui/material/IconButton";
9
- import G from "@mui/material/InputAdornment";
10
- import _ from "@mui/material/Stack";
11
- import $ from "@mui/material/TextField";
12
- import { k as E } from "./hooks-DWJQ4phS.mjs";
13
- import { b as B } from "./Category-CevNQ03n.mjs";
14
- import { b as x } from "./Localization-2MODESHW.mjs";
15
- import { f as h } from "./NumberFormatting-DjTD0t3W.mjs";
16
- const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.guid === e), O = (o, e) => {
17
- const t = o.find((r) => r.subCategories.find((a) => a.guid === e));
9
+ import F from "@mui/material/InputAdornment";
10
+ import C from "@mui/material/Stack";
11
+ import G from "@mui/material/TextField";
12
+ import { k as $ } from "./hooks-DWJQ4phS.mjs";
13
+ import { b as _ } from "./Category-CevNQ03n.mjs";
14
+ import { b as B } from "./Localization-2MODESHW.mjs";
15
+ import { f as x } from "./NumberFormatting-DjTD0t3W.mjs";
16
+ const h = (o, e) => o.find((t) => t.guid === e), E = (o, e) => o.find((t) => t.guid === e), H = (o, e) => {
17
+ const t = o.find((r) => r.subCategories.find((i) => i.guid === e));
18
18
  if (t)
19
19
  return t.subCategories.find((r) => r.guid === e);
20
- }, rt = (o, e) => {
20
+ }, ot = (o, e) => {
21
21
  const t = [];
22
22
  for (const r of e) {
23
- const a = D(o, r.category_guid);
24
- if (!a) continue;
25
- const n = a.parent_guid ?? a.guid, i = D(o, n);
23
+ const i = h(o, r.category_guid);
26
24
  if (!i) continue;
25
+ const n = i.parent_guid ?? i.guid, a = h(o, n);
26
+ if (!a) continue;
27
27
  const s = {
28
28
  amount: r.total,
29
- category: a,
30
- guid: a.guid,
29
+ category: i,
30
+ guid: i.guid,
31
31
  subCategoryTotals: []
32
32
  }, u = t.find((d) => d.guid === n);
33
33
  u ? (u.amount += r.total, u.subCategoryTotals.push(s)) : t.push({
34
34
  amount: r.total,
35
- category: i,
35
+ category: a,
36
36
  guid: n,
37
37
  subCategoryTotals: [s]
38
38
  });
39
39
  }
40
40
  return t;
41
- }, nt = (o, e) => {
41
+ }, rt = (o, e) => {
42
42
  const t = o.find((r) => r.guid === e);
43
- return t ? t.guid === B.INCOME || t.parent_guid === B.INCOME : !1;
44
- }, R = ({
43
+ return t ? t.guid === _.INCOME || t.parent_guid === _.INCOME : !1;
44
+ }, O = ({
45
45
  closeAriaLabel: o,
46
46
  content: e,
47
47
  inputLabel: t,
48
48
  inputValue: r,
49
- isOpen: a,
49
+ isOpen: i,
50
50
  handleInputChange: n,
51
- handleModalClose: i,
51
+ handleModalClose: a,
52
52
  handlePrimaryAction: s,
53
53
  handleSecondaryAction: u,
54
54
  primaryColor: d = "primary",
@@ -57,15 +57,15 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
57
57
  secondaryText: m,
58
58
  title: b
59
59
  }) => {
60
- const N = parseFloat(r ?? "0"), T = r !== "" && !isNaN(N);
60
+ const I = parseFloat(r ?? "0"), T = r !== "" && r !== "0" && !isNaN(I);
61
61
  return /* @__PURE__ */ c(
62
62
  j,
63
63
  {
64
64
  "aria-label": b,
65
65
  "aria-labelledby": "modal-title",
66
66
  maxWidth: "xs",
67
- onClose: i,
68
- open: a,
67
+ onClose: a,
68
+ open: i,
69
69
  role: "dialog",
70
70
  sx: { "& .MuiDialogContent-root": { p: 0 } },
71
71
  children: /* @__PURE__ */ c(P, { children: /* @__PURE__ */ f(
@@ -76,7 +76,7 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
76
76
  },
77
77
  children: [
78
78
  /* @__PURE__ */ f(
79
- _,
79
+ C,
80
80
  {
81
81
  sx: {
82
82
  alignItems: "center",
@@ -94,7 +94,7 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
94
94
  A,
95
95
  {
96
96
  "aria-label": o,
97
- onClick: i,
97
+ onClick: a,
98
98
  sx: { minHeight: 24, position: "absolute", right: 8, top: 18 },
99
99
  children: /* @__PURE__ */ c(w, { name: "close", sx: { color: "action.active" } })
100
100
  }
@@ -102,13 +102,13 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
102
102
  ]
103
103
  }
104
104
  ),
105
- /* @__PURE__ */ f(_, { sx: { gap: 24, px: 24 }, children: [
105
+ /* @__PURE__ */ f(C, { sx: { gap: 24, px: 24 }, children: [
106
106
  /* @__PURE__ */ c(S, { variant: "subtitle1", children: e }),
107
107
  t && /* @__PURE__ */ c(
108
- $,
108
+ G,
109
109
  {
110
110
  InputProps: {
111
- startAdornment: /* @__PURE__ */ c(G, { position: "start", children: "$" })
111
+ startAdornment: /* @__PURE__ */ c(F, { position: "start", children: "$" })
112
112
  },
113
113
  autoFocus: !0,
114
114
  inputMode: "decimal",
@@ -119,17 +119,15 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
119
119
  },
120
120
  label: t,
121
121
  onChange: ({ target: { value: g } }) => {
122
- if (!/^\d*\.?\d*$/.test(g)) return;
123
- const y = parseFloat(g);
124
- isNaN(y) || n?.(y);
122
+ /^\d*\.?\d*$/.test(g) && n?.(g);
125
123
  },
126
- type: "number",
124
+ type: "text",
127
125
  value: r
128
126
  }
129
127
  )
130
128
  ] }),
131
129
  /* @__PURE__ */ f(
132
- F,
130
+ N,
133
131
  {
134
132
  sx: {
135
133
  justifyContent: "flex-end",
@@ -139,7 +137,7 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
139
137
  },
140
138
  children: [
141
139
  m && /* @__PURE__ */ c(
142
- C,
140
+ y,
143
141
  {
144
142
  "aria-label": m,
145
143
  color: p,
@@ -148,7 +146,7 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
148
146
  }
149
147
  ),
150
148
  /* @__PURE__ */ c(
151
- C,
149
+ y,
152
150
  {
153
151
  "aria-label": l,
154
152
  color: d,
@@ -166,7 +164,7 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
166
164
  ) })
167
165
  }
168
166
  );
169
- }, at = R, v = (o, e) => !o && !e ? 0 : !o && e ? 101 : e / o * 100, k = (o, e) => {
167
+ }, nt = O, D = (o, e) => !o && !e ? 0 : !o && e ? 101 : e / o * 100, v = (o, e) => {
170
168
  const t = {
171
169
  background: e.palette.success.main,
172
170
  description: o <= 100 ? e.palette.text.secondary : e.palette.error.main,
@@ -175,24 +173,24 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
175
173
  };
176
174
  return o > 100 ? (t.background = e.palette.error.main, t.mercury = e.palette.error.lighter) : o > 80 && (t.background = e.palette.warning.main, t.text = e.palette.grey[900], t.mercury = e.palette.warning.lighter), t;
177
175
  }, it = () => {
178
- const { detailedBudgets: o } = E();
176
+ const { detailedBudgets: o } = $();
179
177
  return o.map((t) => {
180
178
  const r = t.transaction_total;
181
179
  return t.amount - r;
182
180
  }).reduce((t, r) => t + r, 0);
183
- }, st = (o, e, t, r) => {
184
- const a = [];
181
+ }, at = (o, e, t, r) => {
182
+ const i = [];
185
183
  for (const n of o) {
186
- const i = H(e, n.category_guid);
187
- if (!i) continue;
188
- const s = i.totalAmount, u = v(n.amount, s), d = n.amount - s;
189
- a.push({
184
+ const a = E(e, n.category_guid);
185
+ if (!a) continue;
186
+ const s = a.totalAmount, u = D(n.amount, s), d = n.amount - s;
187
+ i.push({
190
188
  ...n,
191
- budgetColors: k(u, r),
192
- category: i,
193
- description: x(
189
+ budgetColors: v(u, r),
190
+ category: a,
191
+ description: B(
194
192
  d < 0 ? t.budget_remaining_over : t.budget_remaining_left,
195
- h(Math.abs(d), "0,0")
193
+ x(Math.abs(d), "0,0")
196
194
  ),
197
195
  percentage: u,
198
196
  subBudgets: [],
@@ -200,39 +198,39 @@ const D = (o, e) => o.find((t) => t.guid === e), H = (o, e) => o.find((t) => t.g
200
198
  });
201
199
  }
202
200
  for (const n of o) {
203
- const i = O(e, n.category_guid);
204
- if (!i) continue;
205
- const s = i.currentAmount, u = a.find((p) => p.category_guid === i.parent_guid);
201
+ const a = H(e, n.category_guid);
202
+ if (!a) continue;
203
+ const s = a.currentAmount, u = i.find((p) => p.category_guid === a.parent_guid);
206
204
  if (!u) continue;
207
- const d = n.amount - s, l = v(n.amount, s);
205
+ const d = n.amount - s, l = D(n.amount, s);
208
206
  u && u.subBudgets.push({
209
207
  ...n,
210
- budgetColors: k(l, r),
211
- category: i,
212
- description: x(
208
+ budgetColors: v(l, r),
209
+ category: a,
210
+ description: B(
213
211
  d < 0 ? t.budget_remaining_over : t.budget_remaining_left,
214
- h(Math.abs(d), "0,0")
212
+ x(Math.abs(d), "0,0")
215
213
  ),
216
214
  percentage: l,
217
215
  subBudgets: [],
218
216
  transaction_total: s
219
217
  });
220
218
  }
221
- return a;
222
- }, I = (o, e) => o.find((t) => t.guid === e), ut = (o, e, t) => {
223
- const r = I(o, t);
219
+ return i;
220
+ }, k = (o, e) => o.find((t) => t.guid === e), st = (o, e, t) => {
221
+ const r = k(o, t);
224
222
  if (r)
225
- return I(r.subBudgets, e);
223
+ return k(r.subBudgets, e);
226
224
  };
227
225
  export {
228
- at as C,
229
- ut as a,
230
- st as b,
231
- H as c,
232
- O as d,
233
- rt as e,
234
- I as f,
235
- D as g,
236
- nt as i,
226
+ nt as C,
227
+ st as a,
228
+ at as b,
229
+ E as c,
230
+ H as d,
231
+ ot as e,
232
+ k as f,
233
+ h as g,
234
+ rt as i,
237
235
  it as u
238
236
  };
@@ -1,8 +1,8 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
2
  import { observer as c } from "mobx-react-lite";
3
3
  import { Icon as i } from "@mxenabled/mxui";
4
- import { e as p } from "./exportTransactionsToCSV-RUWymyA3.mjs";
5
- import { O as m } from "./Transaction-RmKYEKSk.mjs";
4
+ import { e as p } from "./exportTransactionsToCSV-YO3xewit.mjs";
5
+ import { O as m } from "./Transaction-BiOMLCAA.mjs";
6
6
  import { R as x } from "./ResponsiveButton-DZFp78fJ.mjs";
7
7
  import { g as _, h as C, u as l } from "./hooks-DWJQ4phS.mjs";
8
8
  const v = ({ filter: t }) => {
@@ -17,8 +17,8 @@ import { endOfMonth as ue } from "date-fns/endOfMonth";
17
17
  import { parseISO as me } from "date-fns/parseISO";
18
18
  import Z from "@mui/material/Button";
19
19
  import { Delete as pe, Add as ye, ReceiptLong as he } from "@mxenabled/mx-icons";
20
- import { T as J, u as fe, S as ge, a as Ce } from "./TransactionList-Dxi733-M.mjs";
21
- import { T as be } from "./TransactionDetails-BYKl7pix.mjs";
20
+ import { T as J, u as fe, S as ge, a as Ce } from "./TransactionList-CmZSDhKW.mjs";
21
+ import { T as be } from "./TransactionDetails-c7ncR7HI.mjs";
22
22
  import { addYears as j } from "date-fns/addYears";
23
23
  import { getDayOfYear as xe } from "date-fns/getDayOfYear";
24
24
  import { setDayOfYear as Se } from "date-fns/setDayOfYear";
@@ -36,7 +36,7 @@ import { fromUnixTime as ke } from "date-fns/fromUnixTime";
36
36
  import { S as Ne } from "./SearchBox-B7km148n.mjs";
37
37
  import { h as Me } from "./DateUtil-CVXVMbjf.mjs";
38
38
  import { b as B } from "./Category-CevNQ03n.mjs";
39
- import { T as te } from "./Transaction-RmKYEKSk.mjs";
39
+ import { T as te } from "./Transaction-BiOMLCAA.mjs";
40
40
  const ne = ({
41
41
  frequency: n,
42
42
  firstDay: t,
@@ -7,7 +7,7 @@ import R from "@mui/material/Tabs";
7
7
  import d from "@mui/material/Divider";
8
8
  import b from "@mui/material/List";
9
9
  import T from "@mui/material/Stack";
10
- import { R as C, A as S, a as E, M as v } from "./ManageIncome-BtOMmeKb.mjs";
10
+ import { R as C, A as S, a as E, M as v } from "./ManageIncome-CWQoWlbs.mjs";
11
11
  import { u as _, i as A, g as f } from "./hooks-DWJQ4phS.mjs";
12
12
  import { R as y, F as N } from "./RecurringTransactions-B_I4_FGO.mjs";
13
13
  import { A as m } from "./Analytics-i5h6BxR1.mjs";
@@ -0,0 +1,55 @@
1
+ import { jsx as i, jsxs as e } from "react/jsx-runtime";
2
+ import { P as f, H2 as g, Text as c } from "@mxenabled/mxui";
3
+ import o from "@mui/material/Box";
4
+ import r from "@mui/material/Stack";
5
+ const m = ({
6
+ amount: t,
7
+ borderRadius: n = "2px",
8
+ completeColor: s = "success.main",
9
+ icon: d,
10
+ label: l,
11
+ leftLabel: a,
12
+ percentComplete: h = 0,
13
+ rightLabel: x,
14
+ sx: p
15
+ }) => /* @__PURE__ */ i(r, { sx: { p: 24, width: "100%", ...p }, children: /* @__PURE__ */ e(r, { className: "details-container", sx: { gap: 16 }, children: [
16
+ /* @__PURE__ */ e(r, { sx: { alignItems: "center", flexDirection: "row", gap: 12 }, children: [
17
+ /* @__PURE__ */ i(o, { children: d }),
18
+ /* @__PURE__ */ e(r, { children: [
19
+ /* @__PURE__ */ i(f, { variant: "body2", children: l }),
20
+ typeof t == "string" ? /* @__PURE__ */ i(g, { children: t }) : t
21
+ ] })
22
+ ] }),
23
+ /* @__PURE__ */ e(r, { sx: { gap: 4 }, children: [
24
+ /* @__PURE__ */ i(
25
+ r,
26
+ {
27
+ sx: {
28
+ bgcolor: "divider",
29
+ borderRadius: n,
30
+ flexDirection: "row",
31
+ height: 16,
32
+ width: "100%"
33
+ },
34
+ children: /* @__PURE__ */ i(
35
+ o,
36
+ {
37
+ sx: {
38
+ bgcolor: s,
39
+ borderRadius: n,
40
+ height: 16,
41
+ width: `${h}%`
42
+ }
43
+ }
44
+ )
45
+ }
46
+ ),
47
+ /* @__PURE__ */ e(r, { sx: { flexDirection: "row", justifyContent: "space-between" }, children: [
48
+ /* @__PURE__ */ i(c, { variant: "body2", children: a }),
49
+ /* @__PURE__ */ i(c, { variant: "body2", children: x })
50
+ ] })
51
+ ] })
52
+ ] }) }), S = m;
53
+ export {
54
+ S
55
+ };
@@ -9,7 +9,7 @@ const S = ({
9
9
  sx: n = {}
10
10
  }) => {
11
11
  const { onEvent: a } = O();
12
- return N ? /* @__PURE__ */ C(A, { sx: { bgcolor: "background.paper", ...n }, children: /* @__PURE__ */ C(
12
+ return N ? /* @__PURE__ */ C(A, { className: "list-wrapper", sx: { bgcolor: "background.paper", ...n }, children: /* @__PURE__ */ C(
13
13
  o,
14
14
  {
15
15
  onClick: () => {
@@ -20,13 +20,14 @@ const S = ({
20
20
  ) }) : /* @__PURE__ */ C(
21
21
  A,
22
22
  {
23
+ className: "list-wrapper",
23
24
  disableGutters: !1,
24
25
  disablePadding: !1,
25
26
  sx: { bgcolor: "background.paper", ...n },
26
27
  children: T
27
28
  }
28
29
  );
29
- }, D = {
30
+ }, s = {
30
31
  ON_TRANSACTION_CATEGORY_CLICK: "onTransactionCategoryClick",
31
32
  ON_TRANSACTION_CATEGORY_CHANGED: "onTransactionCategoryChanged",
32
33
  ON_TRANSACTION_MANUAL_ADD_CLICK: "onTransactionManualAddClick",
@@ -74,7 +75,7 @@ const S = ({
74
75
  var I = /* @__PURE__ */ ((T) => (T[T.CREDIT = 1] = "CREDIT", T[T.DEBIT = 2] = "DEBIT", T))(I || {}), i = /* @__PURE__ */ ((T) => (T[T.POSTED = 1] = "POSTED", T[T.PENDING = 2] = "PENDING", T))(i || {});
75
76
  export {
76
77
  S as L,
77
- D as O,
78
+ s as O,
78
79
  I as T,
79
80
  i as a
80
81
  };