@mx-cartographer/experiences 8.2.4 → 8.2.6
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 +7 -0
- package/README.md +59 -20
- package/dist/{AccountDetailsHeader-CfdnKyJK.mjs → AccountDetailsHeader-DIysk_4w.mjs} +1 -1
- package/dist/{AccountFields-CAy0x_4i.mjs → AccountFields-mwJ8NXsX.mjs} +18 -18
- package/dist/{AccountListItem-BYyeeCf6.mjs → AccountListItem-CU-oWLRi.mjs} +1 -1
- package/dist/accounts/index.es.js +4 -4
- package/dist/cashflow/index.es.js +1 -1
- package/dist/debts/index.es.js +1 -1
- package/dist/finstrong/index.es.js +1 -1
- package/dist/insights/index.es.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [8.2.6] - 05-21-2026
|
|
2
|
+
|
|
3
|
+
- **UPDATED** - Hide MarketingHub Offer call to action button when call_to_action content is blank
|
|
4
|
+
## [8.2.5] - 05-14-2026
|
|
5
|
+
|
|
6
|
+
- **FIXED** - Payment due date logic in account details to ensure consistent UTC-based date rendering
|
|
7
|
+
|
|
1
8
|
## [8.2.4] - 05-13-2026
|
|
2
9
|
|
|
3
10
|
- **UPDATED** - Removed deprecated `variant` and `showBorder` props from Insights Micro Widget after `cardStyle` migration, reduce type duplication for micro insight `cards`
|
package/README.md
CHANGED
|
@@ -41,15 +41,19 @@ The library is built using a modern React stack, leveraging industry-standard to
|
|
|
41
41
|
|
|
42
42
|
### Prerequisites
|
|
43
43
|
- **Node.js**: v18.0.0 or higher
|
|
44
|
-
- **Yarn**: 4.
|
|
44
|
+
- **Yarn**: 4.14.1 [^YARN_VER]
|
|
45
45
|
- **React**: 18.3.1 [^REACT_VER]
|
|
46
|
-
- **MobX**: 6.
|
|
46
|
+
- **MobX**: 6.15.0 [^MOBX_VER]
|
|
47
47
|
|
|
48
48
|
### Installation
|
|
49
49
|
|
|
50
50
|
Install the library using yarn:
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
+
# For v8.x (this branch)
|
|
54
|
+
yarn add @mx-cartographer/experiences@v8-latest
|
|
55
|
+
|
|
56
|
+
# For v9.x (master)
|
|
53
57
|
yarn add @mx-cartographer/experiences
|
|
54
58
|
```
|
|
55
59
|
|
|
@@ -149,13 +153,24 @@ graph TD
|
|
|
149
153
|
src --> core["core/ (Centralized TypeScript types and constants)"]
|
|
150
154
|
src --> common["common/ (Shared components, hooks, stores, and API utilities)"]
|
|
151
155
|
src --> accounts["accounts/ (Accounts summary, details, and connection management)"]
|
|
156
|
+
src --> analytics["analytics/ (User feedback collection and NPS/CSAT surveys)"]
|
|
152
157
|
src --> budgets["budgets/ (Budget tracking, bubble charts, and categorization)"]
|
|
153
158
|
src --> cashflow["cashflow/ (Cashflow forecasting and event management)"]
|
|
159
|
+
src --> categories["categories/ (Category management and classification)"]
|
|
154
160
|
src --> dashboard["dashboard/ (Aggregate view of multiple experience widgets)"]
|
|
155
161
|
src --> debts["debts/ (Debt tracking and payoff visualization)"]
|
|
162
|
+
src --> expenses["expenses/ (Expense tracking and management)"]
|
|
156
163
|
src --> finstrong["finstrong/ (Financial health scoring and reporting)"]
|
|
157
164
|
src --> goals["goals/ (Savings goal setting, tracking, and progress visualization)"]
|
|
165
|
+
src --> help["help/ (Contextual help, support requests, and user guidance)"]
|
|
166
|
+
src --> insights["insights/ (Data-driven financial insights and alerts)"]
|
|
167
|
+
src --> investments["investments/ (Investment portfolio tracking and holding details)"]
|
|
168
|
+
src --> merchants["merchants/ (Merchant data and transaction categorization)"]
|
|
169
|
+
src --> microinsights["microinsights/ (Smart, micro financial insights)"]
|
|
158
170
|
src --> networth["networth/ (Asset and liability tracking with historical trends)"]
|
|
171
|
+
src --> notifications["notifications/ (Notification management and alerts)"]
|
|
172
|
+
src --> recurringtransactions["recurringtransactions/ (Recurring bill and subscription management)"]
|
|
173
|
+
src --> settings["settings/ (User profile, device, and preference management)"]
|
|
159
174
|
src --> spending["spending/ (Categorized spending analysis)"]
|
|
160
175
|
src --> transactions["transactions/ (Detailed transaction history and rules)"]
|
|
161
176
|
src --> trends["trends/ (Longitudinal spending and income analysis)"]
|
|
@@ -176,7 +191,7 @@ yarn testui
|
|
|
176
191
|
yarn citest
|
|
177
192
|
```
|
|
178
193
|
|
|
179
|
-
Verification logic and test setups are maintained in
|
|
194
|
+
Verification logic and test setups are maintained in various `__tests__` directories throughout the codebase and [vitest.setup.insights.tsx](vitest.setup.insights.tsx).
|
|
180
195
|
|
|
181
196
|
## Contributing
|
|
182
197
|
|
|
@@ -193,18 +208,42 @@ Verification logic and test setups are maintained in [src/common/__tests__](src/
|
|
|
193
208
|
yarn build
|
|
194
209
|
```
|
|
195
210
|
|
|
196
|
-
|
|
211
|
+
## Release Workflow (v8.x)
|
|
212
|
+
|
|
213
|
+
This branch (`Experiences_8.x`) publishes v8.x.x releases **manually**, while `master` publishes v9.x automatically via CI.
|
|
197
214
|
|
|
198
|
-
|
|
199
|
-
1. Bump the version in package.json using the format `major.minor.patch-alpha.<yourinitials><n>` See [the version history](https://www.npmjs.com/package/@mx-cartographer/experiences?activeTab=versions) for examples.
|
|
200
|
-
1. Run `npm publish --tag alpha`.
|
|
215
|
+
To avoid overwriting the `latest` npm dist-tag (which should always point to v9.x on `master`), **always publish with the `v8-latest` tag**:
|
|
201
216
|
|
|
217
|
+
1. Branch off `Experiences_8.x` for your feature work:
|
|
218
|
+
```bash
|
|
219
|
+
git checkout Experiences_8.x
|
|
220
|
+
git checkout -b my-feature-branch
|
|
221
|
+
```
|
|
222
|
+
1. Make your changes, including bumping the version in `package.json` and updating `CHANGELOG.md`.
|
|
223
|
+
1. Push your feature branch and open an MR targeting `Experiences_8.x` on GitLab.
|
|
224
|
+
1. After code review and merge, pull down the updated branch:
|
|
225
|
+
```bash
|
|
226
|
+
git checkout Experiences_8.x
|
|
227
|
+
git pull origin Experiences_8.x
|
|
228
|
+
```
|
|
229
|
+
1. Tag the release and push the tag:
|
|
230
|
+
```bash
|
|
231
|
+
git tag v8.2.6
|
|
232
|
+
git push origin --tags
|
|
233
|
+
```
|
|
234
|
+
1. Publish with the dist-tag:
|
|
235
|
+
```bash
|
|
236
|
+
npm publish --tag v8-latest
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Consumers on v8 can install with:
|
|
240
|
+
```bash
|
|
241
|
+
yarn add @mx-cartographer/experiences@v8-latest
|
|
242
|
+
# or pin a specific version
|
|
243
|
+
yarn add @mx-cartographer/experiences@8.2.6
|
|
244
|
+
```
|
|
202
245
|
|
|
203
|
-
|
|
204
|
-
1. Update CHANGELOG.md and include the version to publish using the standard `major.minor.patch`. If there are breaking changes, we bump the major, new feature we bump minor and bug fixes or minor changes, we bump patch.
|
|
205
|
-
1. Request a MR review by commenting `shipit --review`
|
|
206
|
-
1. Once the MR is approved, comment `shipit --publish-version=major|minor|patch`.
|
|
207
|
-
2. Shipit will bump the version in package.json, merge and publish the package to npm. -->
|
|
246
|
+
> **Do not** run `npm publish` without `--tag v8-latest` from this branch — it would move the `latest` tag away from v9.x.
|
|
208
247
|
|
|
209
248
|
## Support
|
|
210
249
|
|
|
@@ -217,12 +256,12 @@ For technical assistance or internal inquiries:
|
|
|
217
256
|
|
|
218
257
|
[^1]: [src/common/components/WidgetContainer.tsx:55](src/common/components/WidgetContainer.tsx#L55)
|
|
219
258
|
[^2]: [src/common/context/WidgetContainerProvider.tsx:10](src/common/context/WidgetContainerProvider.tsx#L10)
|
|
220
|
-
[^3]: [src/common/context/
|
|
259
|
+
[^3]: [src/common/context/GlobalDataProvider.tsx:16](src/common/context/GlobalDataProvider.tsx#L16)
|
|
221
260
|
[^4]: [src/common/hooks/useScreenSize.tsx:4](src/common/hooks/useScreenSize.tsx#L4)
|
|
222
|
-
[^5]: [package.json:
|
|
223
|
-
[^6]: [package.json:
|
|
224
|
-
[^MUI_VER]: [package.json:
|
|
225
|
-
[^MXUI_VER]: [package.json:
|
|
226
|
-
[^MOBX_VER]: [package.json:
|
|
227
|
-
[^REACT_VER]: [package.json:
|
|
228
|
-
[^YARN_VER]: [package.json:
|
|
261
|
+
[^5]: [package.json:274](package.json#L274)
|
|
262
|
+
[^6]: [package.json:233](package.json#L233)
|
|
263
|
+
[^MUI_VER]: [package.json:195](package.json#L195)
|
|
264
|
+
[^MXUI_VER]: [package.json:203](package.json#L203)
|
|
265
|
+
[^MOBX_VER]: [package.json:209](package.json#L209)
|
|
266
|
+
[^REACT_VER]: [package.json:213](package.json#L213)
|
|
267
|
+
[^YARN_VER]: [package.json:291](package.json#L291)
|
|
@@ -5,7 +5,7 @@ import { H3 as x, InstitutionLogo as D, Text as d, H2 as N } from "@mxenabled/mx
|
|
|
5
5
|
import { f as P } from "./NumberFormatting--XMeeBfr.mjs";
|
|
6
6
|
import p from "react";
|
|
7
7
|
import { G, d as f, l as O, f as R, a as v, u as w } from "./hooks-BaO_gOI6.mjs";
|
|
8
|
-
import { g as L } from "./AccountFields-
|
|
8
|
+
import { g as L } from "./AccountFields-mwJ8NXsX.mjs";
|
|
9
9
|
import { A as i } from "./Account-BaJmiJAG.mjs";
|
|
10
10
|
import H from "@mui/material/Card";
|
|
11
11
|
import M from "@mui/material/CardContent";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as p } from "react/jsx-runtime";
|
|
2
|
-
import { Text as
|
|
3
|
-
import { A as d, a as
|
|
4
|
-
import { i as
|
|
2
|
+
import { Text as h, Icon as b } from "@mxenabled/mxui";
|
|
3
|
+
import { A as d, a as F, P as T, b as A } from "./Account-BaJmiJAG.mjs";
|
|
4
|
+
import { i as D, u as g, a as O, b as C, c as N } from "./AccountUtils-T5_Odvos.mjs";
|
|
5
5
|
import { F as m } from "./Accounts-CseLC3lL.mjs";
|
|
6
|
-
import { f
|
|
6
|
+
import { f } from "./DateUtil-Bhq59ZVg.mjs";
|
|
7
7
|
import { f as s, i as o, a as S, b as I } from "./NumberFormatting--XMeeBfr.mjs";
|
|
8
8
|
import { b as i } from "./Localization-DnoVyBNK.mjs";
|
|
9
|
-
import { f, D as
|
|
9
|
+
import { f as c, D as y } from "./DateFormats-HudZ3Bjs.mjs";
|
|
10
10
|
const Y = (l, e) => {
|
|
11
11
|
const n = [
|
|
12
12
|
{
|
|
@@ -19,7 +19,7 @@ const Y = (l, e) => {
|
|
|
19
19
|
valueFormatter: (a) => a
|
|
20
20
|
}
|
|
21
21
|
];
|
|
22
|
-
if (
|
|
22
|
+
if (D(l)) {
|
|
23
23
|
n.unshift({
|
|
24
24
|
label: e.account_balance,
|
|
25
25
|
name: "balance",
|
|
@@ -30,7 +30,7 @@ const Y = (l, e) => {
|
|
|
30
30
|
const a = Object.keys(d).filter((t) => Number(t)).map((t) => ({
|
|
31
31
|
label: e.account_types[t],
|
|
32
32
|
value: Number(t),
|
|
33
|
-
icon: /* @__PURE__ */ p(b, { name:
|
|
33
|
+
icon: /* @__PURE__ */ p(b, { name: F[t] })
|
|
34
34
|
}));
|
|
35
35
|
n.push({
|
|
36
36
|
label: e.account_type,
|
|
@@ -42,10 +42,10 @@ const Y = (l, e) => {
|
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
if (l.account_type === d.PROPERTY) {
|
|
45
|
-
const a = Object.keys(
|
|
45
|
+
const a = Object.keys(T).filter((t) => Number(t)).map((t) => ({
|
|
46
46
|
label: e.property_types[t],
|
|
47
47
|
value: Number(t),
|
|
48
|
-
icon: /* @__PURE__ */ p(b, { name:
|
|
48
|
+
icon: /* @__PURE__ */ p(b, { name: A[t] })
|
|
49
49
|
}));
|
|
50
50
|
n.push({
|
|
51
51
|
label: e.property_type,
|
|
@@ -56,7 +56,7 @@ const Y = (l, e) => {
|
|
|
56
56
|
valueFormatter: (t) => a.find((r) => r.value === t)?.label
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
-
if (
|
|
59
|
+
if (g(l)) {
|
|
60
60
|
let a = e.interest_rate, t = "interest_rate";
|
|
61
61
|
l.is_manual || (typeof l.apr == "number" && (a = e.apr, t = "apr"), typeof l.apy == "number" && (a = e.apy, t = "apy")), n.push({
|
|
62
62
|
event: "account_details_click_interest_rate",
|
|
@@ -68,7 +68,7 @@ const Y = (l, e) => {
|
|
|
68
68
|
valueFormatter: (r) => o(r) ? S(r / 100) : r
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
|
-
return
|
|
71
|
+
return O(l) && (n.push({
|
|
72
72
|
label: e.minimum_payment,
|
|
73
73
|
name: "minimum_payment",
|
|
74
74
|
placeholder: i(e.enter_value, e.minimum_payment),
|
|
@@ -79,8 +79,8 @@ const Y = (l, e) => {
|
|
|
79
79
|
name: "payment_due_at",
|
|
80
80
|
type: m.Date,
|
|
81
81
|
valueFormatter: (a) => {
|
|
82
|
-
const t = typeof a == "number" ?
|
|
83
|
-
return
|
|
82
|
+
const t = typeof a == "number" ? f(a) : a;
|
|
83
|
+
return c(t, y.MED_MONTH_SHORT_DAY_FULL_YEAR);
|
|
84
84
|
}
|
|
85
85
|
}) : n.push({
|
|
86
86
|
label: e.day_payment_due,
|
|
@@ -91,13 +91,13 @@ const Y = (l, e) => {
|
|
|
91
91
|
e.day_of_every_month,
|
|
92
92
|
I(a <= 31 ? a : new Date(a).getDate())
|
|
93
93
|
)
|
|
94
|
-
})),
|
|
94
|
+
})), C(l) && n.push({
|
|
95
95
|
label: e.credit_limit,
|
|
96
96
|
name: "credit_limit",
|
|
97
97
|
placeholder: i(e.enter_value, e.credit_limit),
|
|
98
98
|
type: m.Currency,
|
|
99
99
|
valueFormatter: (a) => s(a, "0,0.00")
|
|
100
|
-
}),
|
|
100
|
+
}), N(l) && n.push({
|
|
101
101
|
label: e.original_balance,
|
|
102
102
|
minAmount: 1,
|
|
103
103
|
name: "original_balance",
|
|
@@ -115,11 +115,11 @@ const Y = (l, e) => {
|
|
|
115
115
|
}
|
|
116
116
|
default:
|
|
117
117
|
if (a = e.current_balance, t = l.balance, l.minimum_payment && l.payment_due_at) {
|
|
118
|
-
const
|
|
119
|
-
r = /* @__PURE__ */ p(
|
|
118
|
+
const v = f(l.payment_due_at);
|
|
119
|
+
r = /* @__PURE__ */ p(h, { component: "strong", variant: "caption", children: i(
|
|
120
120
|
e.payment_due_on,
|
|
121
121
|
s(l.minimum_payment, "0,0.00"),
|
|
122
|
-
|
|
122
|
+
c(v, y.FULL_MONTH_DAY)
|
|
123
123
|
) });
|
|
124
124
|
} else l.credit_limit && (r = e.available_credit, _ = s(l.credit_limit - (l?.balance ?? 0), "0,0.00"));
|
|
125
125
|
}
|
|
@@ -11,7 +11,7 @@ import { InstitutionLogo as B, Text as r } from "@mxenabled/mxui";
|
|
|
11
11
|
import { Error as j } from "@mxenabled/mx-icons";
|
|
12
12
|
import { I as T } from "./IconBacking-DgT8DCeh.mjs";
|
|
13
13
|
import { f as $ } from "./NumberFormatting--XMeeBfr.mjs";
|
|
14
|
-
import { g as k } from "./AccountFields-
|
|
14
|
+
import { g as k } from "./AccountFields-mwJ8NXsX.mjs";
|
|
15
15
|
import { u as w } from "./useAccountDisplayName-CFa_MrS6.mjs";
|
|
16
16
|
import { a as E, u as M } from "./hooks-BaO_gOI6.mjs";
|
|
17
17
|
import { C as d } from "./Account-BaJmiJAG.mjs";
|
|
@@ -11,15 +11,15 @@ import B from "@mui/material/ListSubheader";
|
|
|
11
11
|
import P from "@mui/system/Stack";
|
|
12
12
|
import { f as s1 } from "../NumberFormatting--XMeeBfr.mjs";
|
|
13
13
|
import { useTheme as y1, alpha as w1 } from "@mui/material/styles";
|
|
14
|
-
import { u as R, A as x1 } from "../AccountDetailsHeader-
|
|
14
|
+
import { u as R, A as x1 } from "../AccountDetailsHeader-DIysk_4w.mjs";
|
|
15
15
|
import { L as R1 } from "../LineChart-CejWS_rh.mjs";
|
|
16
16
|
import { g as S1, a as T1, b as E1 } from "../SpendingData-PKlh8caU.mjs";
|
|
17
17
|
import { l as D1, u as A, d as D, g as k, h as p1, a as _1, b as G } from "../hooks-BaO_gOI6.mjs";
|
|
18
18
|
import { A as I, g as f, N as L1 } from "../Account-BaJmiJAG.mjs";
|
|
19
19
|
import { I as f1, P as g1, S as H1 } from "../Account-BxHMlV9R.mjs";
|
|
20
|
-
import { a as k1, b as I1 } from "../AccountFields-
|
|
21
|
-
import { g as c2 } from "../AccountFields-
|
|
22
|
-
import { A as U } from "../AccountListItem-
|
|
20
|
+
import { a as k1, b as I1 } from "../AccountFields-mwJ8NXsX.mjs";
|
|
21
|
+
import { g as c2 } from "../AccountFields-mwJ8NXsX.mjs";
|
|
22
|
+
import { A as U } from "../AccountListItem-CU-oWLRi.mjs";
|
|
23
23
|
import l1 from "@mui/material/Tab";
|
|
24
24
|
import Z1 from "@mui/material/Tabs";
|
|
25
25
|
import N1 from "@mui/material/Switch";
|
|
@@ -23,7 +23,7 @@ import ye from "@mui/material/Tab";
|
|
|
23
23
|
import { getUnixTime as le } from "date-fns/getUnixTime";
|
|
24
24
|
import Q from "@mui/material/List";
|
|
25
25
|
import ee from "@mui/material/ListItem";
|
|
26
|
-
import { A as tt } from "../AccountListItem-
|
|
26
|
+
import { A as tt } from "../AccountListItem-CU-oWLRi.mjs";
|
|
27
27
|
import { f as U, D as Y } from "../DateFormats-HudZ3Bjs.mjs";
|
|
28
28
|
import nt from "@mui/material/ListSubheader";
|
|
29
29
|
import { f as J } from "../NumberFormatting--XMeeBfr.mjs";
|
package/dist/debts/index.es.js
CHANGED
|
@@ -12,7 +12,7 @@ import { G as Ge, q as ee, u as w, k as V, g as k, d as te, a as He, b as ze } f
|
|
|
12
12
|
import { u as ae } from "../useScreenSize-CeFhWTt_.mjs";
|
|
13
13
|
import { b as T } from "../Localization-DnoVyBNK.mjs";
|
|
14
14
|
import { D as ie } from "../Drawer-XPaLYjiO.mjs";
|
|
15
|
-
import { A as je, u as Ve } from "../AccountDetailsHeader-
|
|
15
|
+
import { A as je, u as Ve } from "../AccountDetailsHeader-DIysk_4w.mjs";
|
|
16
16
|
import Ye from "@mui/material/Card";
|
|
17
17
|
import Ke from "@mui/material/CardContent";
|
|
18
18
|
import Ue from "@mui/material/CardHeader";
|
|
@@ -43,7 +43,7 @@ import { E as Be } from "../EmptyState-DHAkGsjk.mjs";
|
|
|
43
43
|
import $n from "@mui/material/Chip";
|
|
44
44
|
import { D as ie } from "../Drawer-XPaLYjiO.mjs";
|
|
45
45
|
import { g as kt } from "../AccountDisplayName-CO7z3v99.mjs";
|
|
46
|
-
import { g as Mt } from "../AccountFields-
|
|
46
|
+
import { g as Mt } from "../AccountFields-mwJ8NXsX.mjs";
|
|
47
47
|
import Nn from "@mui/material/ListSubheader";
|
|
48
48
|
import { S as dt } from "../Select-BZRUpOib.mjs";
|
|
49
49
|
import { A as je } from "../Account-BaJmiJAG.mjs";
|
|
@@ -3363,7 +3363,7 @@ const A4 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAACvCAYAAACM9QdJAA
|
|
|
3363
3363
|
altLoadingText: r,
|
|
3364
3364
|
beat: i,
|
|
3365
3365
|
button: /* @__PURE__ */ s(C, { spacing: 10, children: [
|
|
3366
|
-
/* @__PURE__ */ t(
|
|
3366
|
+
i.call_to_action && /* @__PURE__ */ t(
|
|
3367
3367
|
H,
|
|
3368
3368
|
{
|
|
3369
3369
|
beat: i,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mx-cartographer/experiences",
|
|
3
|
-
"version": "8.2.
|
|
3
|
+
"version": "8.2.6",
|
|
4
4
|
"description": "Library containing experience widgets",
|
|
5
5
|
"author": "MX",
|
|
6
6
|
"license": "MIT",
|
|
@@ -288,5 +288,5 @@
|
|
|
288
288
|
"CHANGELOG.md",
|
|
289
289
|
"README.md"
|
|
290
290
|
],
|
|
291
|
-
"packageManager": "yarn@4.
|
|
291
|
+
"packageManager": "yarn@4.15.0"
|
|
292
292
|
}
|