@mx-cartographer/experiences 9.4.14 → 9.4.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/core/types/Insights.d.ts +14 -14
  3. package/dist/core/types/InsightsInstanceSlotData.d.ts +5 -1
  4. package/dist/core/types/InsightsInstanceSlotData.es.js.map +1 -1
  5. package/dist/core/types/localization/InsightsFeedCopy.d.ts +21 -0
  6. package/dist/core/types/localization/index.d.ts +1 -1
  7. package/dist/insights-v2/CommonUtils.d.ts +2 -0
  8. package/dist/insights-v2/CommonUtils.es.js +8 -3
  9. package/dist/insights-v2/CommonUtils.es.js.map +1 -1
  10. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionDrillDown.d.ts +22 -0
  11. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionDrillDown.es.js +108 -0
  12. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionDrillDown.es.js.map +1 -0
  13. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionHistoryBlock.d.ts +8 -0
  14. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionHistoryBlock.es.js +89 -0
  15. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionHistoryBlock.es.js.map +1 -0
  16. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/layout.d.ts +68 -0
  17. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/layout.es.js +118 -0
  18. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/layout.es.js.map +1 -0
  19. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/useTransactionHistory.d.ts +15 -0
  20. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/useTransactionHistory.es.js +20 -0
  21. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/useTransactionHistory.es.js.map +1 -0
  22. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/utils.d.ts +64 -0
  23. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/utils.es.js +67 -0
  24. package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/utils.es.js.map +1 -0
  25. package/dist/insights-v2/beatActions.d.ts +30 -0
  26. package/dist/insights-v2/beatActions.es.js +12 -0
  27. package/dist/insights-v2/beatActions.es.js.map +1 -0
  28. package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/layout.d.ts +2 -2
  29. package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/layout.es.js +2 -2
  30. package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/layout.es.js.map +1 -1
  31. package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/utils.d.ts +14 -3
  32. package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/utils.es.js +26 -25
  33. package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/utils.es.js.map +1 -1
  34. package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/DonutChartBlock.es.js +3 -3
  35. package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/DonutChartBlock.es.js.map +1 -1
  36. package/dist/insights-v2/components/BaseLayout.d.ts +5 -1
  37. package/dist/insights-v2/components/BaseLayout.es.js +68 -64
  38. package/dist/insights-v2/components/BaseLayout.es.js.map +1 -1
  39. package/dist/insights-v2/components/Header.es.js +23 -33
  40. package/dist/insights-v2/components/Header.es.js.map +1 -1
  41. package/dist/insights-v2/components/InsightOptionsMenu.d.ts +10 -0
  42. package/dist/insights-v2/components/InsightOptionsMenu.es.js +54 -0
  43. package/dist/insights-v2/components/InsightOptionsMenu.es.js.map +1 -0
  44. package/dist/insights-v2/components/OverflowMenu.d.ts +32 -0
  45. package/dist/insights-v2/components/OverflowMenu.es.js +73 -0
  46. package/dist/insights-v2/components/OverflowMenu.es.js.map +1 -0
  47. package/dist/insights-v2/index.d.ts +3 -0
  48. package/dist/insights-v2/index.es.js +51 -45
  49. package/dist/insights-v2/mappings/blocks.es.js +45 -38
  50. package/dist/insights-v2/mappings/blocks.es.js.map +1 -1
  51. package/package.json +1 -1
@@ -1,77 +1,81 @@
1
- import { useInsightsV2Store as u } from "../../common/context/hooks.es.js";
1
+ import { useInsightsV2Store as _ } from "../../common/context/hooks.es.js";
2
2
  import { blocks as g } from "../mappings/blocks.es.js";
3
3
  import y from "./Footer.es.js";
4
- import _ from "./Header.es.js";
5
- import { ActionBlockLayer as k } from "../actionBlocks/ActionBlockLayer.es.js";
4
+ import { BeatActionsProvider as k } from "../beatActions.es.js";
5
+ import x from "./Header.es.js";
6
+ import { ActionBlockLayer as C } from "../actionBlocks/ActionBlockLayer.es.js";
6
7
  import l from "@mui/material/Stack";
7
8
  import c from "@mui/material/Button";
8
- import { ChevronRight as x } from "@mxenabled/mx-icons";
9
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
10
- import C from "@mui/material/Card";
11
- var A = ({ beat: o }) => {
12
- const { openCtaDrawer: s } = u(), t = o.insights_payload;
13
- if (!t) return null;
14
- const { instance_slot: p, primary_cta: n, secondary_cta: e, subtitle: m, widget_type: h } = t, { block: f } = p, a = g[f], d = h === "mini";
15
- return /* @__PURE__ */ i(l, {
16
- sx: { mb: 16 },
17
- children: [
18
- /* @__PURE__ */ i(C, { children: [
19
- /* @__PURE__ */ r(_, {
20
- isMini: d,
21
- subtitle: m,
22
- title: o.title
23
- }),
24
- a && /* @__PURE__ */ r(a, {
25
- beatGuid: o.guid,
26
- payload: t
27
- }),
28
- /* @__PURE__ */ i(l, {
29
- sx: {
30
- gap: 6,
31
- pb: 16,
32
- pl: 12,
33
- pr: 16,
34
- pt: 12
35
- },
36
- children: [/* @__PURE__ */ r("div", {
37
- dangerouslySetInnerHTML: { __html: o.html_description },
38
- style: { paddingLeft: 4 }
39
- }), o?.in_description_cta && /* @__PURE__ */ r(c, {
40
- endIcon: /* @__PURE__ */ r(x, {}),
41
- onClick: () => {
9
+ import { ChevronRight as v } from "@mxenabled/mx-icons";
10
+ import { jsx as o, jsxs as t } from "react/jsx-runtime";
11
+ import B from "@mui/material/Card";
12
+ var b = {}, D = ({ beat: r, beatActions: p = b }) => {
13
+ const { openCtaDrawer: a } = _(), i = r.insights_payload;
14
+ if (!i) return null;
15
+ const { instance_slot: m, primary_cta: n, secondary_cta: e, subtitle: h, widget_type: f } = i, { block: u } = m, s = g[u], d = f === "mini";
16
+ return /* @__PURE__ */ o(k, {
17
+ value: p,
18
+ children: /* @__PURE__ */ t(l, {
19
+ sx: { mb: 16 },
20
+ children: [
21
+ /* @__PURE__ */ t(B, { children: [
22
+ /* @__PURE__ */ o(x, {
23
+ isMini: d,
24
+ subtitle: h,
25
+ title: r.title
26
+ }),
27
+ s && /* @__PURE__ */ o(s, {
28
+ beatGuid: r.guid,
29
+ payload: i
30
+ }),
31
+ /* @__PURE__ */ t(l, {
32
+ sx: {
33
+ gap: 6,
34
+ pb: 16,
35
+ pl: 12,
36
+ pr: 16,
37
+ pt: 12
42
38
  },
39
+ children: [/* @__PURE__ */ o("div", {
40
+ dangerouslySetInnerHTML: { __html: r.html_description },
41
+ style: { paddingLeft: 4 }
42
+ }), r?.in_description_cta && /* @__PURE__ */ o(c, {
43
+ endIcon: /* @__PURE__ */ o(v, {}),
44
+ onClick: () => {
45
+ },
46
+ sx: {
47
+ height: 24,
48
+ p: 4,
49
+ width: "max-content"
50
+ },
51
+ children: r.in_description_cta
52
+ })]
53
+ }),
54
+ !d && n?.label && /* @__PURE__ */ t(l, {
43
55
  sx: {
44
- height: 24,
45
- p: 4,
46
- width: "max-content"
56
+ gap: 8,
57
+ pb: 16,
58
+ px: 16
47
59
  },
48
- children: o.in_description_cta
49
- })]
50
- }),
51
- !d && n?.label && /* @__PURE__ */ i(l, {
52
- sx: {
53
- gap: 8,
54
- pb: 16,
55
- px: 16
56
- },
57
- children: [/* @__PURE__ */ r(c, {
58
- onClick: () => n.block && s(o.guid, "primaryCta"),
59
- variant: "outlined",
60
- children: n.label
61
- }), e?.label && /* @__PURE__ */ r(c, {
62
- color: "secondary",
63
- onClick: () => e.block && s(o.guid, "secondaryCta"),
64
- children: e.label
65
- })]
66
- })
67
- ] }),
68
- /* @__PURE__ */ r(k, { beat: o }),
69
- t.footer && /* @__PURE__ */ r(y, { footer: t.footer })
70
- ]
60
+ children: [/* @__PURE__ */ o(c, {
61
+ onClick: () => n.block && a(r.guid, "primaryCta"),
62
+ variant: "outlined",
63
+ children: n.label
64
+ }), e?.label && /* @__PURE__ */ o(c, {
65
+ color: "secondary",
66
+ onClick: () => e.block && a(r.guid, "secondaryCta"),
67
+ children: e.label
68
+ })]
69
+ })
70
+ ] }),
71
+ /* @__PURE__ */ o(C, { beat: r }),
72
+ i.footer && /* @__PURE__ */ o(y, { footer: i.footer })
73
+ ]
74
+ })
71
75
  });
72
76
  };
73
77
  export {
74
- A as default
78
+ D as default
75
79
  };
76
80
 
77
81
  //# sourceMappingURL=BaseLayout.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseLayout.es.js","names":[],"sources":["../../../src/insights-v2/components/BaseLayout.tsx"],"sourcesContent":["import Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { blocks } from '../mappings/blocks'\n\nimport Footer from './Footer'\nimport Header from './Header'\nimport { useInsightsV2Store } from '../../common'\nimport type { Beat } from '../../core'\nimport { ActionBlockLayer } from '../actionBlocks/ActionBlockLayer'\n\ninterface BaseLayoutProps {\n beat: Beat\n}\n\nconst BaseLayout = ({ beat }: BaseLayoutProps) => {\n const { openCtaDrawer } = useInsightsV2Store()\n\n const insights_payload = beat.insights_payload\n\n if (!insights_payload) {\n return null\n }\n\n const { instance_slot, primary_cta, secondary_cta, subtitle, widget_type } = insights_payload\n const { block } = instance_slot\n\n const Block = blocks[block as keyof typeof blocks]\n\n const isMini = widget_type === 'mini'\n\n return (\n <Stack sx={{ mb: 16 }}>\n <Card>\n {/* Header */}\n <Header isMini={isMini} subtitle={subtitle} title={beat.title} />\n\n {/* Instance Slot */}\n {Block && <Block beatGuid={beat.guid} payload={insights_payload} />}\n\n {/* Body */}\n <Stack sx={{ gap: 6, pb: 16, pl: 12, pr: 16, pt: 12 }}>\n <div\n dangerouslySetInnerHTML={{\n __html: beat.html_description as string,\n }}\n style={{ paddingLeft: 4 }}\n />\n {beat?.in_description_cta && (\n <Button\n endIcon={<ChevronRight />}\n onClick={() => {}}\n sx={{ height: 24, p: 4, width: 'max-content' }}\n >\n {beat.in_description_cta}\n </Button>\n )}\n </Stack>\n\n {/* CTA. A CTA without a real `block` doesn't open a drawer (it may trigger\n a postMessage etc.) — restrict the drawer to CTAs that carry a block. */}\n {!isMini && primary_cta?.label && (\n <Stack sx={{ gap: 8, pb: 16, px: 16 }}>\n <Button\n onClick={() => primary_cta.block && openCtaDrawer(beat.guid, 'primaryCta')}\n variant=\"outlined\"\n >\n {primary_cta.label}\n </Button>\n {secondary_cta?.label && (\n <Button\n color=\"secondary\"\n onClick={() => secondary_cta.block && openCtaDrawer(beat.guid, 'secondaryCta')}\n >\n {secondary_cta.label}\n </Button>\n )}\n </Stack>\n )}\n </Card>\n\n {/* Always mounted: the drawer's slide in/out animation only plays when\n MUI sees isOpen CHANGE on a mounted Drawer — conditionally mounting\n it here made it snap open and vanish on close. */}\n <ActionBlockLayer beat={beat} />\n\n {/* Footer */}\n {insights_payload.footer && <Footer footer={insights_payload.footer} />}\n </Stack>\n )\n}\n\nexport default BaseLayout\n"],"mappings":";;;;;;;;;;AAkBA,IAAM,IAAA,CAAc,EAAE,MAAA,EAAA,MAA4B;AAChD,QAAM,EAAE,eAAA,EAAA,IAAkB,EAAmB,GAEvC,IAAmB,EAAK;AAE9B,MAAI,CAAC,EACH,QAAO;AAGT,QAAM,EAAE,eAAA,GAAe,aAAA,GAAa,eAAA,GAAe,UAAA,GAAU,aAAA,EAAA,IAAgB,GACvE,EAAE,OAAA,EAAA,IAAU,GAEZ,IAAQ,EAAO,CAAA,GAEf,IAAS,MAAgB;AAE/B,SACE,gBAAA,EAAC,GAAD;AAAA,IAAO,IAAI,EAAE,IAAI,GAAG;AAAA,IAApB,UAAA;AAAA,MACE,gBAAA,EAAC,GAAD,EAAA,UAAA;AAAA,QAEE,gBAAA,EAAC,GAAD;AAAA,UAAgB,QAAA;AAAA,UAAkB,UAAA;AAAA,UAAU,OAAO,EAAK;AAAA,QAAQ,CAAA;AAAA,QAG/D,KAAS,gBAAA,EAAC,GAAD;AAAA,UAAO,UAAU,EAAK;AAAA,UAAM,SAAS;AAAA,QAAmB,CAAA;AAAA,QAGlE,gBAAA,EAAC,GAAD;AAAA,UAAO,IAAI;AAAA,YAAE,KAAK;AAAA,YAAG,IAAI;AAAA,YAAI,IAAI;AAAA,YAAI,IAAI;AAAA,YAAI,IAAI;AAAA,UAAG;AAAA,UAApD,UAAA,CACE,gBAAA,EAAC,OAAD;AAAA,YACE,yBAAyB,EACvB,QAAQ,EAAK,iBACf;AAAA,YACA,OAAO,EAAE,aAAa,EAAE;AAAA,UACzB,CAAA,GACA,GAAM,sBACL,gBAAA,EAAC,GAAD;AAAA,YACE,SAAS,gBAAA,EAAC,GAAD,CAAe,CAAA;AAAA,YACxB,SAAA,MAAe;AAAA,YAAC;AAAA,YAChB,IAAI;AAAA,cAAE,QAAQ;AAAA,cAAI,GAAG;AAAA,cAAG,OAAO;AAAA,YAAc;AAAA,YAE5C,UAAA,EAAK;AAAA,UACA,CAAA,CAEL;AAAA;QAIN,CAAC,KAAU,GAAa,SACvB,gBAAA,EAAC,GAAD;AAAA,UAAO,IAAI;AAAA,YAAE,KAAK;AAAA,YAAG,IAAI;AAAA,YAAI,IAAI;AAAA,UAAG;AAAA,UAApC,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,YACE,SAAA,MAAe,EAAY,SAAS,EAAc,EAAK,MAAM,YAAY;AAAA,YACzE,SAAQ;AAAA,YAEP,UAAA,EAAY;AAAA,UACP,CAAA,GACP,GAAe,SACd,gBAAA,EAAC,GAAD;AAAA,YACE,OAAM;AAAA,YACN,SAAA,MAAe,EAAc,SAAS,EAAc,EAAK,MAAM,cAAc;AAAA,YAE5E,UAAA,EAAc;AAAA,UACT,CAAA,CAEL;AAAA;MAEL,EAAA,CAAA;AAAA,MAKN,gBAAA,EAAC,GAAD,EAAwB,MAAA,EAAO,CAAA;AAAA,MAG9B,EAAiB,UAAU,gBAAA,EAAC,GAAD,EAAQ,QAAQ,EAAiB,OAAS,CAAA;AAAA,IACjE;AAAA;AAEX"}
1
+ {"version":3,"file":"BaseLayout.es.js","names":[],"sources":["../../../src/insights-v2/components/BaseLayout.tsx"],"sourcesContent":["import Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { blocks } from '../mappings/blocks'\n\nimport Footer from './Footer'\nimport Header from './Header'\nimport { useInsightsV2Store } from '../../common'\nimport type { Beat } from '../../core'\nimport { BeatActionsProvider, type BeatActions } from '../beatActions'\nimport { ActionBlockLayer } from '../actionBlocks/ActionBlockLayer'\n\ninterface BaseLayoutProps {\n beat: Beat\n /** Host callbacks (menu actions, updateBeat, …) delivered to the card subtree\n * via context, so blocks/variants can reach them without prop drilling. */\n beatActions?: BeatActions\n}\n\n// Stable default so an omitted prop doesn't create a new context value each\n// render (which would re-render every consumer).\nconst NO_BEAT_ACTIONS: BeatActions = {}\n\nconst BaseLayout = ({ beat, beatActions = NO_BEAT_ACTIONS }: BaseLayoutProps) => {\n const { openCtaDrawer } = useInsightsV2Store()\n\n const insights_payload = beat.insights_payload\n\n if (!insights_payload) {\n return null\n }\n\n const { instance_slot, primary_cta, secondary_cta, subtitle, widget_type } = insights_payload\n const { block } = instance_slot\n\n const Block = blocks[block as keyof typeof blocks]\n\n const isMini = widget_type === 'mini'\n\n return (\n <BeatActionsProvider value={beatActions}>\n <Stack sx={{ mb: 16 }}>\n <Card>\n {/* Header */}\n <Header isMini={isMini} subtitle={subtitle} title={beat.title} />\n\n {/* Instance Slot */}\n {Block && <Block beatGuid={beat.guid} payload={insights_payload} />}\n\n {/* Body */}\n <Stack sx={{ gap: 6, pb: 16, pl: 12, pr: 16, pt: 12 }}>\n <div\n dangerouslySetInnerHTML={{\n __html: beat.html_description as string,\n }}\n style={{ paddingLeft: 4 }}\n />\n {beat?.in_description_cta && (\n <Button\n endIcon={<ChevronRight />}\n onClick={() => {}}\n sx={{ height: 24, p: 4, width: 'max-content' }}\n >\n {beat.in_description_cta}\n </Button>\n )}\n </Stack>\n\n {/* CTA. A CTA without a real `block` doesn't open a drawer (it may trigger\n a postMessage etc.) — restrict the drawer to CTAs that carry a block. */}\n {!isMini && primary_cta?.label && (\n <Stack sx={{ gap: 8, pb: 16, px: 16 }}>\n <Button\n onClick={() => primary_cta.block && openCtaDrawer(beat.guid, 'primaryCta')}\n variant=\"outlined\"\n >\n {primary_cta.label}\n </Button>\n {secondary_cta?.label && (\n <Button\n color=\"secondary\"\n onClick={() => secondary_cta.block && openCtaDrawer(beat.guid, 'secondaryCta')}\n >\n {secondary_cta.label}\n </Button>\n )}\n </Stack>\n )}\n </Card>\n\n {/* Always mounted: the drawer's slide in/out animation only plays when\n MUI sees isOpen CHANGE on a mounted Drawer — conditionally mounting\n it here made it snap open and vanish on close. */}\n <ActionBlockLayer beat={beat} />\n\n {/* Footer */}\n {insights_payload.footer && <Footer footer={insights_payload.footer} />}\n </Stack>\n </BeatActionsProvider>\n )\n}\n\nexport default BaseLayout\n"],"mappings":";;;;;;;;;;;AAwBA,IAAM,IAA+B,CAAC,GAEhC,IAAA,CAAc,EAAE,MAAA,GAAM,aAAA,IAAc,EAAA,MAAuC;AAC/E,QAAM,EAAE,eAAA,EAAA,IAAkB,EAAmB,GAEvC,IAAmB,EAAK;AAE9B,MAAI,CAAC,EACH,QAAO;AAGT,QAAM,EAAE,eAAA,GAAe,aAAA,GAAa,eAAA,GAAe,UAAA,GAAU,aAAA,EAAA,IAAgB,GACvE,EAAE,OAAA,EAAA,IAAU,GAEZ,IAAQ,EAAO,CAAA,GAEf,IAAS,MAAgB;AAE/B,SACE,gBAAA,EAAC,GAAD;AAAA,IAAqB,OAAO;AAAA,IAC1B,UAAA,gBAAA,EAAC,GAAD;AAAA,MAAO,IAAI,EAAE,IAAI,GAAG;AAAA,MAApB,UAAA;AAAA,QACE,gBAAA,EAAC,GAAD,EAAA,UAAA;AAAA,UAEE,gBAAA,EAAC,GAAD;AAAA,YAAgB,QAAA;AAAA,YAAkB,UAAA;AAAA,YAAU,OAAO,EAAK;AAAA,UAAQ,CAAA;AAAA,UAG/D,KAAS,gBAAA,EAAC,GAAD;AAAA,YAAO,UAAU,EAAK;AAAA,YAAM,SAAS;AAAA,UAAmB,CAAA;AAAA,UAGlE,gBAAA,EAAC,GAAD;AAAA,YAAO,IAAI;AAAA,cAAE,KAAK;AAAA,cAAG,IAAI;AAAA,cAAI,IAAI;AAAA,cAAI,IAAI;AAAA,cAAI,IAAI;AAAA,YAAG;AAAA,YAApD,UAAA,CACE,gBAAA,EAAC,OAAD;AAAA,cACE,yBAAyB,EACvB,QAAQ,EAAK,iBACf;AAAA,cACA,OAAO,EAAE,aAAa,EAAE;AAAA,YACzB,CAAA,GACA,GAAM,sBACL,gBAAA,EAAC,GAAD;AAAA,cACE,SAAS,gBAAA,EAAC,GAAD,CAAe,CAAA;AAAA,cACxB,SAAA,MAAe;AAAA,cAAC;AAAA,cAChB,IAAI;AAAA,gBAAE,QAAQ;AAAA,gBAAI,GAAG;AAAA,gBAAG,OAAO;AAAA,cAAc;AAAA,cAE5C,UAAA,EAAK;AAAA,YACA,CAAA,CAEL;AAAA;UAIN,CAAC,KAAU,GAAa,SACvB,gBAAA,EAAC,GAAD;AAAA,YAAO,IAAI;AAAA,cAAE,KAAK;AAAA,cAAG,IAAI;AAAA,cAAI,IAAI;AAAA,YAAG;AAAA,YAApC,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,cACE,SAAA,MAAe,EAAY,SAAS,EAAc,EAAK,MAAM,YAAY;AAAA,cACzE,SAAQ;AAAA,cAEP,UAAA,EAAY;AAAA,YACP,CAAA,GACP,GAAe,SACd,gBAAA,EAAC,GAAD;AAAA,cACE,OAAM;AAAA,cACN,SAAA,MAAe,EAAc,SAAS,EAAc,EAAK,MAAM,cAAc;AAAA,cAE5E,UAAA,EAAc;AAAA,YACT,CAAA,CAEL;AAAA;QAEL,EAAA,CAAA;AAAA,QAKN,gBAAA,EAAC,GAAD,EAAwB,MAAA,EAAO,CAAA;AAAA,QAG9B,EAAiB,UAAU,gBAAA,EAAC,GAAD,EAAQ,QAAQ,EAAiB,OAAS,CAAA;AAAA,MACjE;AAAA;EACY,CAAA;AAEzB"}
@@ -1,41 +1,31 @@
1
- import p from "./SubHeader.es.js";
2
- import o from "@mui/material/Stack";
3
- import { H3 as a } from "@mxenabled/mxui";
4
- import { MoreHoriz as m } from "@mxenabled/mx-icons";
5
- import { jsx as r, jsxs as t } from "react/jsx-runtime";
6
- import s from "@mui/material/IconButton";
7
- var H = ({ isMini: i, subtitle: e, title: n }) => /* @__PURE__ */ t(o, {
8
- sx: {
9
- gap: 4,
10
- pb: 12,
11
- pl: 16,
12
- pr: 16,
13
- pt: 16
14
- },
15
- children: [/* @__PURE__ */ t(o, {
1
+ import m from "./SubHeader.es.js";
2
+ import { useBeatActions as s } from "../beatActions.es.js";
3
+ import { InsightOptionsMenu as a } from "./InsightOptionsMenu.es.js";
4
+ import t from "@mui/material/Stack";
5
+ import { H3 as c } from "@mxenabled/mxui";
6
+ import { jsx as r, jsxs as o } from "react/jsx-runtime";
7
+ var g = ({ isMini: n, subtitle: e, title: i }) => {
8
+ const { onMenuAction: p } = s();
9
+ return /* @__PURE__ */ o(t, {
16
10
  sx: {
17
- alignItems: "center",
18
- flexDirection: "row",
19
- justifyContent: "space-between"
11
+ gap: 4,
12
+ pb: 12,
13
+ pl: 16,
14
+ pr: 16,
15
+ pt: 16
20
16
  },
21
- children: [/* @__PURE__ */ r(a, { children: n }), !i && /* @__PURE__ */ r(s, {
22
- "aria-label": "More Options",
23
- onClick: () => {
24
- },
17
+ children: [/* @__PURE__ */ o(t, {
25
18
  sx: {
26
- minHeight: 24,
27
- p: 0,
28
- minWidth: 24
19
+ alignItems: "center",
20
+ flexDirection: "row",
21
+ justifyContent: "space-between"
29
22
  },
30
- children: /* @__PURE__ */ r(m, {
31
- size: 24,
32
- sx: { color: "neutral.dark" }
33
- })
34
- })]
35
- }), e && /* @__PURE__ */ r(p, { subtitle: e })]
36
- });
23
+ children: [/* @__PURE__ */ r(c, { children: i }), !n && p && /* @__PURE__ */ r(a, {})]
24
+ }), e && /* @__PURE__ */ r(m, { subtitle: e })]
25
+ });
26
+ };
37
27
  export {
38
- H as default
28
+ g as default
39
29
  };
40
30
 
41
31
  //# sourceMappingURL=Header.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.es.js","names":[],"sources":["../../../src/insights-v2/components/Header.tsx"],"sourcesContent":["import IconButton from '@mui/material/IconButton'\nimport Stack from '@mui/material/Stack'\n\nimport { H3 } from '@mxenabled/mxui'\nimport { MoreHoriz } from '@mxenabled/mx-icons'\n\nimport SubHeader from './SubHeader'\nimport type { Subtitle } from '../../core'\n\ninterface HeaderProps {\n isMini: boolean\n subtitle?: Subtitle\n title: string\n}\n\nconst Header = ({ isMini, subtitle, title }: HeaderProps) => {\n const handleMoreOptions = () => {}\n\n return (\n <Stack sx={{ gap: 4, pb: 12, pl: 16, pr: 16, pt: 16 }}>\n <Stack sx={{ alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between' }}>\n <H3>{title}</H3>\n {!isMini && (\n <IconButton\n aria-label=\"More Options\" // TODO: Localize\n onClick={handleMoreOptions}\n sx={{ minHeight: 24, p: 0, minWidth: 24 }}\n >\n <MoreHoriz size={24} sx={{ color: 'neutral.dark' }} />\n </IconButton>\n )}\n </Stack>\n\n {/* Sub Header */}\n {subtitle && <SubHeader subtitle={subtitle} />}\n </Stack>\n )\n}\n\nexport default Header\n"],"mappings":";;;;;;AAeA,IAAM,IAAA,CAAU,EAAE,QAAA,GAAQ,UAAA,GAAU,OAAA,EAAA,MAIhC,gBAAA,EAAC,GAAD;AAAA,EAAO,IAAI;AAAA,IAAE,KAAK;AAAA,IAAG,IAAI;AAAA,IAAI,IAAI;AAAA,IAAI,IAAI;AAAA,IAAI,IAAI;AAAA,EAAG;AAAA,EAApD,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,IAAO,IAAI;AAAA,MAAE,YAAY;AAAA,MAAU,eAAe;AAAA,MAAO,gBAAgB;AAAA,IAAgB;AAAA,IAAzF,UAAA,CACE,gBAAA,EAAC,GAAD,EAAA,UAAK,EAAU,CAAA,GACd,CAAC,KACA,gBAAA,EAAC,GAAD;AAAA,MACE,cAAW;AAAA,MACX,SATJ,MAA0B;AAAA,MAAC;AAAA,MAUvB,IAAI;AAAA,QAAE,WAAW;AAAA,QAAI,GAAG;AAAA,QAAG,UAAU;AAAA,MAAG;AAAA,MAExC,UAAA,gBAAA,EAAC,GAAD;AAAA,QAAW,MAAM;AAAA,QAAI,IAAI,EAAE,OAAO,eAAe;AAAA,MAAI,CAAA;AAAA,IAC3C,CAAA,CAET;AAAA,EAGN,CAAA,GAAA,KAAY,gBAAA,EAAC,GAAD,EAAqB,UAAA,EAAW,CAAA,CACxC"}
1
+ {"version":3,"file":"Header.es.js","names":[],"sources":["../../../src/insights-v2/components/Header.tsx"],"sourcesContent":["import Stack from '@mui/material/Stack'\n\nimport { H3 } from '@mxenabled/mxui'\n\nimport SubHeader from './SubHeader'\nimport InsightOptionsMenu from './InsightOptionsMenu'\nimport { useBeatActions } from '../beatActions'\nimport type { Subtitle } from '../../core'\n\ninterface HeaderProps {\n isMini: boolean\n subtitle?: Subtitle\n title: string\n}\n\nconst Header = ({ isMini, subtitle, title }: HeaderProps) => {\n // The overflow menu appears only when the host wired a menu handler and this\n // isn't the compact/mini layout. Handlers are delivered via context.\n const { onMenuAction } = useBeatActions()\n\n return (\n <Stack sx={{ gap: 4, pb: 12, pl: 16, pr: 16, pt: 16 }}>\n <Stack sx={{ alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between' }}>\n <H3>{title}</H3>\n {!isMini && onMenuAction && <InsightOptionsMenu />}\n </Stack>\n\n {/* Sub Header */}\n {subtitle && <SubHeader subtitle={subtitle} />}\n </Stack>\n )\n}\n\nexport default Header\n"],"mappings":";;;;;;AAeA,IAAM,IAAA,CAAU,EAAE,QAAA,GAAQ,UAAA,GAAU,OAAA,EAAA,MAAyB;AAG3D,QAAM,EAAE,cAAA,EAAA,IAAiB,EAAe;AAExC,SACE,gBAAA,EAAC,GAAD;AAAA,IAAO,IAAI;AAAA,MAAE,KAAK;AAAA,MAAG,IAAI;AAAA,MAAI,IAAI;AAAA,MAAI,IAAI;AAAA,MAAI,IAAI;AAAA,IAAG;AAAA,IAApD,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,MAAO,IAAI;AAAA,QAAE,YAAY;AAAA,QAAU,eAAe;AAAA,QAAO,gBAAgB;AAAA,MAAgB;AAAA,MAAzF,UAAA,CACE,gBAAA,EAAC,GAAD,EAAA,UAAK,EAAU,CAAA,GACd,CAAC,KAAU,KAAgB,gBAAA,EAAC,GAAD,CAAqB,CAAA,CAC5C;AAAA,IAGN,CAAA,GAAA,KAAY,gBAAA,EAAC,GAAD,EAAqB,UAAA,EAAW,CAAA,CACxC;AAAA;AAEX"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The insight card's "…" overflow menu. This repo owns the item set — order,
3
+ * icons, and labels (from `insights_feed.overflow_menu` copy) — while the host
4
+ * supplies the action handler via `beatActions.onMenuAction` (read from
5
+ * context). Renders nothing without a handler or before copy resolves.
6
+ */
7
+ export declare const InsightOptionsMenu: (() => import("react/jsx-runtime").JSX.Element | null) & {
8
+ displayName: string;
9
+ };
10
+ export default InsightOptionsMenu;
@@ -0,0 +1,54 @@
1
+ import { useGlobalCopyStore as m } from "../../common/context/hooks.es.js";
2
+ import { useBeatActions as a } from "../beatActions.es.js";
3
+ import { OverflowMenu as p } from "./OverflowMenu.es.js";
4
+ import { observer as f } from "mobx-react-lite";
5
+ import { Icon as l } from "@mxenabled/mx-icons";
6
+ import { jsx as o } from "react/jsx-runtime";
7
+ var d = f(() => {
8
+ const { onMenuAction: n } = a(), e = m().insights_feed?.overflow_menu;
9
+ if (!n || !e) return null;
10
+ const { onAction: t, onOpen: i, disabled: r } = n, s = [
11
+ {
12
+ key: "helpful",
13
+ icon: /* @__PURE__ */ o(l, {
14
+ name: "thumb_up",
15
+ size: 24,
16
+ sx: { color: "text.primary" }
17
+ }),
18
+ label: e.helpful,
19
+ onSelect: () => t("helpful")
20
+ },
21
+ {
22
+ key: "not_helpful",
23
+ icon: /* @__PURE__ */ o(l, {
24
+ name: "thumb_down",
25
+ size: 24,
26
+ sx: { color: "text.primary" }
27
+ }),
28
+ label: e.not_helpful,
29
+ onSelect: () => t("not_helpful")
30
+ },
31
+ {
32
+ key: "hide",
33
+ icon: /* @__PURE__ */ o(l, {
34
+ name: "visibility_off",
35
+ size: 24,
36
+ sx: { color: "text.primary" }
37
+ }),
38
+ label: e.hide,
39
+ onSelect: () => t("hide")
40
+ }
41
+ ];
42
+ return /* @__PURE__ */ o(p, {
43
+ ariaLabel: e.aria_label,
44
+ disabled: r,
45
+ items: s,
46
+ onOpen: i
47
+ });
48
+ });
49
+ export {
50
+ d as InsightOptionsMenu,
51
+ d as default
52
+ };
53
+
54
+ //# sourceMappingURL=InsightOptionsMenu.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsightOptionsMenu.es.js","names":[],"sources":["../../../src/insights-v2/components/InsightOptionsMenu.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\n\nimport { Icon } from '@mxenabled/mx-icons'\n\nimport { useGlobalCopyStore } from '../../common'\n\nimport { useBeatActions } from '../beatActions'\n\nimport { OverflowMenu, type OverflowMenuItem } from './OverflowMenu'\n\n/**\n * The insight card's \"…\" overflow menu. This repo owns the item set — order,\n * icons, and labels (from `insights_feed.overflow_menu` copy) — while the host\n * supplies the action handler via `beatActions.onMenuAction` (read from\n * context). Renders nothing without a handler or before copy resolves.\n */\nexport const InsightOptionsMenu = observer(() => {\n const { onMenuAction } = useBeatActions()\n const copy = useGlobalCopyStore().insights_feed?.overflow_menu\n\n if (!onMenuAction || !copy) return null\n\n const { onAction, onOpen, disabled } = onMenuAction\n\n const items: OverflowMenuItem[] = [\n {\n key: 'helpful',\n icon: <Icon name=\"thumb_up\" size={24} sx={{ color: 'text.primary' }} />,\n label: copy.helpful,\n onSelect: () => onAction('helpful'),\n },\n {\n key: 'not_helpful',\n icon: <Icon name=\"thumb_down\" size={24} sx={{ color: 'text.primary' }} />,\n label: copy.not_helpful,\n onSelect: () => onAction('not_helpful'),\n },\n {\n key: 'hide',\n icon: <Icon name=\"visibility_off\" size={24} sx={{ color: 'text.primary' }} />,\n label: copy.hide,\n onSelect: () => onAction('hide'),\n },\n ]\n\n return (\n <OverflowMenu ariaLabel={copy.aria_label} disabled={disabled} items={items} onOpen={onOpen} />\n )\n})\n\nexport default InsightOptionsMenu\n"],"mappings":";;;;;;AAgBA,IAAa,IAAqB,EAAA,MAAe;AAC/C,QAAM,EAAE,cAAA,EAAA,IAAiB,EAAe,GAClC,IAAO,EAAmB,EAAE,eAAe;AAEjD,MAAI,CAAC,KAAgB,CAAC,EAAM,QAAO;AAEnC,QAAM,EAAE,UAAA,GAAU,QAAA,GAAQ,UAAA,EAAA,IAAa,GAEjC,IAA4B;AAAA,IAChC;AAAA,MACE,KAAK;AAAA,MACL,MAAM,gBAAA,EAAC,GAAD;AAAA,QAAM,MAAK;AAAA,QAAW,MAAM;AAAA,QAAI,IAAI,EAAE,OAAO,eAAe;AAAA,MAAI,CAAA;AAAA,MACtE,OAAO,EAAK;AAAA,MACZ,UAAA,MAAgB,EAAS,SAAS;AAAA,IACpC;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,MAAM,gBAAA,EAAC,GAAD;AAAA,QAAM,MAAK;AAAA,QAAa,MAAM;AAAA,QAAI,IAAI,EAAE,OAAO,eAAe;AAAA,MAAI,CAAA;AAAA,MACxE,OAAO,EAAK;AAAA,MACZ,UAAA,MAAgB,EAAS,aAAa;AAAA,IACxC;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,MAAM,gBAAA,EAAC,GAAD;AAAA,QAAM,MAAK;AAAA,QAAiB,MAAM;AAAA,QAAI,IAAI,EAAE,OAAO,eAAe;AAAA,MAAI,CAAA;AAAA,MAC5E,OAAO,EAAK;AAAA,MACZ,UAAA,MAAgB,EAAS,MAAM;AAAA,IACjC;AAAA,EACF;AAEA,SACE,gBAAA,EAAC,GAAD;AAAA,IAAc,WAAW,EAAK;AAAA,IAAsB,UAAA;AAAA,IAAiB,OAAA;AAAA,IAAe,QAAA;AAAA,EAAS,CAAA;AAEjG,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { ReactNode } from 'react';
2
+ export interface OverflowMenuItem {
3
+ /** Stable identity for the item (also its React key). */
4
+ key: string;
5
+ /** Leading icon node. */
6
+ icon: ReactNode;
7
+ /** Visible label. */
8
+ label: string;
9
+ /** Invoked when the item is chosen (after the menu closes). */
10
+ onSelect: () => void;
11
+ /** Optional per-item disabled state. */
12
+ disabled?: boolean;
13
+ }
14
+ export interface OverflowMenuProps {
15
+ /** Items to render, top to bottom. */
16
+ items: OverflowMenuItem[];
17
+ /** Accessible label for the trigger button. */
18
+ ariaLabel: string;
19
+ /** Called when the menu opens (e.g. to fire analytics). */
20
+ onOpen?: () => void;
21
+ /** Disables the trigger entirely (e.g. an obsolete beat). */
22
+ disabled?: boolean;
23
+ }
24
+ /**
25
+ * A "…" (MoreHoriz) overflow menu: an icon trigger that opens a list of actions.
26
+ *
27
+ * Presentational only — it owns nothing but the open/close anchor state. The item
28
+ * set and what each item does are supplied by the caller via `items[].onSelect`,
29
+ * so all data/side-effects (analytics, feedback, hide, …) live outside this file.
30
+ */
31
+ export declare const OverflowMenu: ({ items, ariaLabel, onOpen, disabled }: OverflowMenuProps) => import("react/jsx-runtime").JSX.Element;
32
+ export default OverflowMenu;
@@ -0,0 +1,73 @@
1
+ import { useId as v, useState as z } from "react";
2
+ import { MoreHoriz as M } from "@mxenabled/mx-icons";
3
+ import { Fragment as O, jsx as r, jsxs as m } from "react/jsx-runtime";
4
+ import k from "@mui/material/IconButton";
5
+ import C from "@mui/material/ListItemText";
6
+ import L from "@mui/material/ListItemIcon";
7
+ import S from "@mui/material/MenuItem";
8
+ import y from "@mui/material/Menu";
9
+ var P = ({ items: d, ariaLabel: c, onOpen: p, disabled: h = !1 }) => {
10
+ const [e, n] = z(null), t = !!e, i = v(), a = `${i}-button`, l = `${i}-menu`, u = (o) => {
11
+ n(o.currentTarget), p?.();
12
+ }, s = () => n(null), f = (o) => {
13
+ s(), o();
14
+ };
15
+ return /* @__PURE__ */ m(O, { children: [/* @__PURE__ */ r(k, {
16
+ "aria-controls": t ? l : void 0,
17
+ "aria-expanded": t || void 0,
18
+ "aria-haspopup": "true",
19
+ "aria-label": c,
20
+ disabled: h,
21
+ id: a,
22
+ onClick: u,
23
+ sx: {
24
+ minHeight: 24,
25
+ minWidth: 24,
26
+ p: 0
27
+ },
28
+ children: /* @__PURE__ */ r(M, {
29
+ size: 24,
30
+ sx: { color: "neutral.dark" }
31
+ })
32
+ }), /* @__PURE__ */ r(y, {
33
+ MenuListProps: {
34
+ "aria-labelledby": a,
35
+ sx: { width: 212 }
36
+ },
37
+ anchorEl: e,
38
+ anchorOrigin: {
39
+ horizontal: "right",
40
+ vertical: "top"
41
+ },
42
+ disableScrollLock: !0,
43
+ id: l,
44
+ onClose: s,
45
+ open: t,
46
+ transformOrigin: {
47
+ horizontal: "right",
48
+ vertical: "top"
49
+ },
50
+ children: d.map(({ key: o, icon: x, label: g, onSelect: b, disabled: I }) => /* @__PURE__ */ m(S, {
51
+ disabled: I,
52
+ onClick: () => f(b),
53
+ sx: { p: 12 },
54
+ children: [/* @__PURE__ */ r(L, {
55
+ sx: { minWidth: "32px !important" },
56
+ children: x
57
+ }), /* @__PURE__ */ r(C, {
58
+ primary: g,
59
+ slotProps: { primary: {
60
+ fontSize: 15,
61
+ fontWeight: "normal",
62
+ lineHeight: "20px"
63
+ } }
64
+ })]
65
+ }, o))
66
+ })] });
67
+ };
68
+ export {
69
+ P as OverflowMenu,
70
+ P as default
71
+ };
72
+
73
+ //# sourceMappingURL=OverflowMenu.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverflowMenu.es.js","names":[],"sources":["../../../src/insights-v2/components/OverflowMenu.tsx"],"sourcesContent":["import { useId, useState, type MouseEvent, type ReactNode } from 'react'\n\nimport IconButton from '@mui/material/IconButton'\nimport ListItemIcon from '@mui/material/ListItemIcon'\nimport ListItemText from '@mui/material/ListItemText'\nimport Menu from '@mui/material/Menu'\nimport MenuItem from '@mui/material/MenuItem'\n\nimport { MoreHoriz } from '@mxenabled/mx-icons'\n\nexport interface OverflowMenuItem {\n /** Stable identity for the item (also its React key). */\n key: string\n /** Leading icon node. */\n icon: ReactNode\n /** Visible label. */\n label: string\n /** Invoked when the item is chosen (after the menu closes). */\n onSelect: () => void\n /** Optional per-item disabled state. */\n disabled?: boolean\n}\n\nexport interface OverflowMenuProps {\n /** Items to render, top to bottom. */\n items: OverflowMenuItem[]\n /** Accessible label for the trigger button. */\n ariaLabel: string\n /** Called when the menu opens (e.g. to fire analytics). */\n onOpen?: () => void\n /** Disables the trigger entirely (e.g. an obsolete beat). */\n disabled?: boolean\n}\n\n/**\n * A \"…\" (MoreHoriz) overflow menu: an icon trigger that opens a list of actions.\n *\n * Presentational only — it owns nothing but the open/close anchor state. The item\n * set and what each item does are supplied by the caller via `items[].onSelect`,\n * so all data/side-effects (analytics, feedback, hide, …) live outside this file.\n */\nexport const OverflowMenu = ({ items, ariaLabel, onOpen, disabled = false }: OverflowMenuProps) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n const isOpen = Boolean(anchorEl)\n\n // Unique per instance so multiple menus on a page (one per card) don't share\n // DOM ids or cross-wire their aria relationships.\n const baseId = useId()\n const buttonId = `${baseId}-button`\n const menuId = `${baseId}-menu`\n\n const handleOpen = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget)\n onOpen?.()\n }\n\n const handleClose = () => setAnchorEl(null)\n\n // Close before running the caller's handler so the menu never lingers over a\n // dialog/drawer the handler may open.\n const handleSelect = (onSelect: () => void) => {\n handleClose()\n onSelect()\n }\n\n return (\n <>\n <IconButton\n aria-controls={isOpen ? menuId : undefined}\n aria-expanded={isOpen || undefined}\n aria-haspopup=\"true\"\n aria-label={ariaLabel}\n disabled={disabled}\n id={buttonId}\n onClick={handleOpen}\n sx={{ minHeight: 24, minWidth: 24, p: 0 }}\n >\n <MoreHoriz size={24} sx={{ color: 'neutral.dark' }} />\n </IconButton>\n <Menu\n MenuListProps={{ 'aria-labelledby': buttonId, sx: { width: 212 } }}\n anchorEl={anchorEl}\n anchorOrigin={{ horizontal: 'right', vertical: 'top' }}\n disableScrollLock={true}\n id={menuId}\n onClose={handleClose}\n open={isOpen}\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\n >\n {items.map(({ key, icon, label, onSelect, disabled: itemDisabled }) => (\n <MenuItem\n disabled={itemDisabled}\n key={key}\n onClick={() => handleSelect(onSelect)}\n sx={{ p: 12 }}\n >\n <ListItemIcon sx={{ minWidth: '32px !important' }}>{icon}</ListItemIcon>\n <ListItemText\n primary={label}\n slotProps={{ primary: { fontSize: 15, fontWeight: 'normal', lineHeight: '20px' } }}\n />\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n\nexport default OverflowMenu\n"],"mappings":";;;;;;;;AAyCA,IAAa,IAAA,CAAgB,EAAE,OAAA,GAAO,WAAA,GAAW,QAAA,GAAQ,UAAA,IAAW,GAAA,MAA+B;AACjG,QAAM,CAAC,GAAU,CAAA,IAAe,EAA6B,IAAI,GAC3D,IAAS,EAAQ,GAIjB,IAAS,EAAM,GACf,IAAW,GAAG,CAAA,WACd,IAAS,GAAG,CAAA,SAEZ,IAAA,CAAc,MAAyC;AAC3D,IAAA,EAAY,EAAM,aAAa,GAC/B,IAAS;AAAA,EACX,GAEM,IAAA,MAAoB,EAAY,IAAI,GAIpC,IAAA,CAAgB,MAAyB;AAC7C,IAAA,EAAY,GACZ,EAAS;AAAA,EACX;AAEA,SACE,gBAAA,EAAA,GAAA,EAAA,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,IACE,iBAAe,IAAS,IAAS;AAAA,IACjC,iBAAe,KAAU;AAAA,IACzB,iBAAc;AAAA,IACd,cAAY;AAAA,IACF,UAAA;AAAA,IACV,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,MAAE,WAAW;AAAA,MAAI,UAAU;AAAA,MAAI,GAAG;AAAA,IAAE;AAAA,IAExC,UAAA,gBAAA,EAAC,GAAD;AAAA,MAAW,MAAM;AAAA,MAAI,IAAI,EAAE,OAAO,eAAe;AAAA,IAAI,CAAA;AAAA,EAC3C,CAAA,GACZ,gBAAA,EAAC,GAAD;AAAA,IACE,eAAe;AAAA,MAAE,mBAAmB;AAAA,MAAU,IAAI,EAAE,OAAO,IAAI;AAAA,IAAE;AAAA,IACvD,UAAA;AAAA,IACV,cAAc;AAAA,MAAE,YAAY;AAAA,MAAS,UAAU;AAAA,IAAM;AAAA,IACrD,mBAAmB;AAAA,IACnB,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,MAAM;AAAA,IACN,iBAAiB;AAAA,MAAE,YAAY;AAAA,MAAS,UAAU;AAAA,IAAM;AAAA,IAEvD,UAAA,EAAM,IAAA,CAAK,EAAE,KAAA,GAAK,MAAA,GAAM,OAAA,GAAO,UAAA,GAAU,UAAU,EAAA,MAClD,gBAAA,EAAC,GAAD;AAAA,MACE,UAAU;AAAA,MAEV,SAAA,MAAe,EAAa,CAAQ;AAAA,MACpC,IAAI,EAAE,GAAG,GAAG;AAAA,MAJd,UAAA,CAME,gBAAA,EAAC,GAAD;AAAA,QAAc,IAAI,EAAE,UAAU,kBAAkB;AAAA,QAAI,UAAA;AAAA,MAAmB,CAAA,GACvE,gBAAA,EAAC,GAAD;AAAA,QACE,SAAS;AAAA,QACT,WAAW,EAAE,SAAS;AAAA,UAAE,UAAU;AAAA,UAAI,YAAY;AAAA,UAAU,YAAY;AAAA,QAAO,EAAE;AAAA,MAClF,CAAA,CACO;AAAA,IATH,GAAA,CASG,CACX;AAAA,EACG,CAAA,CACN,EAAA,CAAA;AAEN"}
@@ -7,6 +7,9 @@ export { default as StatusMessageCard } from './components/StatusMessageCard';
7
7
  export { default as TransactionListCard, type FooterRow } from './components/TransactionListCard';
8
8
  export { default as InsightTransactionRow, type InsightTransactionRowProps, } from './components/InsightTransactionRow';
9
9
  export { default as LogoClusterCard } from './components/LogoClusterCard';
10
+ export { default as OverflowMenu, type OverflowMenuItem, type OverflowMenuProps, } from './components/OverflowMenu';
11
+ export { default as InsightOptionsMenu } from './components/InsightOptionsMenu';
12
+ export { useBeatActions, type BeatActions, type MenuActionHandlers, type UpdateParams, type InsightMenuAction, } from './beatActions';
10
13
  export { default as LogoTile } from './components/LogoTile';
11
14
  export { default as MerchantHighlightCard } from './components/MerchantHighlightCard';
12
15
  export { default as P2PLogoStack } from './components/P2PLogoStack';
@@ -1,63 +1,69 @@
1
- import { BAR_CHART_VARIANTS as o, barChartVariant as t, buildChartData as m, buildDataSeries as i } from "./blocks/ChartBlocks/BarchartBlock/utils.es.js";
1
+ import { BAR_CHART_VARIANTS as r, barChartVariant as t, buildChartData as m, buildDataSeries as i } from "./blocks/ChartBlocks/BarchartBlock/utils.es.js";
2
2
  import { BarchartBlock as p } from "./blocks/ChartBlocks/BarchartBlock/BarchartBlock.es.js";
3
- import { DoubleBarChartBlock as c } from "./blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChartBlock.es.js";
4
- import l from "./blocks/ChartBlocks/StepChartBlock/StepChartBlock.es.js";
3
+ import { DoubleBarChartBlock as e } from "./blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChartBlock.es.js";
4
+ import n from "./blocks/ChartBlocks/StepChartBlock/StepChartBlock.es.js";
5
5
  import s from "./blocks/ChartBlocks/DonutChartBlock/DonutChartBlock.es.js";
6
6
  import B from "./blocks/ChartBlocks/DoubleProgressBarBlock/DoubleProgressBarBlock.es.js";
7
- import u from "./blocks/ComponentBlocks/AccountBlock/AccountBlock.es.js";
7
+ import g from "./blocks/ComponentBlocks/AccountBlock/AccountBlock.es.js";
8
8
  import S from "./components/TransferLogoCard.es.js";
9
- import h from "./blocks/ComponentBlocks/AccountSwitchBlock/AccountSwitchBlock.es.js";
9
+ import k from "./blocks/ComponentBlocks/AccountSwitchBlock/AccountSwitchBlock.es.js";
10
10
  import { BudgetBlock as T } from "./blocks/ComponentBlocks/BudgetBlock/BudgetBlock.es.js";
11
11
  import D from "./components/SaveAnExtraCard.es.js";
12
- import P from "./blocks/ComponentBlocks/SaveExtraBlock/SaveExtraBlock.es.js";
12
+ import v from "./blocks/ComponentBlocks/SaveExtraBlock/SaveExtraBlock.es.js";
13
13
  import y from "./components/InsightTransactionRow.es.js";
14
- import R from "./components/TransactionListCard.es.js";
15
- import { CategoryTransactionsBlock as E } from "./blocks/ComponentBlocks/TransactionBlock/TransactionBlock.es.js";
16
- import { SVGImageBlock as V } from "./blocks/ImageBlocks/SVGImageBlock/SVGImageBlock.es.js";
17
- import M from "./components/AccountHeroCard.es.js";
18
- import G from "./components/AmountPill.es.js";
19
- import O from "./components/DesignateEmergencySavingsCard.es.js";
20
- import j from "./components/BaseLayout.es.js";
21
- import z from "./components/StatusMessageCard.es.js";
22
- import J from "./components/LogoTile.es.js";
23
- import Q from "./components/LogoClusterCard.es.js";
24
- import X from "./components/MerchantHighlightCard.es.js";
25
- import Z from "./components/P2PLogoStack.es.js";
26
- import rr from "./components/SavingsOpportunityCard.es.js";
27
- import tr from "./components/StatusPill.es.js";
28
- import ir from "./components/SubscriptionHeroCard.es.js";
29
- import pr from "./components/UpcomingBillCard.es.js";
14
+ import I from "./components/TransactionListCard.es.js";
15
+ import { CategoryTransactionsBlock as R } from "./blocks/ComponentBlocks/TransactionBlock/TransactionBlock.es.js";
16
+ import { SVGImageBlock as x } from "./blocks/ImageBlocks/SVGImageBlock/SVGImageBlock.es.js";
17
+ import O from "./components/AccountHeroCard.es.js";
18
+ import _ from "./components/AmountPill.es.js";
19
+ import N from "./components/DesignateEmergencySavingsCard.es.js";
20
+ import { useBeatActions as j } from "./beatActions.es.js";
21
+ import { OverflowMenu as z } from "./components/OverflowMenu.es.js";
22
+ import { InsightOptionsMenu as J } from "./components/InsightOptionsMenu.es.js";
23
+ import Q from "./components/BaseLayout.es.js";
24
+ import X from "./components/StatusMessageCard.es.js";
25
+ import Z from "./components/LogoTile.es.js";
26
+ import oo from "./components/LogoClusterCard.es.js";
27
+ import to from "./components/MerchantHighlightCard.es.js";
28
+ import io from "./components/P2PLogoStack.es.js";
29
+ import po from "./components/SavingsOpportunityCard.es.js";
30
+ import eo from "./components/StatusPill.es.js";
31
+ import no from "./components/SubscriptionHeroCard.es.js";
32
+ import so from "./components/UpcomingBillCard.es.js";
30
33
  export {
31
- u as AccountBlock,
32
- M as AccountHeroCard,
33
- h as AccountSwitchBlock,
34
- G as AmountPill,
35
- o as BAR_CHART_VARIANTS,
34
+ g as AccountBlock,
35
+ O as AccountHeroCard,
36
+ k as AccountSwitchBlock,
37
+ _ as AmountPill,
38
+ r as BAR_CHART_VARIANTS,
36
39
  p as BarchartBlock,
37
- j as BaseLayout,
40
+ Q as BaseLayout,
38
41
  T as BudgetBlock,
39
- E as CategoryTransactionsBlock,
40
- O as DesignateEmergencySavingsCard,
42
+ R as CategoryTransactionsBlock,
43
+ N as DesignateEmergencySavingsCard,
41
44
  s as DonutChartBlock,
42
- c as DoubleBarChartBlock,
45
+ e as DoubleBarChartBlock,
43
46
  B as DoubleProgressBarBlock,
47
+ J as InsightOptionsMenu,
44
48
  y as InsightTransactionRow,
45
- Q as LogoClusterCard,
46
- J as LogoTile,
47
- X as MerchantHighlightCard,
48
- Z as P2PLogoStack,
49
- V as SVGImageBlock,
49
+ oo as LogoClusterCard,
50
+ Z as LogoTile,
51
+ to as MerchantHighlightCard,
52
+ z as OverflowMenu,
53
+ io as P2PLogoStack,
54
+ x as SVGImageBlock,
50
55
  D as SaveAnExtraCard,
51
- P as SaveExtraBlock,
52
- rr as SavingsOpportunityCard,
53
- z as StatusMessageCard,
54
- tr as StatusPill,
55
- l as StepChartBlock,
56
- ir as SubscriptionHeroCard,
57
- R as TransactionListCard,
56
+ v as SaveExtraBlock,
57
+ po as SavingsOpportunityCard,
58
+ X as StatusMessageCard,
59
+ eo as StatusPill,
60
+ n as StepChartBlock,
61
+ no as SubscriptionHeroCard,
62
+ I as TransactionListCard,
58
63
  S as TransferLogoCard,
59
- pr as UpcomingBillCard,
64
+ so as UpcomingBillCard,
60
65
  t as barChartVariant,
61
66
  m as buildChartData,
62
- i as buildDataSeries
67
+ i as buildDataSeries,
68
+ j as useBeatActions
63
69
  };