@mx-cartographer/experiences 9.6.0 → 9.6.2
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 +18 -0
- package/dist/common/components/ConnectDrawer.es.js +17 -44
- package/dist/common/components/ConnectDrawer.es.js.map +1 -1
- package/dist/common/components/ConnectWidgetPanel.d.ts +8 -0
- package/dist/common/components/ConnectWidgetPanel.es.js +44 -0
- package/dist/common/components/ConnectWidgetPanel.es.js.map +1 -0
- package/dist/common/components/dialog/Dialog.d.ts +2 -0
- package/dist/common/components/dialog/Dialog.es.js +30 -30
- package/dist/common/components/dialog/Dialog.es.js.map +1 -1
- package/dist/common/components/index.d.ts +1 -0
- package/dist/common/index.es.js +67 -65
- package/dist/core/types/InsightsInstanceSlotData.d.ts +0 -1
- package/dist/core/types/InsightsInstanceSlotData.es.js.map +1 -1
- package/dist/core/types/localization/InsightsFeedCopy.d.ts +87 -0
- package/dist/insights-v2/actionBlocks/ActionBlockLayer.es.js +19 -19
- package/dist/insights-v2/actionBlocks/ActionBlockLayer.es.js.map +1 -1
- package/dist/insights-v2/actionBlocks/ConnectWidgetActionBlock.d.ts +21 -0
- package/dist/insights-v2/actionBlocks/ConnectWidgetActionBlock.es.js +16 -0
- package/dist/insights-v2/actionBlocks/ConnectWidgetActionBlock.es.js.map +1 -0
- package/dist/insights-v2/actionBlocks/ConnectionDetailActionBlock.d.ts +12 -0
- package/dist/insights-v2/actionBlocks/ConnectionDetailActionBlock.es.js +25 -0
- package/dist/insights-v2/actionBlocks/ConnectionDetailActionBlock.es.js.map +1 -0
- package/dist/insights-v2/actionBlocks/FeedbackModalActionBlock.d.ts +17 -0
- package/dist/insights-v2/actionBlocks/FeedbackModalActionBlock.es.js +39 -0
- package/dist/insights-v2/actionBlocks/FeedbackModalActionBlock.es.js.map +1 -0
- package/dist/insights-v2/actionBlocks/SurveyModalActionBlock.d.ts +16 -0
- package/dist/insights-v2/actionBlocks/SurveyModalActionBlock.es.js +47 -0
- package/dist/insights-v2/actionBlocks/SurveyModalActionBlock.es.js.map +1 -0
- package/dist/insights-v2/beatActions.d.ts +2 -2
- package/dist/insights-v2/beatActions.es.js.map +1 -1
- package/dist/insights-v2/blocks/ComponentBlocks/AccountSwitchBlock/AccountSwitchBlock.d.ts +2 -4
- package/dist/insights-v2/blocks/ComponentBlocks/AccountSwitchBlock/AccountSwitchBlock.es.js +24 -33
- package/dist/insights-v2/blocks/ComponentBlocks/AccountSwitchBlock/AccountSwitchBlock.es.js.map +1 -1
- package/dist/insights-v2/blocks/ComponentBlocks/AccountSwitchBlock/layout.d.ts +36 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountSwitchBlock/layout.es.js +40 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountSwitchBlock/layout.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/TransactionBlock/TransactionBlock.d.ts +8 -18
- package/dist/insights-v2/blocks/ComponentBlocks/TransactionBlock/TransactionBlock.es.js +43 -42
- package/dist/insights-v2/blocks/ComponentBlocks/TransactionBlock/TransactionBlock.es.js.map +1 -1
- package/dist/insights-v2/blocks/ComponentBlocks/TransactionBlock/index.d.ts +2 -1
- package/dist/insights-v2/blocks/ComponentBlocks/TransactionBlock/layout.d.ts +30 -0
- package/dist/insights-v2/blocks/ComponentBlocks/TransactionBlock/layout.es.js +29 -0
- package/dist/insights-v2/blocks/ComponentBlocks/TransactionBlock/layout.es.js.map +1 -0
- package/dist/insights-v2/blocks/resolveVariantConfig.d.ts +10 -0
- package/dist/insights-v2/blocks/resolveVariantConfig.es.js +6 -0
- package/dist/insights-v2/blocks/resolveVariantConfig.es.js.map +1 -0
- package/dist/insights-v2/components/BaseLayout.es.js +14 -14
- package/dist/insights-v2/components/ConnectionDetailDrillDown.d.ts +32 -0
- package/dist/insights-v2/components/ConnectionDetailDrillDown.es.js +148 -0
- package/dist/insights-v2/components/ConnectionDetailDrillDown.es.js.map +1 -0
- package/dist/insights-v2/components/FeedbackDialog.d.ts +3 -1
- package/dist/insights-v2/components/FeedbackDialog.es.js +80 -72
- package/dist/insights-v2/components/FeedbackDialog.es.js.map +1 -1
- package/dist/insights-v2/components/FeedbackModal.d.ts +60 -0
- package/dist/insights-v2/components/FeedbackModal.es.js +61 -0
- package/dist/insights-v2/components/FeedbackModal.es.js.map +1 -0
- package/dist/insights-v2/components/SurveyModal.d.ts +65 -0
- package/dist/insights-v2/components/SurveyModal.es.js +138 -0
- package/dist/insights-v2/components/SurveyModal.es.js.map +1 -0
- package/dist/insights-v2/components/celebrationGradients.d.ts +19 -7
- package/dist/insights-v2/components/celebrationGradients.es.js +7 -4
- package/dist/insights-v2/components/celebrationGradients.es.js.map +1 -1
- package/dist/insights-v2/components/shared/StatusSnackbar.d.ts +28 -0
- package/dist/insights-v2/components/shared/StatusSnackbar.es.js +19 -0
- package/dist/insights-v2/components/shared/StatusSnackbar.es.js.map +1 -0
- package/dist/insights-v2/index.d.ts +4 -0
- package/dist/insights-v2/index.es.js +78 -69
- package/dist/insights-v2/mappings/actionBlocksKey.d.ts +4 -0
- package/dist/insights-v2/mappings/actionBlocksKey.es.js +4 -0
- package/dist/insights-v2/mappings/actionBlocksKey.es.js.map +1 -1
- package/dist/insights-v2/mappings/blocks.es.js +79 -56
- package/dist/insights-v2/mappings/blocks.es.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
## [9.6.2] - 10-12-2026
|
|
2
|
+
|
|
3
|
+
- **CHANGED** - `AccountSwitchBlock` reads its per-variant props from a new `layout.ts` keyed by `instance_slot.variant` (`account_connect`, `account_connected`, `switch_direct_deposit`), so Switch Direct Deposit's pending state shares the block with Discovered Accounts. `account_connect` now renders the Figma blue slot gradient; unknown variants fall back to it (WEC-1891)
|
|
4
|
+
- **REMOVED** - `is_connected` from the exported `AccountSwitchBlockData` type. The connect / connected state comes from `instance_slot.variant`, which ditto has sent since 1.0; no host read the flag (WEC-1891)
|
|
5
|
+
- **CHANGED** - `TransactionBlock` reads header and slot treatment from a new `layout.ts` keyed by `instance_slot.variant`. Adds `uncategorized_transaction` (filled primary header), `subscription_detected` (blue slot wash) and `unexpected_subscription_payment` (warning slot wash) alongside `with_header` / `no_header`; unknown variants fall back to the plain row. Shared `getPrimaryWashGradient` and `WARNING_WASH_GRADIENT` added to `celebrationGradients` (WEC-1891)
|
|
6
|
+
- **ADDED** - `resolveVariantConfig` (insights-v2 blocks): shared lookup from a block's `layout.ts` table by `instance_slot.variant`, guarded with `Object.hasOwn` so a backend-controlled key can never resolve to an inherited object property, and warning on an unknown variant before falling back (same contract as `createVariantBlock`). Both blocks above use it (WEC-1891)
|
|
7
|
+
|
|
8
|
+
## [9.6.1] - 10-12-2026
|
|
9
|
+
|
|
10
|
+
- **ADDED** - Three Insights V2 CTA action blocks, registered in `actionBlocksKey`/`blocks`: `feedback_modal_block` (`FeedbackModalActionBlock`) renders a survey dialog with a success/error `StatusSnackbar` on top of the action drawer; `connection_detail_block` (`ConnectionDetailActionBlock`) shows the connection-details education drilldown (`ConnectionDetailDrillDown`); and `connect_widget_block` (`ConnectWidgetActionBlock`) boots MX's Connect widget (web-widget-sdk iframe) inside the drawer. Added `feedback_modal` and `connection_details` copy under `insights_feed`, exported the new `FeedbackModal`, `StatusSnackbar`, and `ConnectionDetailDrillDown` components, and added tests and stories (WEC-1879)
|
|
11
|
+
- **FIXED** - A CTA pointing at a 'modal' action block (`feedback_modal_block`, `survey_modal_block`) no longer also opens an empty action Drawer behind/under its dialog; `ActionBlockEntry` gains a `presentation?: 'drawer' | 'modal'` field and `ActionBlockLayer` skips the Drawer wrapper entirely for `'modal'` entries (WEC-1879)
|
|
12
|
+
- **ADDED** - Storybook stories for `FeedbackModalActionBlock`, `ConnectionDetailActionBlock`, `ConnectWidgetActionBlock`, and `SurveyModalActionBlock`, each rendered through `BaseLayout` with a CTA that opens the real action-block registry path (WEC-1879)
|
|
13
|
+
|
|
14
|
+
## [9.6.0] - 10-10-2026
|
|
15
|
+
|
|
16
|
+
- **CHANGED** - Tupac now builds `instance_slot` from ditto's block schema as `{ block, variant, data }` instead of `{ header_text, data_series }`; the V2 envelope path reads the new shape. `InstanceSlotData` (`core/types/Insights.ts`) is now schemaless and keyed by slot name (replacing the fixed `header_text`/`data_series` fields on `InstanceSlot`), with a new `slot<T>(data, name)` reader so each block names the slot and kind it expects at the read site; `block` is now optional, since tupac emits `instance_slot: {}` for a beat whose template has no ditto config. `TransactionBlock` reads `slot<InstanceSlotRow[]>(data, 'series')` and `slot<string>(data, 'header_text')`; `WithdrawalBlock` reads `data.series`. Scope is the V2 envelope path only — V1 blocks reading `instance_slot_data` are untouched, and `InsightsInstanceSlotData` is unchanged (WEC-1823)
|
|
17
|
+
- **CHANGED** - `CompactInsightCard`'s `WarningBadgeVisual` is now registered under ditto's `with_warning_badge` variant instead of `embedded` (a rename of an existing `createVariantBlock` entry, not a new one) — the variant names a look, not a surface; micro/notification continue to resolve `minimal`. Reads the flat `logo` slot, as does `microinsights/cards/InsightCard` (WEC-1823)
|
|
18
|
+
|
|
1
19
|
## [9.5.4] - 10-09-2026
|
|
2
20
|
|
|
3
21
|
- **ADDED** - `amount_input_modal_block`, the first modal action block: edits one whole-dollar setting in a dialog, picked by the CTA variant. `low_balance_threshold` (Low Account Balance "Edit Alert Settings") saves the threshold on the account's low-balance alert profile; `safety_net` (Savings Opportunity V2 "Set Reminder" / "Adjust Reminder") saves the safety net on the user insight profile. Saves run through `useCtaHandler`. Copy under `insights_feed.amount_input_modal`; mock beats, stories and `docs/action-blocks/amount-input-modal-block.md`.
|
|
@@ -1,53 +1,26 @@
|
|
|
1
|
-
import { useAccountStore as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
let s;
|
|
12
|
-
const { refreshAccounts: f } = _(), { loadWidget: d } = b(), { connect: p } = g(), [C, e] = r.useState(!1), [h, t] = r.useState(!1), { palette: { mode: S } } = v();
|
|
13
|
-
return r.useEffect(() => (o ? (e(!0), d({
|
|
14
|
-
mode: S,
|
|
15
|
-
...l
|
|
16
|
-
}).then((E) => {
|
|
17
|
-
s = new w({
|
|
18
|
-
container: `#${a}`,
|
|
19
|
-
style: {
|
|
20
|
-
border: "none",
|
|
21
|
-
height: "calc(100% - 62px)",
|
|
22
|
-
maxWidth: "450px",
|
|
23
|
-
position: "absolute",
|
|
24
|
-
width: "100%"
|
|
25
|
-
},
|
|
26
|
-
url: E.url,
|
|
27
|
-
onSsoUrlLoadError: () => {
|
|
28
|
-
e(!1), t(!0);
|
|
29
|
-
},
|
|
30
|
-
onLoad: () => {
|
|
31
|
-
e(!1), t(!1);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
})) : (e(!1), t(!1)), () => {
|
|
35
|
-
s?.unmount();
|
|
36
|
-
}), [o]), /* @__PURE__ */ n(x, {
|
|
37
|
-
ariaLabelClose: p.close_manage_connection_aria,
|
|
1
|
+
import { useAccountStore as i, useGlobalCopyStore as m } from "../context/hooks.es.js";
|
|
2
|
+
import s from "./drawer/Drawer.es.js";
|
|
3
|
+
import l from "./ConnectWidgetPanel.es.js";
|
|
4
|
+
import "react";
|
|
5
|
+
import { observer as f } from "mobx-react-lite";
|
|
6
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
7
|
+
var p = ({ loadWidgetProps: e, onClose: t, showConnectWidget: o, title: n }) => {
|
|
8
|
+
const { refreshAccounts: a } = i(), { connect: c } = m();
|
|
9
|
+
return /* @__PURE__ */ r(s, {
|
|
10
|
+
ariaLabelClose: c.close_manage_connection_aria,
|
|
38
11
|
isOpen: o,
|
|
39
12
|
onClose: () => {
|
|
40
|
-
|
|
13
|
+
t(), a();
|
|
41
14
|
},
|
|
42
|
-
title:
|
|
43
|
-
children: /* @__PURE__ */
|
|
44
|
-
|
|
45
|
-
|
|
15
|
+
title: n,
|
|
16
|
+
children: /* @__PURE__ */ r(l, {
|
|
17
|
+
isActive: o,
|
|
18
|
+
loadWidgetProps: e
|
|
46
19
|
})
|
|
47
20
|
});
|
|
48
|
-
},
|
|
21
|
+
}, D = f(p);
|
|
49
22
|
export {
|
|
50
|
-
|
|
23
|
+
D as default
|
|
51
24
|
};
|
|
52
25
|
|
|
53
26
|
//# sourceMappingURL=ConnectDrawer.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectDrawer.es.js","names":[],"sources":["../../../src/common/components/ConnectDrawer.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\
|
|
1
|
+
{"version":3,"file":"ConnectDrawer.es.js","names":[],"sources":["../../../src/common/components/ConnectDrawer.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ConnectWidgetPanel from './ConnectWidgetPanel'\nimport { Drawer, useAccountStore, useGlobalCopyStore } from '../../common'\n\ninterface ConnectDrawerProps {\n loadWidgetProps?: object\n onClose: () => void\n showConnectWidget: boolean\n title: string\n}\n\n/**\n * Drawer wrapper around `ConnectWidgetPanel` (SSO url via ConnectStore, the\n * iframe-based `@mxenabled/web-widget-sdk` ConnectWidget, loading/error\n * statuses) with an account refresh on close. Unchanged behaviour for its\n * existing callers; `ConnectWidgetActionBlock` renders `ConnectWidgetPanel`\n * directly instead, since `ActionBlockLayer` already supplies its own Drawer.\n */\nconst ConnectDrawer: React.FC<ConnectDrawerProps> = ({\n loadWidgetProps,\n onClose,\n showConnectWidget,\n title,\n}) => {\n const { refreshAccounts } = useAccountStore()\n const { connect: connectCopy } = useGlobalCopyStore()\n\n return (\n <Drawer\n ariaLabelClose={connectCopy.close_manage_connection_aria}\n isOpen={showConnectWidget}\n onClose={() => {\n onClose()\n refreshAccounts()\n }}\n title={title}\n >\n <ConnectWidgetPanel isActive={showConnectWidget} loadWidgetProps={loadWidgetProps} />\n </Drawer>\n )\n}\n\nexport default observer(ConnectDrawer)\n"],"mappings":";;;;;;AAoBA,IAAM,IAAA,CAA+C,EACnD,iBAAA,GACA,SAAA,GACA,mBAAA,GACA,OAAA,EAAA,MACI;AACJ,QAAM,EAAE,iBAAA,EAAA,IAAoB,EAAgB,GACtC,EAAE,SAAS,EAAA,IAAgB,EAAmB;AAEpD,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,gBAAgB,EAAY;AAAA,IAC5B,QAAQ;AAAA,IACR,SAAA,MAAe;AACb,MAAA,EAAQ,GACR,EAAgB;AAAA,IAClB;AAAA,IACO,OAAA;AAAA,IAEP,UAAA,gBAAA,EAAC,GAAD;AAAA,MAAoB,UAAU;AAAA,MAAoC,iBAAA;AAAA,IAAkB,CAAA;AAAA,EAC9E,CAAA;AAEZ,GAEA,IAAe,EAAS,CAAa"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface ConnectWidgetPanelProps {
|
|
3
|
+
loadWidgetProps?: object;
|
|
4
|
+
/** Mounts/unmounts the underlying iframe-based ConnectWidget. */
|
|
5
|
+
isActive: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare const _default: React.FunctionComponent<ConnectWidgetPanelProps>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useConnectStore as g } from "../context/hooks.es.js";
|
|
2
|
+
import { CONNECT_WIDGET_ID as s, MemberConnectionStatus as a } from "../constants/Connect.es.js";
|
|
3
|
+
import i from "./ConnectStatus.es.js";
|
|
4
|
+
import o from "react";
|
|
5
|
+
import { observer as h } from "mobx-react-lite";
|
|
6
|
+
import { jsx as l, jsxs as C } from "react/jsx-runtime";
|
|
7
|
+
import { useTheme as E } from "@mui/material/styles";
|
|
8
|
+
import { ConnectWidget as W } from "@mxenabled/web-widget-sdk";
|
|
9
|
+
var x = ({ isActive: r, loadWidgetProps: d }) => {
|
|
10
|
+
let n;
|
|
11
|
+
const { loadWidget: f } = g(), [m, e] = o.useState(!1), [u, t] = o.useState(!1), { palette: { mode: c } } = E();
|
|
12
|
+
return o.useEffect(() => (r ? (e(!0), f({
|
|
13
|
+
mode: c,
|
|
14
|
+
...d
|
|
15
|
+
}).then((p) => {
|
|
16
|
+
n = new W({
|
|
17
|
+
container: `#${s}`,
|
|
18
|
+
style: {
|
|
19
|
+
border: "none",
|
|
20
|
+
height: "calc(100% - 62px)",
|
|
21
|
+
maxWidth: "450px",
|
|
22
|
+
position: "absolute",
|
|
23
|
+
width: "100%"
|
|
24
|
+
},
|
|
25
|
+
url: p.url,
|
|
26
|
+
onSsoUrlLoadError: () => {
|
|
27
|
+
e(!1), t(!0);
|
|
28
|
+
},
|
|
29
|
+
onLoad: () => {
|
|
30
|
+
e(!1), t(!1);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
})) : (e(!1), t(!1)), () => {
|
|
34
|
+
n?.unmount();
|
|
35
|
+
}), [r]), /* @__PURE__ */ C("div", {
|
|
36
|
+
id: s,
|
|
37
|
+
children: [u && /* @__PURE__ */ l(i, { status: a.Error }), m && /* @__PURE__ */ l(i, { status: a.Loading })]
|
|
38
|
+
});
|
|
39
|
+
}, w = h(x);
|
|
40
|
+
export {
|
|
41
|
+
w as default
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=ConnectWidgetPanel.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectWidgetPanel.es.js","names":[],"sources":["../../../src/common/components/ConnectWidgetPanel.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { useTheme } from '@mui/material/styles'\nimport { ConnectWidget } from '@mxenabled/web-widget-sdk'\n\nimport ConnectStatus from './ConnectStatus'\nimport { CONNECT_WIDGET_ID, MemberConnectionStatus } from '../constants/Connect'\nimport { useConnectStore } from '../context/hooks'\n\nexport interface ConnectWidgetPanelProps {\n loadWidgetProps?: object\n /** Mounts/unmounts the underlying iframe-based ConnectWidget. */\n isActive: boolean\n}\n\n/**\n * The Connect widget itself (SSO url via ConnectStore, the iframe-based\n * `@mxenabled/web-widget-sdk` ConnectWidget, loading/error statuses) with no\n * `Drawer` of its own — content-only, so a caller can put it inside any\n * container (a `Drawer`, as `ConnectDrawer` does, or directly inside another\n * drawer's content slot, as `ConnectWidgetActionBlock` does).\n *\n * Extracted from `ConnectDrawer` so `ConnectWidgetActionBlock` can render just\n * the widget without nesting a second `Drawer` inside `ActionBlockLayer`'s.\n */\nconst ConnectWidgetPanel: React.FC<ConnectWidgetPanelProps> = ({ isActive, loadWidgetProps }) => {\n let connectWidget: ConnectWidget\n\n const { loadWidget } = useConnectStore()\n const [isLoading, setIsLoading] = React.useState(false)\n const [hasError, setHasError] = React.useState(false)\n const {\n palette: { mode },\n } = useTheme()\n\n React.useEffect(() => {\n if (isActive) {\n setIsLoading(true)\n loadWidget({ mode: mode, ...loadWidgetProps }).then((res) => {\n connectWidget = new ConnectWidget({\n container: `#${CONNECT_WIDGET_ID}`,\n style: {\n border: 'none',\n height: 'calc(100% - 62px)',\n maxWidth: '450px',\n position: 'absolute',\n width: '100%',\n },\n url: res.url,\n onSsoUrlLoadError: () => {\n setIsLoading(false)\n setHasError(true)\n },\n onLoad: () => {\n setIsLoading(false)\n setHasError(false)\n },\n })\n })\n } else {\n setIsLoading(false)\n setHasError(false)\n }\n\n return () => {\n connectWidget?.unmount()\n }\n }, [isActive])\n\n return (\n <div id={CONNECT_WIDGET_ID}>\n {hasError && <ConnectStatus status={MemberConnectionStatus.Error} />}\n {isLoading && <ConnectStatus status={MemberConnectionStatus.Loading} />}\n </div>\n )\n}\n\nexport default observer(ConnectWidgetPanel)\n"],"mappings":";;;;;;;;AAyBA,IAAM,IAAA,CAAyD,EAAE,UAAA,GAAU,iBAAA,EAAA,MAAsB;AAC/F,MAAI;AAEJ,QAAM,EAAE,YAAA,EAAA,IAAe,EAAgB,GACjC,CAAC,GAAW,CAAA,IAAgB,EAAM,SAAS,EAAK,GAChD,CAAC,GAAU,CAAA,IAAe,EAAM,SAAS,EAAK,GAC9C,EACJ,SAAS,EAAE,MAAA,EAAA,EAAA,IACT,EAAS;AAEb,SAAA,EAAM,UAAA,OACA,KACF,EAAa,EAAI,GACjB,EAAW;AAAA,IAAQ,MAAA;AAAA,IAAM,GAAG;AAAA,EAAgB,CAAC,EAAE,KAAA,CAAM,MAAQ;AAC3D,IAAA,IAAgB,IAAI,EAAc;AAAA,MAChC,WAAW,IAAI,CAAA;AAAA,MACf,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,KAAK,EAAI;AAAA,MACT,mBAAA,MAAyB;AACvB,QAAA,EAAa,EAAK,GAClB,EAAY,EAAI;AAAA,MAClB;AAAA,MACA,QAAA,MAAc;AACZ,QAAA,EAAa,EAAK,GAClB,EAAY,EAAK;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH,CAAC,MAED,EAAa,EAAK,GAClB,EAAY,EAAK,IAGnB,MAAa;AACX,IAAA,GAAe,QAAQ;AAAA,EACzB,IACC,CAAC,CAAQ,CAAC,GAGX,gBAAA,EAAC,OAAD;AAAA,IAAK,IAAI;AAAA,IAAT,UAAA,CACG,KAAY,gBAAA,EAAC,GAAD,EAAe,QAAQ,EAAuB,MAAQ,CAAA,GAClE,KAAa,gBAAA,EAAC,GAAD,EAAe,QAAQ,EAAuB,QAAU,CAAA,CACnE;AAAA;AAET,GAEA,IAAe,EAAS,CAAkB"}
|
|
@@ -9,6 +9,8 @@ export interface DialogProps extends Omit<MuiDialogProps, OwnedMuiProps> {
|
|
|
9
9
|
className?: string;
|
|
10
10
|
copy: CopyObject;
|
|
11
11
|
disablePrimaryButton?: boolean;
|
|
12
|
+
/** Render the footer action buttons. Default true; content-only dialogs (e.g. the insights survey modal) pass false. */
|
|
13
|
+
showActions?: boolean;
|
|
12
14
|
isOpen: boolean;
|
|
13
15
|
onClose: (event?: unknown, reason?: string) => void;
|
|
14
16
|
onPrimaryAction?: () => void;
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import { useScreenSize as
|
|
2
|
-
import { useFocusReturn as
|
|
3
|
-
import
|
|
4
|
-
import { DialogFooter as
|
|
5
|
-
import { jsx as o, jsxs as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
var
|
|
9
|
-
const { sx: a, ...
|
|
10
|
-
|
|
11
|
-
},
|
|
1
|
+
import { useScreenSize as H } from "../../hooks/useScreenSize.es.js";
|
|
2
|
+
import { useFocusReturn as j } from "../../hooks/useFocusReturn.es.js";
|
|
3
|
+
import k from "react";
|
|
4
|
+
import { DialogFooter as v, DialogHeader as C } from "@mxenabled/mxui";
|
|
5
|
+
import { jsx as o, jsxs as I } from "react/jsx-runtime";
|
|
6
|
+
import W from "@mui/material/Dialog";
|
|
7
|
+
import _ from "@mui/material/DialogContent";
|
|
8
|
+
var G = ({ className: l, copy: i, disablePrimaryButton: n = !1, showActions: c = !0, isOpen: e = !1, onClose: r, onPrimaryAction: m, primaryColor: d = "primary", primaryText: u = "Confirm", returnFocusTo: p, onSecondaryAction: t, secondaryColor: f = "primary", secondaryText: g = "Cancel", children: x, ...h }) => {
|
|
9
|
+
const { sx: a, ...D } = h, b = i?.title ?? "", y = i?.close_aria ?? "Close", s = k.useId(), { isSmallMobile: P } = H(), { onExited: S, onFocus: A, rootRef: F } = j(e, p), M = () => {
|
|
10
|
+
m?.(), r();
|
|
11
|
+
}, R = () => {
|
|
12
12
|
t && t(), r();
|
|
13
13
|
};
|
|
14
14
|
return /* @__PURE__ */ o("div", {
|
|
15
15
|
className: `mx-cmn-dialog ${l}`,
|
|
16
|
-
children: /* @__PURE__ */
|
|
16
|
+
children: /* @__PURE__ */ I(W, {
|
|
17
17
|
"aria-labelledby": s,
|
|
18
18
|
maxWidth: "xs",
|
|
19
19
|
onClose: r,
|
|
20
20
|
open: e,
|
|
21
21
|
sx: [{
|
|
22
22
|
"& .MuiDialog-paperScrollPaper": { backgroundColor: "background.default" },
|
|
23
|
-
...
|
|
23
|
+
...P && { "& .MuiDialog-paper": { minWidth: "100%" } },
|
|
24
24
|
height: "100%"
|
|
25
25
|
}, ...a ? [a] : []],
|
|
26
|
-
...
|
|
26
|
+
...D,
|
|
27
27
|
disableRestoreFocus: !0,
|
|
28
|
-
onFocus:
|
|
29
|
-
ref:
|
|
30
|
-
slotProps: { transition: { onExited:
|
|
28
|
+
onFocus: A,
|
|
29
|
+
ref: F,
|
|
30
|
+
slotProps: { transition: { onExited: S } },
|
|
31
31
|
children: [
|
|
32
|
-
/* @__PURE__ */ o(
|
|
32
|
+
/* @__PURE__ */ o(C, {
|
|
33
33
|
ariaHidden: !0,
|
|
34
34
|
copy: {
|
|
35
|
-
title:
|
|
36
|
-
close_aria:
|
|
35
|
+
title: b,
|
|
36
|
+
close_aria: y
|
|
37
37
|
},
|
|
38
38
|
id: s,
|
|
39
39
|
onClose: r,
|
|
40
40
|
truncate: !0
|
|
41
41
|
}),
|
|
42
|
-
/* @__PURE__ */ o(
|
|
42
|
+
/* @__PURE__ */ o(_, {
|
|
43
43
|
sx: { lineHeight: 1.5 },
|
|
44
|
-
children:
|
|
44
|
+
children: x
|
|
45
45
|
}),
|
|
46
|
-
/* @__PURE__ */ o(
|
|
46
|
+
c && /* @__PURE__ */ o(v, {
|
|
47
47
|
isPrimaryDisabled: n,
|
|
48
|
-
onPrimaryAction:
|
|
49
|
-
onSecondaryAction:
|
|
50
|
-
primaryColor:
|
|
51
|
-
primaryText:
|
|
52
|
-
secondaryColor:
|
|
53
|
-
secondaryText:
|
|
48
|
+
onPrimaryAction: M,
|
|
49
|
+
onSecondaryAction: R,
|
|
50
|
+
primaryColor: d,
|
|
51
|
+
primaryText: u,
|
|
52
|
+
secondaryColor: f,
|
|
53
|
+
secondaryText: g
|
|
54
54
|
})
|
|
55
55
|
]
|
|
56
56
|
})
|
|
57
57
|
});
|
|
58
58
|
};
|
|
59
59
|
export {
|
|
60
|
-
|
|
60
|
+
G as default
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
//# sourceMappingURL=Dialog.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.es.js","names":[],"sources":["../../../../src/common/components/dialog/Dialog.tsx"],"sourcesContent":["import React from 'react'\n\nimport MuiDialog from '@mui/material/Dialog'\nimport { DialogProps as MuiDialogProps } from '@mui/material/Dialog'\nimport DialogContent from '@mui/material/DialogContent'\nimport type { SxProps } from '@mui/material/styles'\n\nimport { DialogFooter, DialogHeader } from '@mxenabled/mxui'\nimport { useScreenSize } from '../../hooks'\nimport { useFocusReturn } from '../../hooks/useFocusReturn'\n\nexport type CopyObject = {\n close_aria?: string\n title: string\n}\n\ntype OwnedMuiProps =\n | 'disableRestoreFocus'\n | 'onFocus'\n | 'open'\n | 'slotProps'\n | 'slots'\n | 'TransitionComponent'\n | 'TransitionProps'\n\nexport interface DialogProps extends Omit<MuiDialogProps, OwnedMuiProps> {\n className?: string\n copy: CopyObject\n disablePrimaryButton?: boolean\n isOpen: boolean\n onClose: (event?: unknown, reason?: string) => void\n onPrimaryAction?: () => void\n onSecondaryAction?: () => void\n primaryColor?: 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n primaryText?: string\n /** Where focus goes on close. Takes precedence over the element that opened the dialog. */\n returnFocusTo?: React.RefObject<HTMLElement | null>\n secondaryColor?: 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n secondaryText?: string\n}\n\nconst Dialog: React.FC<React.PropsWithChildren<DialogProps>> = ({\n className,\n copy,\n disablePrimaryButton = false,\n isOpen = false,\n onClose,\n onPrimaryAction,\n primaryColor = 'primary',\n primaryText = 'Confirm',\n returnFocusTo,\n onSecondaryAction,\n secondaryColor = 'primary',\n secondaryText = 'Cancel',\n children,\n ...rest\n}) => {\n // Extract sx from rest to merge with Dialog's own styles instead of overwriting\n const { sx: restSx, ...restProps } = rest\n const title = copy?.title ?? ''\n const closeAria = copy?.close_aria ?? 'Close'\n\n // Label the dialog *by* its visible heading (WAI-ARIA APG) instead of a duplicate\n // aria-label, so screen readers announce the title once rather than name + heading.\n const titleId = React.useId()\n\n const { isSmallMobile } = useScreenSize()\n\n const { onExited, onFocus, rootRef } = useFocusReturn(isOpen, returnFocusTo)\n\n const handlePrimaryAction = () => {\n onPrimaryAction?.()\n onClose()\n }\n\n const handleSecondaryAction = () => {\n if (onSecondaryAction) {\n onSecondaryAction()\n }\n onClose()\n }\n\n return (\n <div className={`mx-cmn-dialog ${className}`}>\n <MuiDialog\n aria-labelledby={titleId}\n maxWidth=\"xs\"\n onClose={onClose}\n open={isOpen}\n sx={\n [\n {\n '& .MuiDialog-paperScrollPaper': { backgroundColor: 'background.default' },\n ...(isSmallMobile && { '& .MuiDialog-paper': { minWidth: '100%' } }),\n height: '100%',\n },\n ...(restSx ? [restSx] : []),\n ] as SxProps\n }\n {...restProps}\n disableRestoreFocus={true}\n onFocus={onFocus}\n ref={rootRef}\n slotProps={{ transition: { onExited } }}\n >\n <DialogHeader\n ariaHidden={true}\n copy={{ title, close_aria: closeAria }}\n id={titleId}\n onClose={onClose}\n truncate={true}\n />\n\n <DialogContent sx={{ lineHeight: 1.5 }}>{children}</DialogContent>\n\n <DialogFooter\n
|
|
1
|
+
{"version":3,"file":"Dialog.es.js","names":[],"sources":["../../../../src/common/components/dialog/Dialog.tsx"],"sourcesContent":["import React from 'react'\n\nimport MuiDialog from '@mui/material/Dialog'\nimport { DialogProps as MuiDialogProps } from '@mui/material/Dialog'\nimport DialogContent from '@mui/material/DialogContent'\nimport type { SxProps } from '@mui/material/styles'\n\nimport { DialogFooter, DialogHeader } from '@mxenabled/mxui'\nimport { useScreenSize } from '../../hooks'\nimport { useFocusReturn } from '../../hooks/useFocusReturn'\n\nexport type CopyObject = {\n close_aria?: string\n title: string\n}\n\ntype OwnedMuiProps =\n | 'disableRestoreFocus'\n | 'onFocus'\n | 'open'\n | 'slotProps'\n | 'slots'\n | 'TransitionComponent'\n | 'TransitionProps'\n\nexport interface DialogProps extends Omit<MuiDialogProps, OwnedMuiProps> {\n className?: string\n copy: CopyObject\n disablePrimaryButton?: boolean\n /** Render the footer action buttons. Default true; content-only dialogs (e.g. the insights survey modal) pass false. */\n showActions?: boolean\n isOpen: boolean\n onClose: (event?: unknown, reason?: string) => void\n onPrimaryAction?: () => void\n onSecondaryAction?: () => void\n primaryColor?: 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n primaryText?: string\n /** Where focus goes on close. Takes precedence over the element that opened the dialog. */\n returnFocusTo?: React.RefObject<HTMLElement | null>\n secondaryColor?: 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n secondaryText?: string\n}\n\nconst Dialog: React.FC<React.PropsWithChildren<DialogProps>> = ({\n className,\n copy,\n disablePrimaryButton = false,\n showActions = true,\n isOpen = false,\n onClose,\n onPrimaryAction,\n primaryColor = 'primary',\n primaryText = 'Confirm',\n returnFocusTo,\n onSecondaryAction,\n secondaryColor = 'primary',\n secondaryText = 'Cancel',\n children,\n ...rest\n}) => {\n // Extract sx from rest to merge with Dialog's own styles instead of overwriting\n const { sx: restSx, ...restProps } = rest\n const title = copy?.title ?? ''\n const closeAria = copy?.close_aria ?? 'Close'\n\n // Label the dialog *by* its visible heading (WAI-ARIA APG) instead of a duplicate\n // aria-label, so screen readers announce the title once rather than name + heading.\n const titleId = React.useId()\n\n const { isSmallMobile } = useScreenSize()\n\n const { onExited, onFocus, rootRef } = useFocusReturn(isOpen, returnFocusTo)\n\n const handlePrimaryAction = () => {\n onPrimaryAction?.()\n onClose()\n }\n\n const handleSecondaryAction = () => {\n if (onSecondaryAction) {\n onSecondaryAction()\n }\n onClose()\n }\n\n return (\n <div className={`mx-cmn-dialog ${className}`}>\n <MuiDialog\n aria-labelledby={titleId}\n maxWidth=\"xs\"\n onClose={onClose}\n open={isOpen}\n sx={\n [\n {\n '& .MuiDialog-paperScrollPaper': { backgroundColor: 'background.default' },\n ...(isSmallMobile && { '& .MuiDialog-paper': { minWidth: '100%' } }),\n height: '100%',\n },\n ...(restSx ? [restSx] : []),\n ] as SxProps\n }\n {...restProps}\n disableRestoreFocus={true}\n onFocus={onFocus}\n ref={rootRef}\n slotProps={{ transition: { onExited } }}\n >\n <DialogHeader\n ariaHidden={true}\n copy={{ title, close_aria: closeAria }}\n id={titleId}\n onClose={onClose}\n truncate={true}\n />\n\n <DialogContent sx={{ lineHeight: 1.5 }}>{children}</DialogContent>\n\n {showActions && (\n <DialogFooter\n isPrimaryDisabled={disablePrimaryButton}\n onPrimaryAction={handlePrimaryAction}\n onSecondaryAction={handleSecondaryAction}\n primaryColor={primaryColor}\n primaryText={primaryText}\n secondaryColor={secondaryColor}\n secondaryText={secondaryText}\n />\n )}\n </MuiDialog>\n </div>\n )\n}\n\nexport default Dialog\n"],"mappings":";;;;;;;AA2CA,IAAM,IAAA,CAA0D,EAC9D,WAAA,GACA,MAAA,GACA,sBAAA,IAAuB,IACvB,aAAA,IAAc,IACd,QAAA,IAAS,IACT,SAAA,GACA,iBAAA,GACA,cAAA,IAAe,WACf,aAAA,IAAc,WACd,eAAA,GACA,mBAAA,GACA,gBAAA,IAAiB,WACjB,eAAA,IAAgB,UAChB,UAAA,GACA,GAAG,EAAA,MACC;AAEJ,QAAM,EAAE,IAAI,GAAQ,GAAG,EAAA,IAAc,GAC/B,IAAQ,GAAM,SAAS,IACvB,IAAY,GAAM,cAAc,SAIhC,IAAU,EAAM,MAAM,GAEtB,EAAE,eAAA,EAAA,IAAkB,EAAc,GAElC,EAAE,UAAA,GAAU,SAAA,GAAS,SAAA,EAAA,IAAY,EAAe,GAAQ,CAAa,GAErE,IAAA,MAA4B;AAChC,IAAA,IAAkB,GAClB,EAAQ;AAAA,EACV,GAEM,IAAA,MAA8B;AAClC,IAAI,KACF,EAAkB,GAEpB,EAAQ;AAAA,EACV;AAEA,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,iBAAiB,CAAA;AAAA,IAC/B,UAAA,gBAAA,EAAC,GAAD;AAAA,MACE,mBAAiB;AAAA,MACjB,UAAS;AAAA,MACA,SAAA;AAAA,MACT,MAAM;AAAA,MACN,IACE,CACE;AAAA,QACE,iCAAiC,EAAE,iBAAiB,qBAAqB;AAAA,QACzE,GAAI,KAAiB,EAAE,sBAAsB,EAAE,UAAU,OAAO,EAAE;AAAA,QAClE,QAAQ;AAAA,MACV,GACA,GAAI,IAAS,CAAC,CAAM,IAAI,CAAC,CAC3B;AAAA,MAEF,GAAI;AAAA,MACJ,qBAAqB;AAAA,MACZ,SAAA;AAAA,MACT,KAAK;AAAA,MACL,WAAW,EAAE,YAAY,EAAE,UAAA,EAAS,EAAE;AAAA,MAnBxC,UAAA;AAAA,QAqBE,gBAAA,EAAC,GAAD;AAAA,UACE,YAAY;AAAA,UACZ,MAAM;AAAA,YAAE,OAAA;AAAA,YAAO,YAAY;AAAA,UAAU;AAAA,UACrC,IAAI;AAAA,UACK,SAAA;AAAA,UACT,UAAU;AAAA,QACX,CAAA;AAAA,QAED,gBAAA,EAAC,GAAD;AAAA,UAAe,IAAI,EAAE,YAAY,IAAI;AAAA,UAAI,UAAA;AAAA,QAAwB,CAAA;AAAA,QAEhE,KACC,gBAAA,EAAC,GAAD;AAAA,UACE,mBAAmB;AAAA,UACnB,iBAAiB;AAAA,UACjB,mBAAmB;AAAA,UACL,cAAA;AAAA,UACD,aAAA;AAAA,UACG,gBAAA;AAAA,UACD,eAAA;AAAA,QAChB,CAAA;AAAA,MAEM;AAAA;EACR,CAAA;AAET"}
|
|
@@ -10,6 +10,7 @@ export { default as MicroWidgetContainer } from './MicroWidgetContainer';
|
|
|
10
10
|
export { default as MiniWidgetContainer } from './MiniWidgetContainer';
|
|
11
11
|
export { WidgetContainer } from './WidgetContainer';
|
|
12
12
|
export { default as ConnectDrawer } from './ConnectDrawer';
|
|
13
|
+
export { default as ConnectWidgetPanel, type ConnectWidgetPanelProps } from './ConnectWidgetPanel';
|
|
13
14
|
export { default as CurrencyDialog } from './CurrencyDialog';
|
|
14
15
|
export { default as CurrencyInput } from './CurrencyInput';
|
|
15
16
|
export { default as Loader } from './Loader';
|
package/dist/common/index.es.js
CHANGED
|
@@ -4,9 +4,9 @@ import a from "./components/charts/StatusBar.es.js";
|
|
|
4
4
|
import p from "./components/charts/Donut.es.js";
|
|
5
5
|
import u from "./hooks/useAccountDisplayName.es.js";
|
|
6
6
|
import { useCombineEvents as C, useCombinePageviews as S } from "./hooks/useCombineEvents.es.js";
|
|
7
|
-
import { GlobalDataContext as c, GlobalDataProvider as
|
|
7
|
+
import { GlobalDataContext as c, GlobalDataProvider as d } from "./context/GlobalDataProvider.es.js";
|
|
8
8
|
import { WidgetContainerContext as E, WidgetContainerProvider as D } from "./context/WidgetContainerProvider.es.js";
|
|
9
|
-
import { useAccountStore as
|
|
9
|
+
import { useAccountStore as I, useActionContext as N, useAppConfig as P, useBudgetsStore as y, useCashflowStore as A, useCategoryStore as b, useDebtStore as O, useError as W, useEvent as G, useFinstrongStore as L, useGlobalCopyStore as R, useGlobalStore as U, useGlobalUiStore as v, useGoalStore as B, useHelpStore as h, useHoldingStore as w, useInsightsV2Store as x, useLoad as M, useMerchantStore as Y, useNetWorthStore as H, useNotificationStore as F, usePageView as z, useRecurringTransactionsStore as V, useSettingsStore as Z, useTransactionStore as k, useTrendsStore as q, useUserStore as K, useWidgetContainerProvider as j } from "./context/hooks.es.js";
|
|
10
10
|
import { useInsightsEnabled as Q } from "./hooks/useInsightsEnabled.es.js";
|
|
11
11
|
import { useScreenSize as $ } from "./hooks/useScreenSize.es.js";
|
|
12
12
|
import ro from "./hooks/usePrevious.es.js";
|
|
@@ -16,10 +16,10 @@ import { useWidgetHeaderStyles as lo } from "./hooks/useWidgetHeaderStyles.es.js
|
|
|
16
16
|
import { useWidgetLoadTimer as So } from "./hooks/useWidgetLoadTimer.es.js";
|
|
17
17
|
import co from "./components/dialog/Dialog.es.js";
|
|
18
18
|
import Eo from "./components/drawer/Drawer.es.js";
|
|
19
|
-
import
|
|
19
|
+
import _o from "./components/daterangeselector/DateRangeSelector.es.js";
|
|
20
20
|
import { ANALYTICS_EVENTS as No } from "./constants/Analytics.es.js";
|
|
21
|
-
import { CONNECTIONS_WIDGET_ID as
|
|
22
|
-
import { GlobalStore as
|
|
21
|
+
import { CONNECTIONS_WIDGET_ID as yo, CONNECT_WIDGET_ID as Ao, MemberConnectionStatus as bo } from "./constants/Connect.es.js";
|
|
22
|
+
import { GlobalStore as Wo } from "../core/stores/GlobalStore.es.js";
|
|
23
23
|
import { INCOME_ACCOUNT_TYPES as Lo, PAYMENT_ACCOUNT_TYPES as Ro, SPENDING_ACCOUNT_TYPES as Uo } from "./constants/Account.es.js";
|
|
24
24
|
import { RECURRENCE_COPY as Bo } from "./constants/ScheduledPayment.es.js";
|
|
25
25
|
import { LOADING_STATUS as wo } from "./constants/SpendingPlan.es.js";
|
|
@@ -34,108 +34,110 @@ import rr from "./components/MiniWidgetContainer.es.js";
|
|
|
34
34
|
import { GlobalAccountFilter as er } from "./components/GlobalAccountFilter.es.js";
|
|
35
35
|
import mr from "./components/Loader.es.js";
|
|
36
36
|
import { WidgetContainer as ar } from "./components/WidgetContainer.es.js";
|
|
37
|
-
import pr from "./components/
|
|
38
|
-
import ur from "./components/
|
|
39
|
-
import Cr from "./components/
|
|
40
|
-
import gr from "./components/
|
|
41
|
-
import
|
|
42
|
-
import Er from "./components/
|
|
43
|
-
import
|
|
44
|
-
import Nr from "./components/
|
|
45
|
-
import
|
|
46
|
-
import
|
|
47
|
-
import
|
|
48
|
-
import
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
37
|
+
import pr from "./components/ConnectWidgetPanel.es.js";
|
|
38
|
+
import ur from "./components/ConnectDrawer.es.js";
|
|
39
|
+
import Cr from "./components/CurrencyDialog.es.js";
|
|
40
|
+
import gr from "./components/CurrencyInput.es.js";
|
|
41
|
+
import dr from "./components/ResponsiveButton.es.js";
|
|
42
|
+
import Er from "./components/SearchBox.es.js";
|
|
43
|
+
import _r from "./components/SelectionBox.es.js";
|
|
44
|
+
import Nr from "./components/TabContentContainer.es.js";
|
|
45
|
+
import yr from "./components/IconBacking.es.js";
|
|
46
|
+
import br from "./components/DataRow.es.js";
|
|
47
|
+
import Wr from "./components/ZeroState.es.js";
|
|
48
|
+
import Lr from "./components/InformationTooltip.es.js";
|
|
49
|
+
import { ConnectCard as Ur } from "./components/ConnectCard.es.js";
|
|
50
|
+
import { CurrencyText as Br } from "./components/CurrencyText.es.js";
|
|
51
|
+
import { EmptyState as wr } from "./components/EmptyState.es.js";
|
|
52
|
+
import { ListItemAction as Mr } from "./components/ListItemAction.es.js";
|
|
53
|
+
import { ListItemRow as Hr } from "./components/ListItemRow.es.js";
|
|
54
|
+
import { ListItemWrapper as zr } from "./components/ListItemWrapper.es.js";
|
|
55
|
+
import { Select as Zr } from "./components/Select.es.js";
|
|
56
|
+
import { ToggleButtonListItem as qr } from "./components/listitems/ToggleButtonListItem.es.js";
|
|
57
|
+
import { ToggleListItem as jr } from "./components/listitems/ToggleListItem.es.js";
|
|
58
|
+
import { analyticsSession as Qr } from "./utils/Analytics.es.js";
|
|
59
|
+
import { getClientComponentOverrides as $r, getClientCustomizations as ot, getClientPaletteOptions as rt, getClientTheme as tt } from "./utils/Theme.es.js";
|
|
59
60
|
export {
|
|
60
61
|
No as ANALYTICS_EVENTS,
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
yo as CONNECTIONS_WIDGET_ID,
|
|
63
|
+
Ao as CONNECT_WIDGET_ID,
|
|
63
64
|
i as Calendar,
|
|
64
65
|
m as CalendarSelectionTypes,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
Cr as
|
|
69
|
-
|
|
66
|
+
Ur as ConnectCard,
|
|
67
|
+
ur as ConnectDrawer,
|
|
68
|
+
pr as ConnectWidgetPanel,
|
|
69
|
+
Cr as CurrencyDialog,
|
|
70
|
+
gr as CurrencyInput,
|
|
71
|
+
Br as CurrencyText,
|
|
70
72
|
Mo as DEFAULT_DONUT_SIZE,
|
|
71
73
|
Yo as DEFAULT_STROKE_WIDTH,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
br as DataRow,
|
|
75
|
+
_o as DateRangeSelector,
|
|
74
76
|
co as Dialog,
|
|
75
77
|
p as Donut,
|
|
76
78
|
Eo as Drawer,
|
|
77
|
-
|
|
79
|
+
wr as EmptyState,
|
|
78
80
|
Qo as Error,
|
|
79
81
|
jo as ErrorBoundary,
|
|
80
82
|
er as GlobalAccountFilter,
|
|
81
83
|
c as GlobalDataContext,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
d as GlobalDataProvider,
|
|
85
|
+
Wo as GlobalStore,
|
|
84
86
|
Lo as INCOME_ACCOUNT_TYPES,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
yr as IconBacking,
|
|
88
|
+
Lr as InformationTooltip,
|
|
87
89
|
wo as LOADING_STATUS,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
Mr as ListItemAction,
|
|
91
|
+
Hr as ListItemRow,
|
|
92
|
+
zr as ListItemWrapper,
|
|
91
93
|
mr as Loader,
|
|
92
|
-
|
|
94
|
+
bo as MemberConnectionStatus,
|
|
93
95
|
$o as MicroWidgetContainer,
|
|
94
96
|
rr as MiniWidgetContainer,
|
|
95
97
|
Zo as MultiSegmentDonut,
|
|
96
98
|
Ro as PAYMENT_ACCOUNT_TYPES,
|
|
97
99
|
Bo as RECURRENCE_COPY,
|
|
98
|
-
|
|
100
|
+
dr as ResponsiveButton,
|
|
99
101
|
Uo as SPENDING_ACCOUNT_TYPES,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
Er as SearchBox,
|
|
103
|
+
Zr as Select,
|
|
104
|
+
_r as SelectionBox,
|
|
103
105
|
qo as SingleSegmentDonut,
|
|
104
106
|
Fo as Sizes,
|
|
105
107
|
a as StatusBar,
|
|
106
108
|
zo as TOUCH_TARGET,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
109
|
+
Nr as TabContentContainer,
|
|
110
|
+
qr as ToggleButtonListItem,
|
|
111
|
+
jr as ToggleListItem,
|
|
110
112
|
ar as WidgetContainer,
|
|
111
113
|
E as WidgetContainerContext,
|
|
112
114
|
D as WidgetContainerProvider,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
+
Wr as ZeroState,
|
|
116
|
+
Qr as analyticsSession,
|
|
115
117
|
r as buildDynamicCopy,
|
|
116
118
|
t as buildPluralCopy,
|
|
117
119
|
eo as formatCurrency,
|
|
118
120
|
io as formatOrdinal,
|
|
119
121
|
mo as formatPercentage,
|
|
120
122
|
no as generateEqualIntervals,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
$r as getClientComponentOverrides,
|
|
124
|
+
ot as getClientCustomizations,
|
|
125
|
+
rt as getClientPaletteOptions,
|
|
126
|
+
tt as getClientTheme,
|
|
125
127
|
ao as getCurrencyCodes,
|
|
126
128
|
so as getPluralRules,
|
|
127
129
|
u as useAccountDisplayName,
|
|
128
|
-
|
|
130
|
+
I as useAccountStore,
|
|
129
131
|
N as useActionContext,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
P as useAppConfig,
|
|
133
|
+
y as useBudgetsStore,
|
|
134
|
+
A as useCashflowStore,
|
|
135
|
+
b as useCategoryStore,
|
|
134
136
|
C as useCombineEvents,
|
|
135
137
|
S as useCombinePageviews,
|
|
136
138
|
O as useDebtStore,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
+
W as useError,
|
|
140
|
+
G as useEvent,
|
|
139
141
|
L as useFinstrongStore,
|
|
140
142
|
R as useGlobalCopyStore,
|
|
141
143
|
U as useGlobalStore,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsightsInstanceSlotData.es.js","names":[],"sources":["../../../src/core/types/InsightsInstanceSlotData.ts"],"sourcesContent":["import type { DataSeries, Legends } from '../../core'\n\nexport interface InsightsInstanceSlotData\n extends\n Partial<BarChartBlockData>,\n Partial<BudgetBlockData>,\n Partial<DonutChartBlockData>,\n Partial<DoubleProgressBarBlockData>,\n Partial<ImageBlockData>,\n Partial<AccountBlockData>,\n Partial<SaveExtraBlockData>,\n Partial<StepChartBlockData>,\n Partial<SVGImageBlockData>,\n Partial<AccountSwitchBlockData>,\n Partial<TransactionDetailsBlockData>,\n Partial<CommonProps> {}\n\n//when any of the type is used more than one times, we can use the common props\ninterface CommonProps {\n amount?: number\n date?: string\n legends?: Legends[]\n category_guid?: string\n data_series?: DataSeries | DataSet[]\n transaction_guids?: string[]\n account_guids?: string[]\n primary_transaction_guid?: string\n}\n\n//BarChart Block\nexport interface BarChartBlockData {\n average_amount?: number\n ariaLabel?: string\n}\n\n//DonutChart Block\ninterface Main {\n value: string\n value_type: string\n label: string\n}\nexport interface DonutChartBlockData {\n main: Main\n}\n\n//DoubleBarChart Block\n// TODO : This has to be revisited again to update the below types based on API response once we have the final shape of the data_series for double bar chart from BE\nexport interface LegendProps extends Legends {\n amount: number\n formattedAmount: string\n label: string\n color?: string\n}\n\nexport interface DataSet extends DataSeries {\n ariaLabelComparison: string\n ariaLabelMain: string\n comparison: number\n formattedComparison: string\n formattedMain: string\n label: string\n main: number\n}\n\n//DoubleProgressBar Block\n\ninterface DoubleProgressBarProps {\n label: string\n value: number\n}\nexport interface DoubleProgressBarBlockData {\n doubleProgressBar: {\n previous: DoubleProgressBarProps\n latest: DoubleProgressBarProps\n }\n}\n\n//Image Block\nexport interface ImageBlockData {\n image: string\n}\n\n//Account Block\nexport interface AccountBlockData {\n sub_text: string\n institution_guid?: string\n institution_name?: string\n icon_name?: string\n /** Header bar text (standard card), or the colored category strip label (deposit cards). */\n header_text?: string\n // Deposit variants (Unified Deposit, Unified Deposit Emergency Fund, Savings Account Deposit)\n /** Merchant guid — renders a real merchant logo in the deposit card when present. */\n merchant_guid?: string\n /** Merchant display name — logo alt text and the payer line under the amount. */\n merchant_name?: string\n /** Secondary label beside the amount, e.g. `On {date}, you saved` or `Balance as of MM/DD/YY`. */\n label?: string\n}\n\nexport interface SaveExtraBlockData {\n /** Styled segments `[lead-in, amount digits, trailing copy]`, e.g. `['Save an extra', '100', 'to help your funds grow']`. */\n primary_text?: string[]\n /** Styled segments `[projected balance, caption]`, e.g. `['$8,313.87', 'After payday & projected expenses']`. */\n secondary_text?: string[]\n /** MakeTransfer drilldown: available balance (both variants). */\n available_balance?: number\n /** SAVE_ENOUGH_TO_LIVE_ON: average monthly spend. */\n avg_monthly_spend?: number\n /** SAVE_ENOUGH_TO_LIVE_ON: how long the balance lasts, overlaid on the timeline SVG (e.g. \"2 months, 11 days\"). */\n time_period?: string\n /** SAVE_AN_EXTRA_100: upcoming expenses (the \"Expenses\" figure). */\n upcoming_expenses?: number\n /** SAVE_AN_EXTRA_100: total remaining after expenses. */\n total_remaining?: number\n /** SAVE_ENOUGH_TO_LIVE_ON: date for the \"Your available balances as of {date}\" line. */\n date?: string\n}\n\n//AccountSwitch Block
|
|
1
|
+
{"version":3,"file":"InsightsInstanceSlotData.es.js","names":[],"sources":["../../../src/core/types/InsightsInstanceSlotData.ts"],"sourcesContent":["import type { DataSeries, Legends } from '../../core'\n\nexport interface InsightsInstanceSlotData\n extends\n Partial<BarChartBlockData>,\n Partial<BudgetBlockData>,\n Partial<DonutChartBlockData>,\n Partial<DoubleProgressBarBlockData>,\n Partial<ImageBlockData>,\n Partial<AccountBlockData>,\n Partial<SaveExtraBlockData>,\n Partial<StepChartBlockData>,\n Partial<SVGImageBlockData>,\n Partial<AccountSwitchBlockData>,\n Partial<TransactionDetailsBlockData>,\n Partial<CommonProps> {}\n\n//when any of the type is used more than one times, we can use the common props\ninterface CommonProps {\n amount?: number\n date?: string\n legends?: Legends[]\n category_guid?: string\n data_series?: DataSeries | DataSet[]\n transaction_guids?: string[]\n account_guids?: string[]\n primary_transaction_guid?: string\n}\n\n//BarChart Block\nexport interface BarChartBlockData {\n average_amount?: number\n ariaLabel?: string\n}\n\n//DonutChart Block\ninterface Main {\n value: string\n value_type: string\n label: string\n}\nexport interface DonutChartBlockData {\n main: Main\n}\n\n//DoubleBarChart Block\n// TODO : This has to be revisited again to update the below types based on API response once we have the final shape of the data_series for double bar chart from BE\nexport interface LegendProps extends Legends {\n amount: number\n formattedAmount: string\n label: string\n color?: string\n}\n\nexport interface DataSet extends DataSeries {\n ariaLabelComparison: string\n ariaLabelMain: string\n comparison: number\n formattedComparison: string\n formattedMain: string\n label: string\n main: number\n}\n\n//DoubleProgressBar Block\n\ninterface DoubleProgressBarProps {\n label: string\n value: number\n}\nexport interface DoubleProgressBarBlockData {\n doubleProgressBar: {\n previous: DoubleProgressBarProps\n latest: DoubleProgressBarProps\n }\n}\n\n//Image Block\nexport interface ImageBlockData {\n image: string\n}\n\n//Account Block\nexport interface AccountBlockData {\n sub_text: string\n institution_guid?: string\n institution_name?: string\n icon_name?: string\n /** Header bar text (standard card), or the colored category strip label (deposit cards). */\n header_text?: string\n // Deposit variants (Unified Deposit, Unified Deposit Emergency Fund, Savings Account Deposit)\n /** Merchant guid — renders a real merchant logo in the deposit card when present. */\n merchant_guid?: string\n /** Merchant display name — logo alt text and the payer line under the amount. */\n merchant_name?: string\n /** Secondary label beside the amount, e.g. `On {date}, you saved` or `Balance as of MM/DD/YY`. */\n label?: string\n}\n\nexport interface SaveExtraBlockData {\n /** Styled segments `[lead-in, amount digits, trailing copy]`, e.g. `['Save an extra', '100', 'to help your funds grow']`. */\n primary_text?: string[]\n /** Styled segments `[projected balance, caption]`, e.g. `['$8,313.87', 'After payday & projected expenses']`. */\n secondary_text?: string[]\n /** MakeTransfer drilldown: available balance (both variants). */\n available_balance?: number\n /** SAVE_ENOUGH_TO_LIVE_ON: average monthly spend. */\n avg_monthly_spend?: number\n /** SAVE_ENOUGH_TO_LIVE_ON: how long the balance lasts, overlaid on the timeline SVG (e.g. \"2 months, 11 days\"). */\n time_period?: string\n /** SAVE_AN_EXTRA_100: upcoming expenses (the \"Expenses\" figure). */\n upcoming_expenses?: number\n /** SAVE_AN_EXTRA_100: total remaining after expenses. */\n total_remaining?: number\n /** SAVE_ENOUGH_TO_LIVE_ON: date for the \"Your available balances as of {date}\" line. */\n date?: string\n}\n\n// AccountSwitch Block. State comes from `instance_slot.variant`, not a data flag.\nexport interface AccountSwitchBlockData {\n discovered_institution_guid: string\n discovered_institution_name: string\n held_institution_guid: string\n held_institution_name: string\n}\n\n// StepChart Block\nexport interface StepChartBlockData {\n completed_steps: number\n label_1: string\n label_2?: string\n}\n\n//Budgets Blocks\nexport enum BudgetTierType {\n LOW_BUDGET_TIER = 'LOW',\n MEDIUM_BUDGET_TIER = 'MEDIUM',\n OFF_TRACK_BUDGET_TIER = 'OFF_TRACK',\n}\n\nexport type BudgetTierValue = `${BudgetTierType}`\n\nexport interface BudgetLocalizedPayload {\n primary_text?: string\n amount_left_label?: string\n spent_label?: string\n budgeted_label?: string\n}\n\nexport interface BudgetBlockData {\n budget_percent: number\n budget_tier: BudgetTierValue\n category_guid?: string\n merchant_guid?: string\n spent_amount: number\n budgeted_amount: number\n localized_payload: BudgetLocalizedPayload\n}\n\nexport interface SVGImageBlockData {\n isCIBC?: boolean\n}\n\n// TransactionDetails Action Block\n// The drawer's subject is `InsightsPayload.primary_transaction_guid`; only action configuration\n// lives here.\nexport interface TransactionDetailsBlockData {\n /** `TopActions` member names, e.g. `['Category', 'Date', 'Memo']`. Omit for the defaults. */\n top_actions?: string[]\n /** `BottomActions` member names, e.g. `['MerchantBudget', 'HideTransaction']`. Omit for defaults. */\n bottom_actions?: string[]\n}\n"],"mappings":"AAsIA,IAAY,IAAL,0BAAA,GAAA;AACL,SAAA,EAAA,kBAAA,OACA,EAAA,qBAAA,UACA,EAAA,wBAAA;AACF,GAAA,CAAA,CAAA"}
|