@mx-cartographer/experiences 7.11.10 → 7.11.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
- ## [7.11.10] - 03-05-2026
1
+ ## [7.11.12] - 03-05-2026
2
+
3
+ - **UPDATED** - Tweaks to `CategorySpendingV2MUI` and `BudgetDetailsDrawerV2`
4
+
5
+ ## [7.11.11] - 03-04-2026
6
+
7
+ - **FIXED** - Issue with including bi-weekly recurrences in past months
8
+
9
+ ## [7.11.10] - 03-04-2026
2
10
 
3
11
  - **FIXED** - Account Actions | toggle a11y
4
12
 
@@ -1,5 +1,5 @@
1
1
  import { makeAutoObservable as h, runInAction as a } from "mobx";
2
- import { i as g } from "./User-CCSM9p05.mjs";
2
+ import { i as g } from "./User-CoANIQIA.mjs";
3
3
  import { A as d } from "./AccountApi-JlrX0MwM.mjs";
4
4
  import { d as m } from "./Accounts-M-LTzStv.mjs";
5
5
  import { A as s, d as u } from "./Account-BiB1F8lL.mjs";
@@ -10,7 +10,7 @@ import se from "@mui/material/ListItem";
10
10
  import ce from "@mui/material/ListItemAvatar";
11
11
  import le from "@mui/material/ListItemButton";
12
12
  import de from "@mui/material/ListItemText";
13
- import { F as d, S as M, D as z, g as $, R as T, e as _e } from "./RecurringTransactions-B_I4_FGO.mjs";
13
+ import { F as d, S as M, D as z, g as $, R as T, e as _e } from "./RecurringTransactions-C8Cy-9DA.mjs";
14
14
  import { subDays as X } from "date-fns/subDays";
15
15
  import { startOfToday as E } from "date-fns/startOfToday";
16
16
  import { endOfMonth as ue } from "date-fns/endOfMonth";
@@ -18,7 +18,7 @@ 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
20
  import { T as J, u as fe, S as ge, a as Ce } from "./TransactionList-BibbhhS9.mjs";
21
- import { T as be } from "./TransactionDetails-Cedp4OOg.mjs";
21
+ import { T as be } from "./TransactionDetails-CCLMsk_N.mjs";
22
22
  import { addYears as K } from "date-fns/addYears";
23
23
  import { getDayOfYear as xe } from "date-fns/getDayOfYear";
24
24
  import { setDayOfYear as Se } from "date-fns/setDayOfYear";
@@ -7,9 +7,9 @@ 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-C389-HAc.mjs";
10
+ import { R as C, A as S, a as E, M as v } from "./ManageIncome-CerJpiYw.mjs";
11
11
  import { u as _, j as A, g as f } from "./hooks-zu7yblbi.mjs";
12
- import { R as y, F as N } from "./RecurringTransactions-B_I4_FGO.mjs";
12
+ import { R as y, F as N } from "./RecurringTransactions-C8Cy-9DA.mjs";
13
13
  import { A as m } from "./Analytics-i5h6BxR1.mjs";
14
14
  const I = h(() => {
15
15
  const { recurring: g } = _(), { detailedRepeatingTransactions: n } = A(), { onEvent: a } = f(), l = (r) => {
@@ -0,0 +1,302 @@
1
+ import { jsxs as O, Fragment as L, jsx as d } from "react/jsx-runtime";
2
+ import U from "@mui/material/Avatar";
3
+ import M from "@mui/material/ListItem";
4
+ import G from "@mui/material/ListItemAvatar";
5
+ import S from "@mui/material/ListItemButton";
6
+ import C from "@mui/material/ListItemText";
7
+ import { Icon as w, IconWeight as $ } from "@mxenabled/mxui";
8
+ import j from "@mui/material/ListItemIcon";
9
+ import z from "@mui/material/MenuItem";
10
+ import K from "@mui/material/TextField";
11
+ import { ExpandMore as H } from "@mxenabled/mx-icons";
12
+ import { addDays as A } from "date-fns/addDays";
13
+ import { addMonths as h } from "date-fns/addMonths";
14
+ import { addQuarters as Y } from "date-fns/addQuarters";
15
+ import { addWeeks as W } from "date-fns/addWeeks";
16
+ import { addYears as V } from "date-fns/addYears";
17
+ import { formatISO as X } from "date-fns/formatISO";
18
+ import { fromUnixTime as J } from "date-fns/fromUnixTime";
19
+ import { getUnixTime as y } from "date-fns/getUnixTime";
20
+ import { isAfter as f } from "date-fns/isAfter";
21
+ import { isBefore as u } from "date-fns/isBefore";
22
+ import { isSameDay as Z } from "date-fns/isSameDay";
23
+ import { lastDayOfMonth as T } from "date-fns/lastDayOfMonth";
24
+ import { nextDay as E } from "date-fns/nextDay";
25
+ import { parseISO as F } from "date-fns/parseISO";
26
+ import { setDate as D } from "date-fns/setDate";
27
+ import { setDay as R } from "date-fns/setDay";
28
+ import { setDayOfYear as N } from "date-fns/setDayOfYear";
29
+ import { startOfToday as g } from "date-fns/startOfToday";
30
+ import { subDays as I } from "date-fns/subDays";
31
+ import { subMonths as q } from "date-fns/subMonths";
32
+ import { subQuarters as B } from "date-fns/subQuarters";
33
+ import { subWeeks as ee } from "date-fns/subWeeks";
34
+ import { subYears as te } from "date-fns/subYears";
35
+ import { g as re, a as oe, b as ae, c as se, d as ne, e as ce, f as ie } from "./DateUtil-CVXVMbjf.mjs";
36
+ import { b as Q } from "./NumberFormatting-DjTD0t3W.mjs";
37
+ import { b as l } from "./Localization-2MODESHW.mjs";
38
+ import { f as x, D as k } from "./DateFormats-Cs-NbEZ7.mjs";
39
+ const ue = ({ iconName: e, label: a, onClick: r, value: o }) => {
40
+ const t = /* @__PURE__ */ O(L, { children: [
41
+ /* @__PURE__ */ d(G, { children: /* @__PURE__ */ d(U, { sx: { bgcolor: "border.light" }, variant: "rounded", children: /* @__PURE__ */ d(w, { name: e, sx: { color: "text.primary" }, weight: $.Dark }) }) }),
42
+ /* @__PURE__ */ d(
43
+ C,
44
+ {
45
+ primary: a,
46
+ primaryTypographyProps: { variant: "XSmall" },
47
+ secondary: o,
48
+ secondaryTypographyProps: { color: "text.default", variant: "Body", fontWeight: 600 }
49
+ }
50
+ )
51
+ ] });
52
+ return r ? /* @__PURE__ */ d(M, { disableGutters: !0, disablePadding: !0, children: /* @__PURE__ */ O(S, { onClick: r, children: [
53
+ t,
54
+ /* @__PURE__ */ d(j, { children: /* @__PURE__ */ d(w, { name: "chevron_right", size: 24 }) })
55
+ ] }) }) : /* @__PURE__ */ d(M, { disableGutters: !1, disablePadding: !1, children: t });
56
+ }, at = ue, st = ({ label: e, onChange: a, options: r, value: o, ...t }) => /* @__PURE__ */ d(
57
+ K,
58
+ {
59
+ InputLabelProps: { shrink: !0 },
60
+ SelectProps: {
61
+ IconComponent: (c) => /* @__PURE__ */ d(H, { size: 20, sx: { mr: 4 }, ...c })
62
+ },
63
+ defaultValue: 0,
64
+ label: e,
65
+ onChange: (c) => {
66
+ a(Number(c.target.value));
67
+ },
68
+ select: !0,
69
+ value: o,
70
+ variant: "outlined",
71
+ ...t,
72
+ children: r.map((c) => /* @__PURE__ */ d(z, { value: c.id, children: c.label }, c.id))
73
+ }
74
+ );
75
+ var n = /* @__PURE__ */ ((e) => (e[e.Unknown = 0] = "Unknown", e[e.EveryWeek = 1] = "EveryWeek", e[e.EveryOtherWeek = 2] = "EveryOtherWeek", e[e.EveryMonth = 3] = "EveryMonth", e[e.EveryOtherMonth = 4] = "EveryOtherMonth", e[e.EveryQuarter = 5] = "EveryQuarter", e[e.EveryOtherQuarter = 6] = "EveryOtherQuarter", e[e.EveryYear = 7] = "EveryYear", e[e.TwiceAMonth = 8] = "TwiceAMonth", e))(n || {}), p = /* @__PURE__ */ ((e) => (e[e.Paid = 0] = "Paid", e[e.Missed = 1] = "Missed", e[e.Upcoming = 2] = "Upcoming", e))(p || {}), b = /* @__PURE__ */ ((e) => (e[e.Expense = 0] = "Expense", e[e.Income = 1] = "Income", e))(b || {}), P = /* @__PURE__ */ ((e) => (e[e.Unknown = 0] = "Unknown", e[e.Subscription = 1] = "Subscription", e[e.Bill = 2] = "Bill", e[e.Income = 3] = "Income", e[e.Transfer = 4] = "Transfer", e))(P || {});
76
+ const de = (e) => {
77
+ if (!e) return "";
78
+ let a = e.user_name || e.feed_name || "";
79
+ return e.account_number && (a = `${a} *${e.account_number}`), a;
80
+ }, me = (e, a) => {
81
+ const r = [], o = e.transactions.find(
82
+ (m) => m.repeating_transaction_guid === e.guid
83
+ );
84
+ if (!o) return [];
85
+ const t = F(e.predicted_occurs_on), s = {
86
+ accountGuid: e.account?.guid || "",
87
+ amount: e.amount,
88
+ categoryGuid: o.category_guid || "",
89
+ expectedDate: t,
90
+ frequency: e.recurrence_type,
91
+ institutionGuid: e.account?.institution_guid || "",
92
+ institutionName: de(e.account),
93
+ merchantGuid: e.merchant_guid,
94
+ name: e.description,
95
+ recurrenceDay: e.recurrence_day,
96
+ repeatingTransactionGuid: e.guid,
97
+ secondRecurrenceDay: e.second_recurrence_day,
98
+ status: p.Upcoming,
99
+ type: e.repeating_transaction_type === P.Income ? b.Income : b.Expense,
100
+ transaction: void 0
101
+ }, c = a.start, i = a.end;
102
+ switch (e.recurrence_type) {
103
+ case n.EveryWeek:
104
+ r.push(...le(s, c, i));
105
+ break;
106
+ case n.EveryOtherWeek:
107
+ r.push(...he(s, c, i));
108
+ break;
109
+ case n.TwiceAMonth:
110
+ r.push(...fe(s, c, i));
111
+ break;
112
+ case n.EveryMonth:
113
+ r.push(...pe(s, c, i));
114
+ break;
115
+ case n.EveryOtherMonth:
116
+ r.push(...ye(s, c, i));
117
+ break;
118
+ case n.EveryQuarter:
119
+ r.push(...De(s, c, i));
120
+ break;
121
+ case n.EveryOtherQuarter:
122
+ r.push(..._e(s, c, i));
123
+ break;
124
+ case n.EveryYear:
125
+ r.push(...ve(s, c, i));
126
+ break;
127
+ }
128
+ for (const m of r) {
129
+ const _ = e.transactions.find(
130
+ (v) => v.repeating_transaction_guid === e.guid && v.date > y(I(m.expectedDate, 5)) && v.date < y(A(m.expectedDate, 5))
131
+ );
132
+ _ ? (m.transaction = _, m.status = p.Paid, m.occurredOnDate = J(_.date)) : u(m.expectedDate, I(g(), 3)) && (m.status = p.Missed);
133
+ }
134
+ return r;
135
+ }, le = (e, a, r) => {
136
+ const o = [];
137
+ let t = E(a, e.recurrenceDay);
138
+ for (; u(t, r); )
139
+ o.push({ ...e, expectedDate: t }), t = E(t, e.recurrenceDay);
140
+ return o;
141
+ }, he = (e, a, r) => {
142
+ const o = [];
143
+ let t = e.expectedDate;
144
+ if (u(t, a))
145
+ for (; u(t, a); )
146
+ t = W(t, 2);
147
+ else {
148
+ for (; f(t, a) || Z(t, a); )
149
+ t = ee(t, 2);
150
+ t = W(t, 2);
151
+ }
152
+ for (; u(t, r); )
153
+ o.push({ ...e, expectedDate: t }), t = A(t, 14);
154
+ return o;
155
+ }, fe = (e, a, r) => {
156
+ const o = [];
157
+ let t = D(a, e.recurrenceDay);
158
+ for (; u(t, r); )
159
+ o.push({ ...e, expectedDate: t }), t = h(t, 1);
160
+ let s = e.secondRecurrenceDay && e.secondRecurrenceDay < 28 ? D(a, e.secondRecurrenceDay) : T(a);
161
+ for (; u(s, r); )
162
+ o.push({ ...e, expectedDate: s }), s = h(s, 1);
163
+ return o;
164
+ }, pe = (e, a, r) => {
165
+ const o = [];
166
+ let t = D(a, e.recurrenceDay);
167
+ for (o.push({ ...e, expectedDate: t }), t = h(t, 1); u(t, r); )
168
+ o.push({ ...e, expectedDate: t }), t = h(t, 1);
169
+ return o;
170
+ }, ye = (e, a, r) => {
171
+ const o = [], t = e.expectedDate;
172
+ let s = u(t, r) ? t : q(t, 2);
173
+ for (; u(s, r); )
174
+ f(s, a) && o.push({ ...e, expectedDate: s }), s = h(s, 2);
175
+ return o;
176
+ }, De = (e, a, r) => {
177
+ const o = [], t = e.expectedDate;
178
+ let s = u(t, r) ? t : B(t, 1);
179
+ for (; u(s, r); )
180
+ f(s, a) && o.push({ ...e, expectedDate: s }), s = Y(s, 1);
181
+ return o;
182
+ }, _e = (e, a, r) => {
183
+ const o = [], t = e.expectedDate;
184
+ let s = u(t, r) ? t : B(t, 2);
185
+ for (; u(s, r); )
186
+ f(s, a) && o.push({ ...e, expectedDate: s }), s = Y(s, 2);
187
+ return o;
188
+ }, ve = (e, a, r) => {
189
+ const o = [], t = e.expectedDate;
190
+ let s = u(t, r) ? t : te(t, 1);
191
+ for (; u(s, r); )
192
+ f(s, a) && o.push({ ...e, expectedDate: s }), s = V(s, 1);
193
+ return o;
194
+ }, nt = (e, a) => {
195
+ const r = [];
196
+ for (const o of e) {
197
+ const t = me(o, a);
198
+ r.push(...t);
199
+ }
200
+ return r.sort(
201
+ (o, t) => y(o.occurredOnDate || o.expectedDate) - y(t.occurredOnDate || t.expectedDate)
202
+ );
203
+ }, ct = (e, a, r) => {
204
+ const o = [];
205
+ for (const t of a) {
206
+ const s = r.filter(
207
+ (c) => c.repeating_transaction_guid === t.guid
208
+ );
209
+ r.length > 0 && o.push({
210
+ ...t,
211
+ account: e.find((c) => c.guid === t.account_guid),
212
+ transactions: s
213
+ });
214
+ }
215
+ return o;
216
+ }, it = (e) => e.reduce((a, r) => {
217
+ const o = X(r.expectedDate, { representation: "date" }), t = a.find(
218
+ (s) => s.date.toString() === r.expectedDate.toString()
219
+ );
220
+ return t ? t.recurrences.push(r) : a.push({
221
+ date: r.expectedDate,
222
+ id: `date-${o}`,
223
+ recurrences: [r]
224
+ }), a;
225
+ }, []), ut = (e, a, r) => {
226
+ const o = E(g(), a.recurrence_day), t = N(g(), a.recurrence_day), s = Q(a.recurrence_day), c = a.second_recurrence_day ? Q(a.second_recurrence_day) : "";
227
+ let i = r ? l(e.monthly_ordinal, s) : e.monthly;
228
+ switch (a.recurrence_type) {
229
+ case n.EveryQuarter:
230
+ i = r ? l(e.quarterly_ordinal, s) : e.quarterly;
231
+ break;
232
+ case n.EveryWeek:
233
+ i = r ? l(
234
+ e.weekly_ordinal,
235
+ x(o, k.DAY_OF_WEEK)
236
+ ) : e.weekly;
237
+ break;
238
+ case n.EveryYear:
239
+ i = r ? l(
240
+ e.anually_ordinal,
241
+ x(t, k.MONTH_DAY)
242
+ ) : e.anually;
243
+ break;
244
+ case n.EveryOtherWeek:
245
+ i = r ? l(
246
+ e.every_other_week_ordinal,
247
+ x(o, k.DAY_OF_WEEK)
248
+ ) : e.every_other_week;
249
+ break;
250
+ case n.EveryOtherMonth:
251
+ i = r ? l(e.every_other_month_ordinal, s) : e.every_other_month;
252
+ break;
253
+ case n.EveryOtherQuarter:
254
+ i = r ? l(e.every_other_quarter_ordinal, s) : e.every_other_quarter;
255
+ break;
256
+ case n.TwiceAMonth:
257
+ i = r ? l(e.twice_a_month_ordinal, s, c) : e.twice_a_month;
258
+ break;
259
+ }
260
+ return i;
261
+ }, dt = (e, a, r) => {
262
+ let o = a;
263
+ r !== void 0 && (e === n.EveryWeek || e === n.EveryOtherWeek ? o = R(a, r) : e === n.EveryYear ? o = N(a, r) : o = D(a, r));
264
+ let t = o;
265
+ switch (e) {
266
+ case n.EveryWeek:
267
+ t = ie(o);
268
+ break;
269
+ case n.EveryOtherWeek:
270
+ t = ce(o);
271
+ break;
272
+ case n.EveryMonth:
273
+ t = ne(o);
274
+ break;
275
+ case n.EveryOtherMonth:
276
+ t = se(o);
277
+ break;
278
+ case n.EveryQuarter:
279
+ t = ae(o);
280
+ break;
281
+ case n.EveryOtherQuarter:
282
+ t = oe(o);
283
+ break;
284
+ case n.EveryYear:
285
+ t = re(o);
286
+ break;
287
+ }
288
+ return t;
289
+ };
290
+ export {
291
+ at as D,
292
+ n as F,
293
+ P as R,
294
+ st as S,
295
+ ct as a,
296
+ nt as b,
297
+ p as c,
298
+ b as d,
299
+ dt as e,
300
+ it as f,
301
+ ut as g
302
+ };
@@ -8,7 +8,7 @@ import { startOfMonth as y } from "date-fns/startOfMonth";
8
8
  import { startOfToday as i } from "date-fns/startOfToday";
9
9
  import { subDays as I } from "date-fns/subDays";
10
10
  import { F as x, A as o } from "./Fetch-C67go-m2.mjs";
11
- import { a as u, b as A, c as r, d } from "./RecurringTransactions-B_I4_FGO.mjs";
11
+ import { a as u, b as A, c as r, d } from "./RecurringTransactions-C8Cy-9DA.mjs";
12
12
  var E = /* @__PURE__ */ ((a) => (a.Small = "small", a.Medium = "medium", a.Large = "large", a))(E || {});
13
13
  const G = 44;
14
14
  class h {
@@ -8,7 +8,7 @@ import te from "@mui/material/Paper";
8
8
  import v from "@mui/material/Stack";
9
9
  import { useTheme as V } from "@mui/material/styles";
10
10
  import { CategoryIcon as he, CategoryIconVariants as Ce, Text as C, P as X, MerchantLogo as Se, TextField as ye, Icon as ae, IconWeight as ue, Toast as ke } from "@mxenabled/mxui";
11
- import { C as Pe, a as Me, b as Ge, i as Be } from "./User-CCSM9p05.mjs";
11
+ import { C as Pe, a as Me, b as Ge, i as Be } from "./User-CoANIQIA.mjs";
12
12
  import se from "@mui/material/Button";
13
13
  import $e from "@mui/material/FormGroup";
14
14
  import J from "@mui/material/IconButton";