@mx-cartographer/experiences 9.1.3-alpha.al0 → 9.1.3
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 +6 -0
- package/dist/{UserStore-BjnNCO5a.mjs → UserStore-E5WvBXaY.mjs} +35 -11
- package/dist/{UserStore-BjnNCO5a.mjs.map → UserStore-E5WvBXaY.mjs.map} +1 -1
- package/dist/common/index.es.js +1 -1
- package/dist/core/index.es.js +1 -1
- package/dist/dashboard/index.es.js +71 -93
- package/dist/dashboard/index.es.js.map +1 -1
- package/package.json +1 -1
package/dist/common/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as Y } from "../UserStore-
|
|
1
|
+
import { l as Y } from "../UserStore-E5WvBXaY.mjs";
|
|
2
2
|
import { b as $, a as H } from "../Localization-DnoVyBNK.mjs";
|
|
3
3
|
import { f as j, b as V, a as K, c as Z, g as J, d as X } from "../NumberFormatting--XMeeBfr.mjs";
|
|
4
4
|
import { C as rr, a as er, b as or } from "../CurrencyDialog-DumQCTPO.mjs";
|
package/dist/core/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as g, a as m, b as C, c as N, d as h, B as f, e as E, f as D, g as b, C as I, h as M, i as R, j as B, D as L, F as G, k as _, G as H, l as P, m as U, n as x, o as O, H as F, p as k, q as v, r as w, M as W, s as Y, N as $, t as q, u as K, R as j, v as z, S as J, w as Q, T as X, x as Z, y as V, U as tt, z as at, W as st } from "../UserStore-
|
|
1
|
+
import { A as g, a as m, b as C, c as N, d as h, B as f, e as E, f as D, g as b, C as I, h as M, i as R, j as B, D as L, F as G, k as _, G as H, l as P, m as U, n as x, o as O, H as F, p as k, q as v, r as w, M as W, s as Y, N as $, t as q, u as K, R as j, v as z, S as J, w as Q, T as X, x as Z, y as V, U as tt, z as at, W as st } from "../UserStore-E5WvBXaY.mjs";
|
|
2
2
|
import { b as ot, a as nt, d as rt, c as it, A as ct, C as pt, e as At, E as St, M as ut, N as lt, P as Tt, f as yt, g as dt, S as gt } from "../Account-DR7Plrqy.mjs";
|
|
3
3
|
import { A as Ct, B as Nt, I as ht, N as ft } from "../Notification-DTNYSd8P.mjs";
|
|
4
4
|
import { F as n } from "../GlobalCopyApi-wcnDUzMV.mjs";
|
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
2
|
-
import
|
|
3
|
-
import { observer as
|
|
1
|
+
import { jsx as e, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import o from "react";
|
|
3
|
+
import { observer as p } from "mobx-react-lite";
|
|
4
4
|
import u from "@mui/material/Grid";
|
|
5
5
|
import m from "@mui/material/Skeleton";
|
|
6
6
|
import s from "@mui/material/Stack";
|
|
7
|
-
import { useTheme as
|
|
8
|
-
import { e as w, u as
|
|
9
|
-
import
|
|
10
|
-
import { Icon as
|
|
11
|
-
import { useMediaQuery as
|
|
12
|
-
import { usePostHog as G } from "posthog-js/react";
|
|
7
|
+
import { useTheme as S } from "@mui/material/styles";
|
|
8
|
+
import { e as w, u as b, i as v } from "../hooks-97sNJ_lf.mjs";
|
|
9
|
+
import C from "@mui/material/Paper";
|
|
10
|
+
import { Icon as _, H2 as M, P as D } from "@mxenabled/mxui";
|
|
11
|
+
import { useMediaQuery as G } from "@mui/system";
|
|
13
12
|
import z from "@mui/material/Box";
|
|
14
|
-
import
|
|
15
|
-
import
|
|
13
|
+
import W from "@mui/material/Button";
|
|
14
|
+
import k from "@mui/material/IconButton";
|
|
16
15
|
import A from "@mui/material/Tooltip";
|
|
17
16
|
import I from "@mui/material/useMediaQuery";
|
|
18
|
-
import { G as
|
|
17
|
+
import { G as B } from "../GlobalAccountFilter-BhzR5Vb1.mjs";
|
|
19
18
|
import { u as y } from "../useScreenSize-mWpmnh5w.mjs";
|
|
20
|
-
import { C as
|
|
21
|
-
import { u as
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
appDataStore: { banner:
|
|
19
|
+
import { C as F } from "../ConnectDrawer-CW4LA3H3.mjs";
|
|
20
|
+
import { u as R } from "../useWidgetLoadTimer-B0tB-yzL.mjs";
|
|
21
|
+
const T = p(() => {
|
|
22
|
+
const t = S(), {
|
|
23
|
+
appDataStore: { banner: r, loadBanner: i, user: a }
|
|
25
24
|
} = w();
|
|
26
|
-
return
|
|
25
|
+
return o.useEffect(() => {
|
|
27
26
|
i().finally();
|
|
28
|
-
}, [
|
|
27
|
+
}, [a]), r?.image_url ? /* @__PURE__ */ e(
|
|
29
28
|
s,
|
|
30
29
|
{
|
|
31
30
|
sx: {
|
|
@@ -36,7 +35,7 @@ const F = h(() => {
|
|
|
36
35
|
children: /* @__PURE__ */ e(
|
|
37
36
|
"a",
|
|
38
37
|
{
|
|
39
|
-
href:
|
|
38
|
+
href: r?.redirect_url,
|
|
40
39
|
rel: "noreferrer",
|
|
41
40
|
style: {
|
|
42
41
|
width: "100%"
|
|
@@ -46,11 +45,11 @@ const F = h(() => {
|
|
|
46
45
|
"img",
|
|
47
46
|
{
|
|
48
47
|
alt: "",
|
|
49
|
-
src:
|
|
48
|
+
src: r.image_url,
|
|
50
49
|
style: {
|
|
51
50
|
width: "100%",
|
|
52
51
|
height: "auto",
|
|
53
|
-
border: `1px solid ${
|
|
52
|
+
border: `1px solid ${t.palette.grey[300]}`
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
)
|
|
@@ -58,120 +57,99 @@ const F = h(() => {
|
|
|
58
57
|
)
|
|
59
58
|
}
|
|
60
59
|
) : null;
|
|
61
|
-
}),
|
|
62
|
-
const { common:
|
|
63
|
-
return /* @__PURE__ */ e(z, { children: i ? /* @__PURE__ */ e(A, { id: "add-accounts", placement: "bottom", title:
|
|
64
|
-
|
|
60
|
+
}), $ = ({ handleConnectClick: t }) => {
|
|
61
|
+
const { common: r } = b(), i = I("(max-width: 700px)");
|
|
62
|
+
return /* @__PURE__ */ e(z, { children: i ? /* @__PURE__ */ e(A, { id: "add-accounts", placement: "bottom", title: r.add_accounts, children: /* @__PURE__ */ e(
|
|
63
|
+
k,
|
|
65
64
|
{
|
|
66
65
|
"aria-controls": "add_accounts",
|
|
67
66
|
"aria-describedby": "add-accounts",
|
|
68
67
|
"aria-haspopup": !0,
|
|
69
|
-
"aria-label":
|
|
68
|
+
"aria-label": r.add_accounts,
|
|
70
69
|
color: "primary",
|
|
71
|
-
onClick:
|
|
72
|
-
children: /* @__PURE__ */ e(
|
|
70
|
+
onClick: t,
|
|
71
|
+
children: /* @__PURE__ */ e(_, { name: "add", size: 24 })
|
|
73
72
|
}
|
|
74
73
|
) }) : /* @__PURE__ */ e(
|
|
75
|
-
|
|
74
|
+
W,
|
|
76
75
|
{
|
|
77
76
|
"aria-controls": "add_accounts",
|
|
78
77
|
"aria-haspopup": !0,
|
|
79
|
-
"aria-label":
|
|
80
|
-
onClick:
|
|
81
|
-
startIcon: /* @__PURE__ */ e(
|
|
78
|
+
"aria-label": r.add_accounts,
|
|
79
|
+
onClick: t,
|
|
80
|
+
startIcon: /* @__PURE__ */ e(_, { name: "add", size: 24 }),
|
|
82
81
|
sx: {
|
|
83
82
|
p: 12,
|
|
84
83
|
whiteSpace: "nowrap",
|
|
85
84
|
minWidth: "max-content"
|
|
86
85
|
},
|
|
87
86
|
variant: "text",
|
|
88
|
-
children:
|
|
87
|
+
children: r.add_accounts
|
|
89
88
|
}
|
|
90
89
|
) });
|
|
91
|
-
},
|
|
92
|
-
const r = G()
|
|
93
|
-
return /* @__PURE__ */ e(
|
|
94
|
-
"button",
|
|
95
|
-
{
|
|
96
|
-
onClick: () => {
|
|
97
|
-
r.captureException(new Error("PostHog experiences source maps test"));
|
|
98
|
-
},
|
|
99
|
-
style: {
|
|
100
|
-
backgroundColor: "red",
|
|
101
|
-
color: "white",
|
|
102
|
-
border: "none",
|
|
103
|
-
padding: "8px 16px",
|
|
104
|
-
borderRadius: 4,
|
|
105
|
-
cursor: "pointer",
|
|
106
|
-
marginRight: 8
|
|
107
|
-
},
|
|
108
|
-
children: "Test Experiences Error"
|
|
109
|
-
}
|
|
110
|
-
);
|
|
111
|
-
}, j = () => {
|
|
112
|
-
const [r, t] = n.useState(!1), i = D("(max-width:320px)"), { common: c, connect: g } = _(), { config: d } = S(), { isMobile: f } = y(), x = () => {
|
|
90
|
+
}, j = p($), Q = () => {
|
|
91
|
+
const [t, r] = o.useState(!1), i = G("(max-width:320px)"), { common: a, connect: g } = b(), { config: d } = v(), { isMobile: f } = y(), x = () => {
|
|
113
92
|
const l = (/* @__PURE__ */ new Date()).getHours();
|
|
114
|
-
return l > 1 && l < 12 ?
|
|
93
|
+
return l > 1 && l < 12 ? a.good_morning : l >= 12 && l < 18 ? a.good_afternoon : a.good_evening;
|
|
115
94
|
};
|
|
116
|
-
return /* @__PURE__ */
|
|
117
|
-
/* @__PURE__ */ e(
|
|
118
|
-
/* @__PURE__ */
|
|
95
|
+
return /* @__PURE__ */ c(o.Fragment, { children: [
|
|
96
|
+
/* @__PURE__ */ e(C, { sx: { gap: 12, mb: f ? 24 : 0, p: 24 }, children: /* @__PURE__ */ c(s, { alignItems: "center", flexDirection: "row", justifyContent: "space-between", children: [
|
|
97
|
+
/* @__PURE__ */ c(s, { children: [
|
|
119
98
|
/* @__PURE__ */ e(M, { variant: i ? "h2" : "h1", children: x() }),
|
|
120
|
-
/* @__PURE__ */ e(
|
|
99
|
+
/* @__PURE__ */ e(D, { color: "text.secondary", children: a.heres_your_spending_overview })
|
|
121
100
|
] }),
|
|
122
|
-
/* @__PURE__ */
|
|
123
|
-
d.show_connections_widget_in_master && /* @__PURE__ */ e(
|
|
124
|
-
/* @__PURE__ */ e(
|
|
125
|
-
/* @__PURE__ */ e(R, {})
|
|
101
|
+
/* @__PURE__ */ c(s, { flexDirection: "row", children: [
|
|
102
|
+
d.show_connections_widget_in_master && /* @__PURE__ */ e(j, { handleConnectClick: () => r(!0) }),
|
|
103
|
+
/* @__PURE__ */ e(B, {})
|
|
126
104
|
] })
|
|
127
105
|
] }) }),
|
|
128
|
-
|
|
129
|
-
|
|
106
|
+
t && /* @__PURE__ */ e(
|
|
107
|
+
F,
|
|
130
108
|
{
|
|
131
|
-
onClose: () =>
|
|
132
|
-
showConnectWidget:
|
|
109
|
+
onClose: () => r(!1),
|
|
110
|
+
showConnectWidget: t,
|
|
133
111
|
title: g.mini_title
|
|
134
112
|
}
|
|
135
113
|
)
|
|
136
114
|
] });
|
|
137
|
-
},
|
|
138
|
-
var
|
|
139
|
-
const
|
|
140
|
-
const { isDesktop: i, isMobile:
|
|
141
|
-
|
|
115
|
+
}, H = p(Q);
|
|
116
|
+
var h = /* @__PURE__ */ ((t) => (t[t.Main = 0] = "Main", t[t.RightSide = 1] = "RightSide", t[t.Disabled = 2] = "Disabled", t))(h || {});
|
|
117
|
+
const P = ({ widgets: t, isLoading: r }) => {
|
|
118
|
+
const { isDesktop: i, isMobile: a } = y(), { copyStore: g } = w();
|
|
119
|
+
R({
|
|
142
120
|
widgetName: "Dashboard",
|
|
143
|
-
isLoaded: !
|
|
121
|
+
isLoaded: !r
|
|
144
122
|
});
|
|
145
|
-
const d =
|
|
146
|
-
() =>
|
|
147
|
-
[
|
|
148
|
-
), f =
|
|
149
|
-
() => d.filter((
|
|
123
|
+
const d = o.useMemo(
|
|
124
|
+
() => t.filter((n) => n.location !== h.Disabled).sort((n, l) => n.index - l.index),
|
|
125
|
+
[t]
|
|
126
|
+
), f = o.useMemo(
|
|
127
|
+
() => d.filter((n) => n.location === h.Main),
|
|
150
128
|
[d]
|
|
151
|
-
), x =
|
|
152
|
-
() => d.filter((
|
|
129
|
+
), x = o.useMemo(
|
|
130
|
+
() => d.filter((n) => n.location === h.RightSide),
|
|
153
131
|
[d]
|
|
154
132
|
);
|
|
155
|
-
return /* @__PURE__ */
|
|
156
|
-
/* @__PURE__ */ e(u, { size: 12, sx: { pt: 16 }, children: g.isInitialized && /* @__PURE__ */ e(
|
|
157
|
-
/* @__PURE__ */
|
|
158
|
-
/* @__PURE__ */ e(
|
|
159
|
-
|
|
133
|
+
return /* @__PURE__ */ c(u, { container: !0, spacing: a ? 0 : 24, children: [
|
|
134
|
+
/* @__PURE__ */ e(u, { size: 12, sx: { pt: 16 }, children: g.isInitialized && /* @__PURE__ */ e(H, {}) }),
|
|
135
|
+
/* @__PURE__ */ c(u, { size: { xs: 12, lg: 8 }, children: [
|
|
136
|
+
/* @__PURE__ */ e(T, {}),
|
|
137
|
+
r && /* @__PURE__ */ c(s, { direction: "column", spacing: 24, children: [
|
|
160
138
|
/* @__PURE__ */ e(m, { height: 100, variant: "rounded", width: "100%" }),
|
|
161
139
|
/* @__PURE__ */ e(m, { height: 300, variant: "rounded", width: "100%" }),
|
|
162
140
|
/* @__PURE__ */ e(m, { height: 300, variant: "rounded", width: "100%" })
|
|
163
141
|
] }),
|
|
164
|
-
!
|
|
142
|
+
!r && /* @__PURE__ */ e(s, { direction: "column", spacing: 24, children: i ? f.map((n) => /* @__PURE__ */ e(o.Fragment, { children: n.component }, n.index)) : d.map((n) => /* @__PURE__ */ e(o.Fragment, { children: n.component }, n.index)) })
|
|
165
143
|
] }),
|
|
166
|
-
i && /* @__PURE__ */ e(u, { size: { lg: 4 }, children:
|
|
144
|
+
i && /* @__PURE__ */ e(u, { size: { lg: 4 }, children: r ? /* @__PURE__ */ c(s, { direction: "column", spacing: 24, children: [
|
|
167
145
|
/* @__PURE__ */ e(m, { height: 200, variant: "rounded", width: "100%" }),
|
|
168
146
|
/* @__PURE__ */ e(m, { height: 100, variant: "rounded", width: "100%" }),
|
|
169
147
|
/* @__PURE__ */ e(m, { height: 300, variant: "rounded", width: "100%" })
|
|
170
|
-
] }) : /* @__PURE__ */ e(s, { direction: "column", spacing: 24, children: x.map((
|
|
148
|
+
] }) : /* @__PURE__ */ e(s, { direction: "column", spacing: 24, children: x.map((n) => /* @__PURE__ */ e(o.Fragment, { children: n.component }, n.index)) }) })
|
|
171
149
|
] });
|
|
172
|
-
},
|
|
150
|
+
}, se = p(P);
|
|
173
151
|
export {
|
|
174
|
-
|
|
175
|
-
|
|
152
|
+
se as Dashboard,
|
|
153
|
+
h as DashboardLocation
|
|
176
154
|
};
|
|
177
155
|
//# sourceMappingURL=index.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/common/components/Banner.tsx","../../src/common/components/addaccounts/AddAccounts.tsx","../../src/dashboard/Greeting.tsx","../../src/dashboard/constants/Dashboard.ts","../../src/dashboard/Dashboard.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useTheme } from '@mui/material/styles'\nimport Stack from '@mui/material/Stack'\n\nimport { useGlobalStore } from '..'\n\nexport const Banner = observer(() => {\n const theme = useTheme()\n const {\n appDataStore: { banner, loadBanner, user },\n } = useGlobalStore()\n\n React.useEffect(() => {\n loadBanner().finally()\n }, [user])\n\n if (!banner?.image_url) {\n return null\n }\n\n return (\n <Stack\n sx={{\n alignItems: 'center',\n width: '100%',\n mb: 24,\n }}\n >\n <a\n href={banner?.redirect_url}\n rel=\"noreferrer\"\n style={{\n width: '100%',\n }}\n target=\"_blank\"\n >\n <img\n alt=\"\"\n src={banner.image_url}\n style={{\n width: '100%',\n height: 'auto',\n border: `1px solid ${theme.palette.grey['300']}`,\n }}\n />\n </a>\n </Stack>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport IconButton from '@mui/material/IconButton'\nimport Tooltip from '@mui/material/Tooltip'\nimport useMediaQuery from '@mui/material/useMediaQuery'\n\nimport { Icon } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../../common'\n\ninterface AddAccountsProps {\n handleConnectClick: () => void\n}\n\nconst AddAccounts = ({ handleConnectClick }: AddAccountsProps) => {\n const { common: copy } = useGlobalCopyStore()\n const isSmallerThan700 = useMediaQuery('(max-width: 700px)')\n\n return (\n <Box>\n {isSmallerThan700 ? (\n <Tooltip id=\"add-accounts\" placement=\"bottom\" title={copy.add_accounts}>\n <IconButton\n aria-controls=\"add_accounts\"\n aria-describedby=\"add-accounts\"\n aria-haspopup={true}\n aria-label={copy.add_accounts}\n color=\"primary\"\n onClick={handleConnectClick}\n >\n <Icon name=\"add\" size={24} />\n </IconButton>\n </Tooltip>\n ) : (\n <Button\n aria-controls=\"add_accounts\"\n aria-haspopup={true}\n aria-label={copy.add_accounts}\n onClick={handleConnectClick}\n startIcon={<Icon name=\"add\" size={24} />}\n sx={{\n p: 12,\n whiteSpace: 'nowrap',\n minWidth: 'max-content',\n }}\n variant=\"text\"\n >\n {copy.add_accounts}\n </Button>\n )}\n </Box>\n )\n}\n\nexport default observer(AddAccounts)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport Paper from '@mui/material/Paper'\n\nimport { H2, P } from '@mxenabled/mxui'\nimport { useMediaQuery } from '@mui/system'\n\nimport { ConnectDrawer, useAppConfig, useGlobalCopyStore, useScreenSize } from '../common'\nimport { usePostHog } from 'posthog-js/react'\n\nimport AddAccounts from '../common/components/addaccounts/AddAccounts'\nimport { GlobalAccountFilter } from '../common/components/GlobalAccountFilter'\n\nconst TestExperiencesError = () => {\n const posthog = usePostHog()\n\n const handleClick = () => {\n posthog.captureException(new Error('PostHog experiences source maps test'))\n }\n\n return (\n <button\n onClick={handleClick}\n style={{\n backgroundColor: 'red',\n color: 'white',\n border: 'none',\n padding: '8px 16px',\n borderRadius: 4,\n cursor: 'pointer',\n marginRight: 8,\n }}\n >\n Test Experiences Error\n </button>\n )\n}\n\nconst Greeting = () => {\n const [showConnectWidget, setShowConnectWidget] = React.useState(false)\n\n const isSmallMobileDevice = useMediaQuery('(max-width:320px)')\n\n const { common: commonCopy, connect: connectCopy } = useGlobalCopyStore()\n const { config } = useAppConfig()\n const { isMobile } = useScreenSize()\n\n const getGreeting = () => {\n const now = new Date()\n const hour = now.getHours()\n\n if (hour > 1 && hour < 12) {\n return commonCopy.good_morning\n } else if (hour >= 12 && hour < 18) {\n return commonCopy.good_afternoon\n } else {\n return commonCopy.good_evening\n }\n }\n\n return (\n <React.Fragment>\n <Paper sx={{ gap: 12, mb: isMobile ? 24 : 0, p: 24 }}>\n <Stack alignItems=\"center\" flexDirection=\"row\" justifyContent=\"space-between\">\n <Stack>\n <H2 variant={isSmallMobileDevice ? 'h2' : 'h1'}>{getGreeting()}</H2>\n <P color=\"text.secondary\">{commonCopy.heres_your_spending_overview}</P>\n </Stack>\n <Stack flexDirection=\"row\">\n {config.show_connections_widget_in_master && (\n <AddAccounts handleConnectClick={() => setShowConnectWidget(true)} />\n )}\n <TestExperiencesError />\n <GlobalAccountFilter />\n </Stack>\n </Stack>\n </Paper>\n {showConnectWidget && (\n <ConnectDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectWidget={showConnectWidget}\n title={connectCopy.mini_title}\n />\n )}\n </React.Fragment>\n )\n}\n\nexport default observer(Greeting)\n","export enum DashboardLocation {\n Main = 0,\n RightSide = 1,\n Disabled = 2,\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Grid from '@mui/material/Grid'\nimport Skeleton from '@mui/material/Skeleton'\nimport Stack from '@mui/material/Stack'\n\nimport { useGlobalStore, useScreenSize, useWidgetLoadTimer } from '../common'\n\nimport { Banner } from '../common/components/Banner'\n\nimport Greeting from './Greeting'\nimport { DashboardLocation } from './constants/Dashboard'\nimport type { DashboardWidget } from './types/DashboardTypes'\n\nexport interface DashboardProps {\n widgets: DashboardWidget[]\n isLoading: boolean\n}\n\nconst Dashboard: React.FC<DashboardProps> = ({ widgets, isLoading }) => {\n const { isDesktop, isMobile } = useScreenSize()\n const { copyStore } = useGlobalStore()\n\n useWidgetLoadTimer({\n widgetName: 'Dashboard',\n isLoaded: !isLoading,\n })\n\n const sortedWidgets = React.useMemo(\n () =>\n widgets\n .filter((widget) => widget.location !== DashboardLocation.Disabled)\n .sort((w1, w2) => w1.index - w2.index),\n [widgets],\n )\n\n const mainWidgets = React.useMemo(\n () => sortedWidgets.filter((widget) => widget.location === DashboardLocation.Main),\n [sortedWidgets],\n )\n\n const sideWidgets = React.useMemo(\n () => sortedWidgets.filter((widget) => widget.location === DashboardLocation.RightSide),\n [sortedWidgets],\n )\n\n return (\n <Grid container={true} spacing={isMobile ? 0 : 24}>\n <Grid size={12} sx={{ pt: 16 }}>\n {copyStore.isInitialized && <Greeting />}\n </Grid>\n\n {/* Main Column */}\n <Grid size={{ xs: 12, lg: 8 }}>\n <Banner />\n {isLoading && (\n <Stack direction=\"column\" spacing={24}>\n <Skeleton height={100} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n </Stack>\n )}\n {!isLoading && (\n <Stack direction=\"column\" spacing={24}>\n {isDesktop\n ? mainWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))\n : sortedWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))}\n </Stack>\n )}\n </Grid>\n\n {/* Right Column */}\n {isDesktop && (\n <Grid size={{ lg: 4 }}>\n {isLoading ? (\n <Stack direction=\"column\" spacing={24}>\n <Skeleton height={200} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={100} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n </Stack>\n ) : (\n <Stack direction=\"column\" spacing={24}>\n {sideWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))}\n </Stack>\n )}\n </Grid>\n )}\n </Grid>\n )\n}\n\nexport default observer(Dashboard)\n"],"names":["Banner","observer","theme","useTheme","banner","loadBanner","user","useGlobalStore","React","jsx","Stack","AddAccounts","handleConnectClick","copy","useGlobalCopyStore","isSmallerThan700","useMediaQuery","Box","Tooltip","IconButton","Icon","Button","AddAccounts$1","TestExperiencesError","posthog","usePostHog","Greeting","showConnectWidget","setShowConnectWidget","isSmallMobileDevice","commonCopy","connectCopy","config","useAppConfig","isMobile","useScreenSize","getGreeting","hour","jsxs","Paper","H2","P","GlobalAccountFilter","ConnectDrawer","Greeting$1","DashboardLocation","Dashboard","widgets","isLoading","isDesktop","copyStore","useWidgetLoadTimer","sortedWidgets","widget","w1","w2","mainWidgets","sideWidgets","Grid","Skeleton","Dashboard_default"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/common/components/Banner.tsx","../../src/common/components/addaccounts/AddAccounts.tsx","../../src/dashboard/Greeting.tsx","../../src/dashboard/constants/Dashboard.ts","../../src/dashboard/Dashboard.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useTheme } from '@mui/material/styles'\nimport Stack from '@mui/material/Stack'\n\nimport { useGlobalStore } from '..'\n\nexport const Banner = observer(() => {\n const theme = useTheme()\n const {\n appDataStore: { banner, loadBanner, user },\n } = useGlobalStore()\n\n React.useEffect(() => {\n loadBanner().finally()\n }, [user])\n\n if (!banner?.image_url) {\n return null\n }\n\n return (\n <Stack\n sx={{\n alignItems: 'center',\n width: '100%',\n mb: 24,\n }}\n >\n <a\n href={banner?.redirect_url}\n rel=\"noreferrer\"\n style={{\n width: '100%',\n }}\n target=\"_blank\"\n >\n <img\n alt=\"\"\n src={banner.image_url}\n style={{\n width: '100%',\n height: 'auto',\n border: `1px solid ${theme.palette.grey['300']}`,\n }}\n />\n </a>\n </Stack>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport IconButton from '@mui/material/IconButton'\nimport Tooltip from '@mui/material/Tooltip'\nimport useMediaQuery from '@mui/material/useMediaQuery'\n\nimport { Icon } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../../common'\n\ninterface AddAccountsProps {\n handleConnectClick: () => void\n}\n\nconst AddAccounts = ({ handleConnectClick }: AddAccountsProps) => {\n const { common: copy } = useGlobalCopyStore()\n const isSmallerThan700 = useMediaQuery('(max-width: 700px)')\n\n return (\n <Box>\n {isSmallerThan700 ? (\n <Tooltip id=\"add-accounts\" placement=\"bottom\" title={copy.add_accounts}>\n <IconButton\n aria-controls=\"add_accounts\"\n aria-describedby=\"add-accounts\"\n aria-haspopup={true}\n aria-label={copy.add_accounts}\n color=\"primary\"\n onClick={handleConnectClick}\n >\n <Icon name=\"add\" size={24} />\n </IconButton>\n </Tooltip>\n ) : (\n <Button\n aria-controls=\"add_accounts\"\n aria-haspopup={true}\n aria-label={copy.add_accounts}\n onClick={handleConnectClick}\n startIcon={<Icon name=\"add\" size={24} />}\n sx={{\n p: 12,\n whiteSpace: 'nowrap',\n minWidth: 'max-content',\n }}\n variant=\"text\"\n >\n {copy.add_accounts}\n </Button>\n )}\n </Box>\n )\n}\n\nexport default observer(AddAccounts)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport Paper from '@mui/material/Paper'\n\nimport { H2, P } from '@mxenabled/mxui'\nimport { useMediaQuery } from '@mui/system'\n\nimport { ConnectDrawer, useAppConfig, useGlobalCopyStore, useScreenSize } from '../common'\n\nimport AddAccounts from '../common/components/addaccounts/AddAccounts'\nimport { GlobalAccountFilter } from '../common/components/GlobalAccountFilter'\n\nconst Greeting = () => {\n const [showConnectWidget, setShowConnectWidget] = React.useState(false)\n\n const isSmallMobileDevice = useMediaQuery('(max-width:320px)')\n\n const { common: commonCopy, connect: connectCopy } = useGlobalCopyStore()\n const { config } = useAppConfig()\n const { isMobile } = useScreenSize()\n\n const getGreeting = () => {\n const now = new Date()\n const hour = now.getHours()\n\n if (hour > 1 && hour < 12) {\n return commonCopy.good_morning\n } else if (hour >= 12 && hour < 18) {\n return commonCopy.good_afternoon\n } else {\n return commonCopy.good_evening\n }\n }\n\n return (\n <React.Fragment>\n <Paper sx={{ gap: 12, mb: isMobile ? 24 : 0, p: 24 }}>\n <Stack alignItems=\"center\" flexDirection=\"row\" justifyContent=\"space-between\">\n <Stack>\n <H2 variant={isSmallMobileDevice ? 'h2' : 'h1'}>{getGreeting()}</H2>\n <P color=\"text.secondary\">{commonCopy.heres_your_spending_overview}</P>\n </Stack>\n <Stack flexDirection=\"row\">\n {config.show_connections_widget_in_master && (\n <AddAccounts handleConnectClick={() => setShowConnectWidget(true)} />\n )}\n <GlobalAccountFilter />\n </Stack>\n </Stack>\n </Paper>\n {showConnectWidget && (\n <ConnectDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectWidget={showConnectWidget}\n title={connectCopy.mini_title}\n />\n )}\n </React.Fragment>\n )\n}\n\nexport default observer(Greeting)\n","export enum DashboardLocation {\n Main = 0,\n RightSide = 1,\n Disabled = 2,\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Grid from '@mui/material/Grid'\nimport Skeleton from '@mui/material/Skeleton'\nimport Stack from '@mui/material/Stack'\n\nimport { useGlobalStore, useScreenSize, useWidgetLoadTimer } from '../common'\n\nimport { Banner } from '../common/components/Banner'\n\nimport Greeting from './Greeting'\nimport { DashboardLocation } from './constants/Dashboard'\nimport type { DashboardWidget } from './types/DashboardTypes'\n\nexport interface DashboardProps {\n widgets: DashboardWidget[]\n isLoading: boolean\n}\n\nconst Dashboard: React.FC<DashboardProps> = ({ widgets, isLoading }) => {\n const { isDesktop, isMobile } = useScreenSize()\n const { copyStore } = useGlobalStore()\n\n useWidgetLoadTimer({\n widgetName: 'Dashboard',\n isLoaded: !isLoading,\n })\n\n const sortedWidgets = React.useMemo(\n () =>\n widgets\n .filter((widget) => widget.location !== DashboardLocation.Disabled)\n .sort((w1, w2) => w1.index - w2.index),\n [widgets],\n )\n\n const mainWidgets = React.useMemo(\n () => sortedWidgets.filter((widget) => widget.location === DashboardLocation.Main),\n [sortedWidgets],\n )\n\n const sideWidgets = React.useMemo(\n () => sortedWidgets.filter((widget) => widget.location === DashboardLocation.RightSide),\n [sortedWidgets],\n )\n\n return (\n <Grid container={true} spacing={isMobile ? 0 : 24}>\n <Grid size={12} sx={{ pt: 16 }}>\n {copyStore.isInitialized && <Greeting />}\n </Grid>\n\n {/* Main Column */}\n <Grid size={{ xs: 12, lg: 8 }}>\n <Banner />\n {isLoading && (\n <Stack direction=\"column\" spacing={24}>\n <Skeleton height={100} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n </Stack>\n )}\n {!isLoading && (\n <Stack direction=\"column\" spacing={24}>\n {isDesktop\n ? mainWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))\n : sortedWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))}\n </Stack>\n )}\n </Grid>\n\n {/* Right Column */}\n {isDesktop && (\n <Grid size={{ lg: 4 }}>\n {isLoading ? (\n <Stack direction=\"column\" spacing={24}>\n <Skeleton height={200} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={100} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n </Stack>\n ) : (\n <Stack direction=\"column\" spacing={24}>\n {sideWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))}\n </Stack>\n )}\n </Grid>\n )}\n </Grid>\n )\n}\n\nexport default observer(Dashboard)\n"],"names":["Banner","observer","theme","useTheme","banner","loadBanner","user","useGlobalStore","React","jsx","Stack","AddAccounts","handleConnectClick","copy","useGlobalCopyStore","isSmallerThan700","useMediaQuery","Box","Tooltip","IconButton","Icon","Button","AddAccounts$1","Greeting","showConnectWidget","setShowConnectWidget","isSmallMobileDevice","commonCopy","connectCopy","config","useAppConfig","isMobile","useScreenSize","getGreeting","hour","jsxs","Paper","H2","P","GlobalAccountFilter","ConnectDrawer","Greeting$1","DashboardLocation","Dashboard","widgets","isLoading","isDesktop","copyStore","useWidgetLoadTimer","sortedWidgets","widget","w1","w2","mainWidgets","sideWidgets","Grid","Skeleton","Dashboard_default"],"mappings":"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"}
|