@mx-cartographer/experiences 9.1.3 → 9.1.4-alpha.al0

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 (128) hide show
  1. package/CHANGELOG.md +0 -6
  2. package/dist/{AccountDetailsDrawer-Cq4kiiKD.mjs → AccountDetailsDrawer-Dae8eUXt.mjs} +10 -10
  3. package/dist/{AccountDetailsDrawer-Cq4kiiKD.mjs.map → AccountDetailsDrawer-Dae8eUXt.mjs.map} +1 -1
  4. package/dist/{AccountDetailsHeader-BliEZhz7.mjs → AccountDetailsHeader-D_UjMD99.mjs} +4 -4
  5. package/dist/{AccountDetailsHeader-BliEZhz7.mjs.map → AccountDetailsHeader-D_UjMD99.mjs.map} +1 -1
  6. package/dist/{Analytics-CkYXKvco.mjs → Analytics-BJDUP2qI.mjs} +2 -2
  7. package/dist/{Analytics-CkYXKvco.mjs.map → Analytics-BJDUP2qI.mjs.map} +1 -1
  8. package/dist/{CategorySelectorDrawer-NJsFsKP1.mjs → CategorySelectorDrawer-k8AZYC8I.mjs} +2 -2
  9. package/dist/{CategorySelectorDrawer-NJsFsKP1.mjs.map → CategorySelectorDrawer-k8AZYC8I.mjs.map} +1 -1
  10. package/dist/{Connect-BH0Pt6zc.mjs → Connect-tID_S_5e.mjs} +2 -2
  11. package/dist/{Connect-BH0Pt6zc.mjs.map → Connect-tID_S_5e.mjs.map} +1 -1
  12. package/dist/{ConnectCard-D7uxoH5Y.mjs → ConnectCard-DcM6tUOX.mjs} +2 -2
  13. package/dist/{ConnectCard-D7uxoH5Y.mjs.map → ConnectCard-DcM6tUOX.mjs.map} +1 -1
  14. package/dist/{ConnectDrawer-CW4LA3H3.mjs → ConnectDrawer-BQy4YYuc.mjs} +3 -3
  15. package/dist/{ConnectDrawer-CW4LA3H3.mjs.map → ConnectDrawer-BQy4YYuc.mjs.map} +1 -1
  16. package/dist/{ConnectionsDrawer-CZU9ku-k.mjs → ConnectionsDrawer-C73ASLMj.mjs} +3 -3
  17. package/dist/{ConnectionsDrawer-CZU9ku-k.mjs.map → ConnectionsDrawer-C73ASLMj.mjs.map} +1 -1
  18. package/dist/{CurrencyInput-DaGEQaLW.mjs → CurrencyInput-CABYmqBh.mjs} +2 -2
  19. package/dist/{CurrencyInput-DaGEQaLW.mjs.map → CurrencyInput-CABYmqBh.mjs.map} +1 -1
  20. package/dist/{EmbeddedCard-DCOQnTz-.mjs → EmbeddedCard-BwfkCsUN.mjs} +3 -3
  21. package/dist/{EmbeddedCard-DCOQnTz-.mjs.map → EmbeddedCard-BwfkCsUN.mjs.map} +1 -1
  22. package/dist/{Error-Dtw6yxkf.mjs → Error-BFJ3BnfS.mjs} +2 -2
  23. package/dist/{Error-Dtw6yxkf.mjs.map → Error-BFJ3BnfS.mjs.map} +1 -1
  24. package/dist/ErrorBoundary-C7BlHx04.mjs +27 -0
  25. package/dist/ErrorBoundary-C7BlHx04.mjs.map +1 -0
  26. package/dist/{ExportCsvAction-C-IisDcv.mjs → ExportCsvAction-B1257a3M.mjs} +3 -3
  27. package/dist/{ExportCsvAction-C-IisDcv.mjs.map → ExportCsvAction-B1257a3M.mjs.map} +1 -1
  28. package/dist/{GlobalAccountFilter-BhzR5Vb1.mjs → GlobalAccountFilter-DEEc3Bc5.mjs} +2 -2
  29. package/dist/{GlobalAccountFilter-BhzR5Vb1.mjs.map → GlobalAccountFilter-DEEc3Bc5.mjs.map} +1 -1
  30. package/dist/GlobalCopyApi-Tz10hezK.mjs +130 -0
  31. package/dist/GlobalCopyApi-Tz10hezK.mjs.map +1 -0
  32. package/dist/{Help-zVZdcmlk.mjs → Help-BAj_yo3q.mjs} +145 -145
  33. package/dist/Help-BAj_yo3q.mjs.map +1 -0
  34. package/dist/{LineChart-CUfiH86G.mjs → LineChart-BxEIZHht.mjs} +2 -2
  35. package/dist/{LineChart-CUfiH86G.mjs.map → LineChart-BxEIZHht.mjs.map} +1 -1
  36. package/dist/{ListItemAction-BqUCLj_w.mjs → ListItemAction-GDU5z4BN.mjs} +2 -2
  37. package/dist/{ListItemAction-BqUCLj_w.mjs.map → ListItemAction-GDU5z4BN.mjs.map} +1 -1
  38. package/dist/{ListItemWrapper-DRse79Iu.mjs → ListItemWrapper-D6b-6m4t.mjs} +2 -2
  39. package/dist/{ListItemWrapper-DRse79Iu.mjs.map → ListItemWrapper-D6b-6m4t.mjs.map} +1 -1
  40. package/dist/{ManageIncome-B_8i71mE.mjs → ManageIncome-BJWVPAly.mjs} +32 -32
  41. package/dist/{ManageIncome-B_8i71mE.mjs.map → ManageIncome-BJWVPAly.mjs.map} +1 -1
  42. package/dist/{MicroWidgetContainer-B2NnKBgW.mjs → MicroWidgetContainer-IUZQlml1.mjs} +2 -2
  43. package/dist/{MicroWidgetContainer-B2NnKBgW.mjs.map → MicroWidgetContainer-IUZQlml1.mjs.map} +1 -1
  44. package/dist/{MiniWidgetContainer-Bmv_WeUd.mjs → MiniWidgetContainer-CIswJui8.mjs} +2 -2
  45. package/dist/{MiniWidgetContainer-Bmv_WeUd.mjs.map → MiniWidgetContainer-CIswJui8.mjs.map} +1 -1
  46. package/dist/{NotificationSettings-CW7okUrk.mjs → NotificationSettings-DltXMrnb.mjs} +33 -33
  47. package/dist/{NotificationSettings-CW7okUrk.mjs.map → NotificationSettings-DltXMrnb.mjs.map} +1 -1
  48. package/dist/{OriginalBalanceAction-YrvxBYAl.mjs → OriginalBalanceAction-KuJSsZCA.mjs} +4 -4
  49. package/dist/{OriginalBalanceAction-YrvxBYAl.mjs.map → OriginalBalanceAction-KuJSsZCA.mjs.map} +1 -1
  50. package/dist/{RecurringSettings-hs0YUp83.mjs → RecurringSettings-D2Aaqz7d.mjs} +3 -3
  51. package/dist/{RecurringSettings-hs0YUp83.mjs.map → RecurringSettings-D2Aaqz7d.mjs.map} +1 -1
  52. package/dist/{SpendingLegend-CxvNOg3c.mjs → SpendingLegend-C_dMdqbe.mjs} +2 -2
  53. package/dist/{SpendingLegend-CxvNOg3c.mjs.map → SpendingLegend-C_dMdqbe.mjs.map} +1 -1
  54. package/dist/{TransactionDetails-DT-MQqOB.mjs → TransactionDetails-CDZNsKv7.mjs} +5 -5
  55. package/dist/{TransactionDetails-DT-MQqOB.mjs.map → TransactionDetails-CDZNsKv7.mjs.map} +1 -1
  56. package/dist/{UserStore-E5WvBXaY.mjs → UserStore-DzGgxsKk.mjs} +302 -317
  57. package/dist/UserStore-DzGgxsKk.mjs.map +1 -0
  58. package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs → ViewMoreMicroCard-DXaJ-56q.mjs} +4 -4
  59. package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs.map → ViewMoreMicroCard-DXaJ-56q.mjs.map} +1 -1
  60. package/dist/{WidgetContainer-CjdCY4sj.mjs → WidgetContainer-5O6N88mr.mjs} +3 -3
  61. package/dist/{WidgetContainer-CjdCY4sj.mjs.map → WidgetContainer-5O6N88mr.mjs.map} +1 -1
  62. package/dist/accounts/index.es.js +11 -11
  63. package/dist/analytics/index.es.js +2 -2
  64. package/dist/budgets/index.es.js +10 -10
  65. package/dist/cashflow/index.es.js +70 -70
  66. package/dist/categories/index.es.js +1 -1
  67. package/dist/common/components/ErrorBoundary.d.ts +2 -0
  68. package/dist/common/context/GlobalDataProvider.d.ts +2 -1
  69. package/dist/common/context/hooks.d.ts +3 -0
  70. package/dist/common/context/index.d.ts +1 -1
  71. package/dist/common/index.es.js +66 -65
  72. package/dist/core/api/AccountApi.d.ts +2 -2
  73. package/dist/core/api/AnalyticsApi.d.ts +2 -2
  74. package/dist/core/api/AppDataApi.d.ts +2 -2
  75. package/dist/core/api/BeatApi.d.ts +2 -2
  76. package/dist/core/api/BudgetsApi.d.ts +2 -2
  77. package/dist/core/api/CategoryApi.d.ts +2 -2
  78. package/dist/core/api/FinstrongApi.d.ts +2 -2
  79. package/dist/core/api/GlobalCopyApi.d.ts +2 -2
  80. package/dist/core/api/GoalApi.d.ts +2 -2
  81. package/dist/core/api/HelpApi.d.ts +2 -2
  82. package/dist/core/api/HoldingApi.d.ts +2 -2
  83. package/dist/core/api/MerchantApi.d.ts +2 -2
  84. package/dist/core/api/NotificationApi.d.ts +2 -2
  85. package/dist/core/api/RepeatingTransactionsApi.d.ts +2 -2
  86. package/dist/core/api/ScheduledPaymentsApi.d.ts +2 -2
  87. package/dist/core/api/SettingsApi.d.ts +2 -2
  88. package/dist/core/api/TransactionApi.d.ts +2 -2
  89. package/dist/core/api/UserApi.d.ts +2 -2
  90. package/dist/core/index.es.js +95 -95
  91. package/dist/core/index.es.js.map +1 -1
  92. package/dist/core/stores/GlobalStore.d.ts +4 -2
  93. package/dist/core/types/Handlers.d.ts +1 -0
  94. package/dist/core/types/index.d.ts +1 -1
  95. package/dist/core/utils/Fetch.d.ts +3 -2
  96. package/dist/dashboard/index.es.js +4 -4
  97. package/dist/debts/index.es.js +8 -8
  98. package/dist/finstrong/index.es.js +12 -12
  99. package/dist/goals/index.es.js +9 -9
  100. package/dist/help/index.es.js +4 -4
  101. package/dist/hooks-DWOrMnfZ.mjs +83 -0
  102. package/dist/hooks-DWOrMnfZ.mjs.map +1 -0
  103. package/dist/insights/index.es.js +4 -4
  104. package/dist/investments/index.es.js +4 -4
  105. package/dist/merchants/index.es.js +1 -1
  106. package/dist/microinsights/index.es.js +1 -1
  107. package/dist/networth/index.es.js +6 -6
  108. package/dist/notifications/index.es.js +8 -8
  109. package/dist/recurringtransactions/index.es.js +38 -38
  110. package/dist/settings/index.es.js +27 -27
  111. package/dist/spending/index.es.js +7 -7
  112. package/dist/transactions/index.es.js +11 -11
  113. package/dist/trends/index.es.js +12 -12
  114. package/dist/{useAccountDisplayName-BsiXA0qf.mjs → useAccountDisplayName-DHXXCFYZ.mjs} +2 -2
  115. package/dist/{useAccountDisplayName-BsiXA0qf.mjs.map → useAccountDisplayName-DHXXCFYZ.mjs.map} +1 -1
  116. package/dist/{useInsightsEnabled-D5Sdm0TJ.mjs → useInsightsEnabled-B_UpjpE6.mjs} +2 -2
  117. package/dist/{useInsightsEnabled-D5Sdm0TJ.mjs.map → useInsightsEnabled-B_UpjpE6.mjs.map} +1 -1
  118. package/dist/{useWidgetLoadTimer-B0tB-yzL.mjs → useWidgetLoadTimer-C0Mr0eRf.mjs} +2 -2
  119. package/dist/{useWidgetLoadTimer-B0tB-yzL.mjs.map → useWidgetLoadTimer-C0Mr0eRf.mjs.map} +1 -1
  120. package/package.json +1 -1
  121. package/dist/ErrorBoundary-CsdOcnJ9.mjs +0 -24
  122. package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +0 -1
  123. package/dist/GlobalCopyApi-wcnDUzMV.mjs +0 -129
  124. package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +0 -1
  125. package/dist/Help-zVZdcmlk.mjs.map +0 -1
  126. package/dist/UserStore-E5WvBXaY.mjs.map +0 -1
  127. package/dist/hooks-97sNJ_lf.mjs +0 -78
  128. package/dist/hooks-97sNJ_lf.mjs.map +0 -1
@@ -15,9 +15,9 @@ import { C as Je } from "./Category-DEKZGLYe.mjs";
15
15
  import { b as et } from "./Localization-DnoVyBNK.mjs";
16
16
  import tt from "@mui/material/CircularProgress";
17
17
  import { makeAutoObservable as _e, runInAction as ve } from "mobx";
18
- import { a as ot, u as nt, b as it } from "./Analytics-CkYXKvco.mjs";
19
- import { G as Ee, B as ye } from "./GlobalCopyApi-wcnDUzMV.mjs";
20
- import { u as rt } from "./useWidgetLoadTimer-B0tB-yzL.mjs";
18
+ import { a as ot, u as nt, b as it } from "./Analytics-BJDUP2qI.mjs";
19
+ import { G as Ee, B as ye } from "./GlobalCopyApi-Tz10hezK.mjs";
20
+ import { u as rt } from "./useWidgetLoadTimer-C0Mr0eRf.mjs";
21
21
  import { Card as at, CardActionArea as st, Box as ct, IconButton as lt, Stack as K, Button as fe } from "@mui/material";
22
22
  class dt {
23
23
  copyApi = new Ee("/", "");
@@ -1277,4 +1277,4 @@ export {
1277
1277
  J as c,
1278
1278
  ft as d
1279
1279
  };
1280
- //# sourceMappingURL=ViewMoreMicroCard-fnwE0hqd.mjs.map
1280
+ //# sourceMappingURL=ViewMoreMicroCard-DXaJ-56q.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewMoreMicroCard-fnwE0hqd.mjs","sources":["../src/microinsights/stores/CopyStore.ts","../src/microinsights/constants/Analytics.ts","../src/microinsights/analytics.ts","../src/microinsights/stores/InsightsMicroWidgetStore.ts","../src/microinsights/stores/AppStore.ts","../src/microinsights/context/InsightsMicroWidgetDataProvider.tsx","../src/microinsights/beaticons/BeatCategoryIcon.tsx","../src/microinsights/beaticons/BeatMerchantLogo.tsx","../src/microinsights/utils/DataSeries.ts","../src/microinsights/utils/colorType.ts","../src/microinsights/beaticons/MonthlySpendComparisonIcon.tsx","../src/microinsights/beaticons/AverageSpendComparisonIcon.tsx","../src/microinsights/beaticons/AreaChartIcon.tsx","../src/microinsights/beaticons/InstitutionLogoIcon.tsx","../src/microinsights/beaticons/BeatIcon.tsx","../src/microinsights/context/hooks.tsx","../src/microinsights/constants/App.ts","../src/microinsights/MicroCardTemplate.tsx","../src/microinsights/cards/InsightCard.tsx","../src/microinsights/carousel/CarouselControls.tsx","../src/microinsights/carousel/BeatList.tsx","../src/microinsights/carousel/MicroBeatCarousel.tsx","../src/microinsights/carousel/CarouselHeader.tsx","../src/microinsights/MicroWidgetContainer.tsx","../src/microinsights/cards/NoRelevantInsightsCard.tsx","../src/microinsights/cards/ZeroStateCard.tsx","../src/microinsights/Spinner.tsx","../src/trends/constants/TrendsWidget.ts","../src/microinsights/InsightsMicroWidget.tsx","../src/microinsights/cards/ViewMoreMicroCard.tsx"],"sourcesContent":["import { makeAutoObservable, runInAction } from 'mobx'\nimport { GlobalCopyApi } from '../../core/api/GlobalCopyApi'\nimport type { MicroInsightsCopy } from '../../core/types/localization'\n\nexport class CopyStore {\n copyApi: GlobalCopyApi = new GlobalCopyApi('/', '')\n copyObject: MicroInsightsCopy = {} as MicroInsightsCopy\n namespace = 'experiences'\n translationKey = 'micro_insights'\n\n constructor() {\n makeAutoObservable(this)\n }\n\n // NOTE: Not sure if this is special case, but other stores have this deprecation todo\n // DEPRECATED: Initialize api in constructor and use loadCopy instead\n // TODO: Remove this function\n initialize = async (endpoint: string, token: string) => {\n this.copyApi = new GlobalCopyApi(endpoint, token)\n await this.loadCopy()\n }\n\n loadCopy = async () => {\n const copy = await this.copyApi.getGlobalCopy(this.namespace, this.translationKey)\n\n runInAction(() => {\n this.copyObject = copy[this.translationKey]\n })\n }\n\n get cardsCopy(): any {\n return this.copyObject.cards\n }\n\n get carouselCopy(): any {\n return this.copyObject.carousel\n }\n\n get zeroStateCopy(): any {\n return this.copyObject.zero_state\n }\n}\n","import type { BasicAnalyticsEvent } from '../../core/types/Analytics'\n\nexport const TEMPLATE_NAMES = {\n BillAmountNotStandard: 'BillAmountNotStandard',\n CanadianUpcomingDeadlineAlert: 'CanadianUpcomingDeadlineAlert',\n DuplicatePaymentV2: 'DuplicatePaymentV2',\n IntroducePulse: 'IntroducePulse',\n LargeTransaction: 'LargeTransaction',\n MonthlySpendToIncomeComparisonV2: 'MonthlySpendToIncomeComparisonV2',\n QuarterlySummary: 'QuarterlySummary',\n SpendingPlanCategorySpending: 'SpendingPlanCategorySpending',\n SubscriptionPriceIncrease: 'SubscriptionPriceIncrease',\n UncategorizedTransactionsV2: 'UncategorizedTransactionsV2',\n UpcomingBill: 'UpcomingBill',\n UnifiedDeposit: 'UnifiedDeposit',\n WeeklySpendingPlanSummary: 'WeeklySpendingPlanSummary',\n WeeklyNewMerchantsV2: 'WeeklyNewMerchantsV2',\n MonthlySpendComparison: 'MonthlySpendComparison',\n MonthlySpendToIncomeComparison: 'MonthlySpendToIncomeComparison',\n}\n\nconst instanceId = (window as any)?.app?.clientConfig?.microwidget_instance_id || ''\n\nconst PATHS = {\n INSIGHTS_MICRO_WIDGET: '/micro-insights-carousel',\n}\n\nexport const ON_CLICK_EVENT = (name: string) => `on${name}Click`\nexport const ON_VIEW_EVENT = (name: string) => `on${name}View`\nexport const ON_VIEW_FIRST_TIME_EVENT = (name: string) => `on${name}ViewFirstTime`\nexport const readableTemplateName = (name: string) => name.replace(/([a-z])([A-Z])/g, '$1 $2')\nexport const onBeatClickedEvents = () => {\n return Object.values(TEMPLATE_NAMES).reduce(\n (acc, name) => ({\n ...acc,\n [ON_CLICK_EVENT(name)]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_CLICKED,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: readableTemplateName(name),\n value: instanceId,\n },\n }),\n {},\n ) as Record<keyof AnalyticsEventsType, string>\n}\n\nexport const onBeatDisplayedEvents = () => {\n return Object.values(TEMPLATE_NAMES).reduce(\n (acc, name) => ({\n ...acc,\n [ON_VIEW_EVENT(name)]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_DISPLAYED,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: readableTemplateName(name),\n value: instanceId,\n },\n }),\n {},\n ) as Record<keyof AnalyticsEventsType, string>\n}\n\nexport const onBeatDisplayedForFirstTimeEvents = () => {\n return Object.values(TEMPLATE_NAMES).reduce(\n (acc, name) => ({\n ...acc,\n [ON_VIEW_FIRST_TIME_EVENT(name)]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_DISPLAYED_FIRST_TIME,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: readableTemplateName(name),\n value: instanceId,\n },\n }),\n {},\n ) as Record<keyof AnalyticsEventsType, string>\n}\n\nexport const ANALYTICS_LABELS = {\n CARD: 'Card',\n CAROUSEL_CONTROL: 'Carousel Control',\n MICRO_WIDGET: 'Micro Widget',\n VIEW_MORE: 'View More',\n}\n\nexport const ANALYTICS_CATEGORIES = {\n MICRO_WIDGET_INTERACTION: 'Micro Widget Interaction',\n BEAT_INTERACTION: 'Beat Interaction',\n}\n\nexport const ANALYTICS_CLICK_EVENTS = {\n ON_CAROUSEL_BACK_CLICK: 'onCarouselBackClick',\n ON_CAROUSEL_BACK_SWIPE: 'onCarouselBackSwipe',\n ON_CAROUSEL_FORWARD_CLICK: 'onCarouselForwardClick',\n ON_CAROUSEL_FORWARD_SWIPE: 'onCarouselForwardSwipe',\n ON_NO_RELEVANT_INSIGHTS_CLICKED: 'onNoRelevantInsightsClicked',\n ON_VIEW_MORE_CLICKED: 'onViewMoreClicked',\n}\n\nexport const ANALYTICS_VIEW_EVENTS = {\n ON_VIEW_MORE_VIEWED: 'onViewMoreCardView',\n}\n\nexport const ANALYTICS_ACTIONS = {\n CONTROL_BACKWARD: 'Control Backward',\n CONTROL_FORWARD: 'Control Forward',\n MICRO_BEAT_CLICKED: 'Micro Beat Clicked',\n MICRO_BEAT_DISPLAYED: 'Micro Beat Displayed',\n MICRO_BEAT_DISPLAYED_FIRST_TIME: 'Micro Beat Displayed For First Time',\n SWIPE_BACKWARD: 'Swipe Backward',\n SWIPE_FORWARD: 'Swipe Forward',\n}\n\nexport const ANALYTICS_PAGE_NAMES = {\n MICRO_WIDGET_CAROUSEL: 'Micro Widget Carousel',\n MICRO_WIDGET_CAROUSEL_ZERO_STATE: 'Micro Widget Carousel Zero State',\n MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS: 'Micro Widget Carousel No Relevant Insights',\n}\n\nexport const ANALYTICS_PAGEVIEWS = {\n [ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL]: {\n label: ANALYTICS_LABELS.MICRO_WIDGET,\n name: ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL,\n path: PATHS.INSIGHTS_MICRO_WIDGET,\n value: instanceId,\n },\n // zero state\n [ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_ZERO_STATE]: {\n label: ANALYTICS_LABELS.MICRO_WIDGET,\n name: ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_ZERO_STATE,\n path: PATHS.INSIGHTS_MICRO_WIDGET,\n value: instanceId,\n },\n // no relevant cards\n [ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS]: {\n label: ANALYTICS_LABELS.MICRO_WIDGET,\n name: ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS,\n path: '/micro-widget',\n value: instanceId,\n },\n}\n\nexport const ANALYTICS_EVENTS = {\n // carousel control interaction events - clicks and swipes\n [ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_BACK_CLICK]: {\n action: ANALYTICS_ACTIONS.CONTROL_BACKWARD,\n category: ANALYTICS_CATEGORIES.MICRO_WIDGET_INTERACTION,\n label: ANALYTICS_LABELS.CAROUSEL_CONTROL,\n value: instanceId,\n },\n [ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_FORWARD_CLICK]: {\n action: ANALYTICS_ACTIONS.CONTROL_FORWARD,\n category: ANALYTICS_CATEGORIES.MICRO_WIDGET_INTERACTION,\n label: ANALYTICS_LABELS.CAROUSEL_CONTROL,\n value: instanceId,\n },\n [ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_BACK_SWIPE]: {\n action: ANALYTICS_ACTIONS.SWIPE_BACKWARD,\n category: ANALYTICS_CATEGORIES.MICRO_WIDGET_INTERACTION,\n label: ANALYTICS_LABELS.CAROUSEL_CONTROL,\n value: instanceId,\n },\n [ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_FORWARD_SWIPE]: {\n action: ANALYTICS_ACTIONS.SWIPE_FORWARD,\n category: ANALYTICS_CATEGORIES.MICRO_WIDGET_INTERACTION,\n label: ANALYTICS_LABELS.CAROUSEL_CONTROL,\n value: instanceId,\n },\n // read more card events\n [ANALYTICS_CLICK_EVENTS.ON_VIEW_MORE_CLICKED]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_CLICKED,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: ANALYTICS_LABELS.VIEW_MORE,\n value: instanceId,\n },\n [ANALYTICS_VIEW_EVENTS.ON_VIEW_MORE_VIEWED]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_DISPLAYED,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: ANALYTICS_LABELS.VIEW_MORE,\n value: instanceId,\n },\n\n ...onBeatClickedEvents(),\n ...onBeatDisplayedEvents(),\n ...onBeatDisplayedForFirstTimeEvents(),\n}\n\nexport interface AnalyticsEventsObjectType extends BasicAnalyticsEvent {\n value: string\n}\n\nexport type AnalyticsEventsType = {\n [key: string]: AnalyticsEventsObjectType\n}\n","import { analyticsSession } from '../common/utils/Analytics'\nimport { AnalyticsPageviewObjectType } from '../core/types/Analytics'\n\nimport { ANALYTICS_EVENTS, ANALYTICS_PAGEVIEWS } from './constants/Analytics'\nimport type { AnalyticsEventsObjectType } from './constants/Analytics'\n\nexport type AnalyticSession = Awaited<ReturnType<typeof analyticsSession>>\n\nexport const onAnalyticEvent = async (event: string, session: AnalyticSession) => {\n if (!session || !ANALYTICS_EVENTS[event]) return null\n\n return session\n .sendAnalyticEvent(ANALYTICS_EVENTS[event] as AnalyticsEventsObjectType)\n .then((response) => response)\n .catch((error) => {\n throw error\n })\n}\n\nexport const onAnalyticPageView = async (page: string, session: AnalyticSession) => {\n if (!session || !ANALYTICS_PAGEVIEWS[page]) {\n return null\n }\n\n return session\n .sendAnalyticsPageview(ANALYTICS_PAGEVIEWS[page] as AnalyticsPageviewObjectType)\n .then((response) => response)\n .catch((error) => {\n throw error\n })\n}\n","import { makeAutoObservable } from 'mobx'\n\nimport { type AnalyticSession, onAnalyticEvent, onAnalyticPageView } from '../analytics'\nimport { BeatApi } from '../../core/api/BeatApi'\nimport type { Beat } from '../../core/types/Beat'\n\nexport interface ErrPromise<TSuccess, TError = unknown> {\n then<TResult1 = TSuccess, TResult2 = never>(\n onfulfilled?: ((value: TSuccess) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: TError) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n ): Promise<TResult1 | TResult2>\n catch<TResult = never>(\n onrejected?: ((reason: TError) => TResult | PromiseLike<TResult>) | undefined | null,\n ): Promise<TSuccess | TResult>\n}\n\nexport class InsightsMicroWidgetStore {\n onAnalyticEvent: (\n event: string,\n session: AnalyticSession,\n ) => ErrPromise<string, AnalyticSession> = onAnalyticEvent\n onAnalyticPageView: (\n event: string,\n session: AnalyticSession,\n ) => ErrPromise<string, AnalyticSession> = onAnalyticPageView\n\n beatApi = new BeatApi('/', '')\n\n constructor() {\n makeAutoObservable(this)\n }\n\n initialize = async (endpoint: string, token: string, logOutUser: () => void) => {\n this.onAnalyticEvent = (event: string, session: AnalyticSession): any => {\n onAnalyticEvent(event, session)\n .then((res) => res)\n .catch((err) => {\n if (err.status === 401) {\n logOutUser()\n }\n throw err\n })\n }\n\n this.onAnalyticPageView = (page: string, session: AnalyticSession): any => {\n onAnalyticPageView(page, session)\n .then((res) => res)\n .catch((err) => {\n if (err.status === 401) {\n logOutUser()\n }\n throw err\n })\n }\n\n this.beatApi = new BeatApi(endpoint, token)\n }\n\n updateBeat = async (beat: Beat) => {\n this.beatApi.updateBeat(beat)\n }\n\n updateOffer = async (beat: Beat) => {\n this.beatApi.updateOffer(beat)\n }\n}\n","import { makeAutoObservable, runInAction } from 'mobx'\n\nimport { analyticsSession } from '../../common/utils/Analytics'\n\nimport { CopyStore } from './CopyStore'\nimport { InsightsMicroWidgetStore } from './InsightsMicroWidgetStore'\n\nimport type { AnalyticSession } from '../analytics'\n\nexport class AppStore {\n copyStore\n endpoint = '/'\n insightsMicroWidgetStore\n session: AnalyticSession | null = null\n token = ''\n\n isInitialized = false\n\n constructor() {\n this.copyStore = new CopyStore()\n this.insightsMicroWidgetStore = new InsightsMicroWidgetStore()\n makeAutoObservable(this)\n }\n\n initialize = async (endpoint: string, token: string, logOutUser: () => void) => {\n await this.copyStore.initialize(endpoint, token)\n await this.insightsMicroWidgetStore.initialize(endpoint, token, logOutUser)\n const session = await analyticsSession(endpoint, token, '1.0.0', 'Micro Insights Carousel')\n\n runInAction(() => {\n this.session = session\n this.isInitialized = true\n })\n }\n}\n","import React from 'react'\n\nimport { type GlobalEventHandler } from '../../core'\nimport type { AppStore } from '../stores/AppStore'\n\nexport interface InsightsMicroWidgetContextTypes {\n children: React.ReactNode\n onEvent: GlobalEventHandler\n onPageview: (page: string) => void\n store: AppStore\n}\n\nexport const InsightsMicroWidgetDataContext =\n React.createContext<InsightsMicroWidgetContextTypes | null>(null)\n\nexport const InsightsMicroWidgetDataProvider: React.FC<InsightsMicroWidgetContextTypes> = ({\n onEvent,\n onPageview,\n store,\n children,\n}) => (\n <InsightsMicroWidgetDataContext.Provider value={{ onEvent, onPageview, store, children }}>\n {children}\n </InsightsMicroWidgetDataContext.Provider>\n)\n","import { FC } from 'react'\n\nimport { CategoryIcon } from '@mxenabled/mxui'\n\nimport { CategoryGuids } from '../../core/constants/Category'\nimport type { WeGotTheBeat } from '../interfaces'\n\nexport const BeatCategoryIcon: FC<WeGotTheBeat> = ({ beat }) => {\n const { primary_category_guid, category_guids } = beat\n const categoryGuid = primary_category_guid || category_guids?.[0] || CategoryGuids.UNCATEGORIZED\n\n return <CategoryIcon categoryGuid={categoryGuid} size={32} sx={{ minWidth: 32 }} />\n}\n","import { FC } from 'react'\n\nimport { MerchantLogo } from '@mxenabled/mxui'\n\nimport type { WeGotTheBeat } from '../interfaces'\n\nconst BeatMerchantLogo: FC<WeGotTheBeat> = ({ beat }) => {\n const { category_guids, merchant_guids, primary_category_guid, primary_merchant_guid } = beat\n return (\n <MerchantLogo\n categoryGuid={primary_category_guid || (category_guids && category_guids[0]) || ''}\n merchantGuid={primary_merchant_guid || merchant_guids[0]}\n size={32}\n sx={{\n display: 'flex',\n mt: 2,\n minWidth: 32,\n }}\n />\n )\n}\n\nexport default BeatMerchantLogo\n","import type { DataSeries } from '../../core/types/Beat'\n\nexport const buildDataSeries = (data: DataSeries | undefined) => {\n if (!data) {\n return []\n }\n\n if (data.data) {\n return data.data.map((d) => {\n const item: any = {}\n\n data.names?.map((name, index) => {\n item[name] = d[index]\n })\n return item\n })\n } else {\n return []\n }\n}\n","import type { DataSeries } from '../../core/types/Beat'\nimport { buildDataSeries } from './DataSeries'\n\nconst PRIMARY = 'primary'\nconst SUCCESS = 'success'\nconst ERROR = 'error'\n\nexport type ColorType = typeof PRIMARY | typeof SUCCESS | typeof ERROR\n\n/**\n * Determines color type by comparing spending vs income from data series.\n * Data series is expected to have spending data in the first half and income data in the second half.\n *\n * @param data - DataSeries with spending and income data\n * @returns 'error' if spending > income, 'success' if spending < income, 'primary' otherwise\n */\nexport const getColorType = (data: DataSeries | undefined): ColorType => {\n const fullDataSeries = buildDataSeries(data)\n const incomeStartIndex = Math.floor(fullDataSeries.length / 2)\n\n if (incomeStartIndex === 0 || incomeStartIndex === fullDataSeries.length) return PRIMARY\n\n const spendAmount = fullDataSeries[0]?.amount\n const incomeAmount = fullDataSeries[incomeStartIndex]?.amount\n\n if (spendAmount == null || incomeAmount == null) return PRIMARY\n\n if (spendAmount > incomeAmount) return ERROR\n if (spendAmount < incomeAmount) return SUCCESS\n return PRIMARY\n}\n\n/**\n * Determines color type by comparing two numeric values.\n *\n * @param currentValue - Current value to compare\n * @param comparisonValue - Value to compare against\n * @returns 'success' if current < comparison, 'error' if current > comparison, 'primary' if equal\n */\nexport const getComparisonColorType = (\n currentValue: number,\n comparisonValue: number,\n): ColorType => {\n if (currentValue < comparisonValue) return SUCCESS\n if (currentValue > comparisonValue) return ERROR\n return PRIMARY\n}\n","import { FC } from 'react'\nimport { useTheme } from '@mui/material/styles'\nimport { alpha } from '@mui/material/styles'\n\nimport type { WeGotTheBeat } from '../interfaces'\nimport BeatMaterialIcon from './BeatMaterialIcon'\nimport { getColorType } from '../utils/colorType'\n\nexport const MonthlySpendComparisonIcon: FC<WeGotTheBeat> = ({ beat }) => {\n const theme = useTheme()\n const colorType = getColorType(beat.data_series)\n const bgColor = theme.palette[colorType].main\n\n return <BeatMaterialIcon bgColor={alpha(bgColor, 0.15)} iconColor={colorType} name=\"bar_chart\" />\n}\n","import { FC } from 'react'\nimport { useTheme } from '@mui/material/styles'\nimport { alpha } from '@mui/material/styles'\n\nimport type { WeGotTheBeat } from '../interfaces'\nimport BeatMaterialIcon from './BeatMaterialIcon'\nimport { getComparisonColorType } from '../utils/colorType'\n\nexport const AverageSpendComparisonIcon: FC<WeGotTheBeat> = ({ beat }) => {\n const theme = useTheme()\n\n // Get average spend from payload\n const averageSpend = beat.payload?.average_spend || 0\n\n // Get recent month value from data_series\n let recentMonthValue = 0\n if (beat.data_series?.data && beat.data_series.data.length > 0) {\n const names = beat.data_series.names || []\n const amountIndex = names.indexOf('amount')\n if (amountIndex !== -1) {\n recentMonthValue = beat.data_series.data[0][amountIndex] || 0\n }\n }\n\n // Determine color based on comparison\n const colorType = getComparisonColorType(recentMonthValue, averageSpend)\n\n return (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette[colorType].main, 0.15)}\n iconColor={colorType}\n name=\"timeline\"\n />\n )\n}\n","import { FC } from 'react'\n\nimport { useTheme } from '@mui/material/styles'\nimport { alpha } from '@mui/material/styles'\n\nimport type { WeGotTheBeat } from '../interfaces'\nimport BeatMaterialIcon from './BeatMaterialIcon'\nimport { getColorType } from '../utils/colorType'\n\nexport const AreaChartIcon: FC<WeGotTheBeat> = ({ beat }) => {\n const theme = useTheme()\n const colorType = getColorType(beat.data_series)\n const bgColor = theme.palette[colorType].main\n\n return (\n <BeatMaterialIcon\n bgColor={alpha(bgColor, 0.15)}\n fill={false}\n iconColor={colorType}\n name=\"area_chart\"\n />\n )\n}\n","import React from 'react'\nimport { InstitutionLogo } from '@mxenabled/mxui'\n\nimport type { Beat } from '../../core/types/Beat'\n\nexport const InstitutionLogoIcon: React.FC<{ beat: Beat }> = ({ beat }) => (\n <InstitutionLogo alt={beat.institutionName || ''} institutionGuid={beat.institutionGuid || ''} />\n)\n","import React from 'react'\n\nimport {\n AverageSpendComparisonIcon,\n BeatCategoryIcon,\n BeatMaterialIcon,\n BeatMerchantLogo,\n MonthlySpendComparisonIcon,\n AreaChartIcon,\n InstitutionLogoIcon,\n} from '.'\n\nimport type { WeGotTheBeat } from '../interfaces'\nimport type { Theme } from '@mui/material/styles'\nimport { alpha, useTheme } from '@mui/material/styles'\n\nconst iconTypeMap: Record<number, (beat: WeGotTheBeat['beat'], theme: Theme) => React.JSX.Element> =\n {\n 0: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"error\" />\n ),\n 1: (beat) => <BeatCategoryIcon beat={beat} />,\n 2: (beat) => <BeatMerchantLogo beat={beat} />,\n 3: (beat) => <MonthlySpendComparisonIcon beat={beat} />,\n 4: (_, theme) => {\n return (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.secondary.main, 0.15)}\n iconColor=\"secondary\"\n name=\"info\"\n />\n )\n },\n 5: (_, theme) => {\n return <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"campaign\" />\n },\n 6: (_, theme) => {\n return (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.success.main, 0.15)}\n iconColor=\"success\"\n name=\"check_circle\"\n />\n )\n },\n 7: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"today\" />\n ),\n 8: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"calendar_clock\" />\n ),\n 9: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"celebration\" />\n ),\n // TODO: Waiting for the backend to accommodate the below icon types\n 10: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"problem\" />\n ),\n 11: (_, theme) => (\n <BeatMaterialIcon\n avatarSx={{ border: `1px solid ${theme.palette.secondary.main}` }}\n bgColor={alpha(theme.palette.secondary.main, 0.15)}\n fill={false}\n name=\"category\"\n sx={{ color: 'text.primary' }}\n />\n ),\n 12: (beat) => <AreaChartIcon beat={beat} />,\n 13: () => (\n <BeatMaterialIcon\n avatarSx={{ border: '1px solid #EB00D0' }} //TODO : Remove explict color code\n bgColor={alpha('#EB00D0', 0.25)}\n fill={false}\n name=\"money_bag\"\n sx={{ color: 'text.primary' }}\n />\n ),\n 14: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.secondary.main, 0.15)}\n fill={false}\n iconColor=\"secondary\"\n name=\"person\"\n />\n ),\n 15: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.primary.main, 0.15)}\n name=\"payment_arrow_down\"\n />\n ),\n 16: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.success.main, 0.15)}\n name=\"beenhere\"\n sx={{ color: 'success.main' }}\n />\n ),\n 17: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"savings\" />\n ),\n 18: (beat, theme) => (\n <BeatMaterialIcon\n bgColor={\n beat.payload.projected_overdraft_amount < 0\n ? alpha(theme.palette.warning.main, 0.15)\n : alpha(theme.palette.error.main, 0.15)\n }\n iconColor={beat?.payload?.projected_overdraft_amount < 0 ? 'warning' : 'error'}\n name=\"error\"\n />\n ),\n 19: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"finance_mode\" />\n ),\n 20: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"tips_and_updates\" />\n ),\n 21: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.primary.main, 0.15)}\n name=\"currency_exchange\"\n />\n ),\n 22: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.warning.main, 0.15)}\n name=\"flag\"\n sx={{ color: 'warning.main' }}\n />\n ),\n 23: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"thumb_up\" />\n ),\n 24: () => (\n <BeatMaterialIcon\n bgColor={alpha('#EB00D0', 0.15)} //TODO : Remove explict color code\n name=\"attach_money\"\n sx={{ color: '#EB00D0' }}\n />\n ),\n 25: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"note_stack\" />\n ),\n 26: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.primary.main, 0.15)}\n fill={false}\n name=\"price_change\"\n />\n ),\n 27: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"directions_car\" />\n ),\n 28: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"contract\" />\n ),\n 29: (beat) => <AverageSpendComparisonIcon beat={beat} />,\n 30: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"calendar_month\" />\n ),\n 31: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.warning.main, 0.15)}\n name=\"star_rate\"\n sx={{ color: 'warning.400' }}\n />\n ),\n 32: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"help\" />\n ),\n 33: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.primary.main, 0.15)}\n fill={false}\n name=\"storefront\"\n />\n ),\n 34: (beat) => <InstitutionLogoIcon beat={beat} />,\n }\n\nexport const BeatIcon: React.FC<WeGotTheBeat> = ({ beat }) => {\n const theme = useTheme()\n const { icon_type } = beat\n const renderIcon = icon_type != null ? iconTypeMap[icon_type] : null\n\n if (renderIcon) {\n return renderIcon(beat, theme)\n }\n\n return <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"error\" />\n}\n","import React from 'react'\n\nimport { InsightsMicroWidgetDataContext } from './InsightsMicroWidgetDataProvider'\n\nexport const useDataContext = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('useDataContext() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return context\n}\n\nexport const useStore = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('useStore() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return context.store\n}\n\nexport const useCopyStore = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('useCopyStore() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return context.store.copyStore\n}\n\nexport const useInsightsMicroWidgetStore = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context?.store?.insightsMicroWidgetStore) {\n throw new Error(\n 'useInsightsMicroWidgetStore() must be used within the InsightsMicroWidgetDataProvider',\n )\n }\n\n return context.store.insightsMicroWidgetStore\n}\n\nexport const useEvent = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('useEvent() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return { onEvent: context.onEvent }\n}\n\nexport const usePageview = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('usePageview() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return { onPageview: context.onPageview }\n}","export const SUPPORTED_CAROUSEL_HEIGHTS: any = {\n LARGE: 180,\n STANDARD: 154,\n XLARGE: 200,\n XXLARGE: 248,\n}\n\nexport const MINIMUM_SWIPE_DISTANCE = 50\n\nexport const VIEW_THRESHOLD = 1 // card is 100% in view\n","import React from 'react'\nimport { Box, Button, Card, CardActionArea, IconButton, Stack } from '@mui/material'\n\nimport { P, Text } from '@mxenabled/mxui'\nimport { Close } from '@mxenabled/mx-icons'\n\ninterface MicroCardTemplateProps {\n ariaLabel?: string\n closeAriaLabel?: string\n description: string\n elevation?: number\n icon?: React.ReactNode\n isActiveCard?: boolean\n heightOverrides?: string | number\n onClose?: () => void\n onCardClick?: () => void\n onPrimaryAction?: () => void\n onSecondaryAction?: () => void\n primaryActionText?: string\n secondaryActionText?: string\n title: string\n variant?: 'outlined' | 'elevation' | undefined\n widthOverrides?: string | number\n}\n\nconst MicroCardTemplate = React.forwardRef<HTMLDivElement, MicroCardTemplateProps>(\n function MicroCardTemplate(\n {\n ariaLabel,\n closeAriaLabel,\n description,\n elevation,\n icon,\n isActiveCard,\n heightOverrides,\n onClose,\n onCardClick,\n onPrimaryAction,\n onSecondaryAction,\n primaryActionText,\n secondaryActionText,\n title,\n variant,\n widthOverrides,\n ...restProps\n },\n inViewRef,\n ) {\n const hasPrimaryAction = Boolean(onPrimaryAction && primaryActionText)\n const hasSecondaryAction = Boolean(onSecondaryAction && secondaryActionText)\n\n const innerContent = (\n <>\n {onClose && (\n <IconButton\n aria-label={closeAriaLabel}\n onClick={(e) => {\n e.stopPropagation()\n onClose?.()\n }}\n onMouseDown={(e) => {\n e.stopPropagation()\n }}\n onTouchStart={(e) => {\n e.stopPropagation()\n }}\n sx={{ minHeight: 40, minWidth: 40, position: 'absolute', right: 4, top: 4 }}\n >\n <Close />\n </IconButton>\n )}\n <Stack sx={{ gap: 6, height: '100%', justifyContent: 'space-between' }}>\n <Stack sx={{ flexDirection: 'row', gap: 12 }}>\n {icon && icon}\n <Stack sx={{ gap: 6 }}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <P bold={true} sx={{ lineHeight: '16px' }} variant=\"body1\">\n {title}\n </P>\n </Stack>\n <P\n dangerouslySetInnerHTML={{ __html: description }}\n sx={{\n display: '-webkit-box',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: hasPrimaryAction ? 2 : 3,\n '& .bold-copy': {\n fontWeight: 'bold',\n fontFamily: 'inherit',\n },\n }}\n variant=\"subtitle2\"\n />\n </Stack>\n </Stack>\n\n {hasPrimaryAction && (\n <Stack\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n height: 28,\n pb: 4,\n pl: icon ? 36 : 0,\n }}\n >\n {hasPrimaryAction && (\n <Button\n onClick={(e) => {\n e.stopPropagation()\n onPrimaryAction?.()\n }}\n onMouseDown={(e) => {\n e.stopPropagation()\n }}\n onTouchStart={(e) => {\n e.stopPropagation()\n }}\n size=\"small\"\n sx={{ px: 8, ml: icon ? 0 : -8 }}\n variant=\"text\"\n >\n <Text bold={true} variant=\"body2\">\n {primaryActionText}\n </Text>\n </Button>\n )}\n\n {hasSecondaryAction && (\n <Button\n onClick={(e) => {\n e.stopPropagation()\n onSecondaryAction?.()\n }}\n onMouseDown={(e) => {\n e.stopPropagation()\n }}\n onTouchStart={(e) => {\n e.stopPropagation()\n }}\n size=\"small\"\n sx={{ px: 8 }}\n variant=\"text\"\n >\n <Text bold={true} sx={{ color: 'text.secondary' }} variant=\"body2\">\n {secondaryActionText}\n </Text>\n </Button>\n )}\n </Stack>\n )}\n </Stack>\n </>\n )\n\n return (\n <Card\n aria-hidden={!isActiveCard}\n aria-label={ariaLabel}\n elevation={elevation}\n ref={inViewRef}\n role=\"group\"\n sx={{\n backgroundColor: 'background.paper',\n height: heightOverrides ? '100%' : 120,\n minWidth: widthOverrides ? `${widthOverrides}px` : '100%',\n position: 'relative',\n my: 1,\n borderRadius: 2,\n }}\n tabIndex={onCardClick || !isActiveCard ? -1 : 0}\n variant={variant}\n {...restProps}\n >\n {onCardClick ? (\n <CardActionArea\n component=\"div\"\n onClick={onCardClick}\n sx={{\n pb: 8,\n pt: 16,\n px: 16,\n height: '100%',\n }}\n >\n {innerContent}\n </CardActionArea>\n ) : (\n <Box sx={{ pb: 8, pt: 16, px: 16, height: '100%' }}>{innerContent}</Box>\n )}\n </Card>\n )\n },\n)\n\nexport default MicroCardTemplate\n","import React, { useEffect } from 'react'\nimport { useInView } from 'react-intersection-observer'\n\nimport { BeatIcon } from '../beaticons'\n\nimport { useCopyStore, useEvent, useInsightsMicroWidgetStore } from '../context/hooks'\n\nimport { ON_CLICK_EVENT, ON_VIEW_EVENT, ON_VIEW_FIRST_TIME_EVENT } from '../constants/Analytics'\nimport { VIEW_THRESHOLD } from '../constants/App'\n\nimport type { BeatLikeOffer, MicroInsightCardProps } from '../interfaces'\nimport type { Beat } from '../../core/types/Beat'\nimport MicroCardTemplate from '../MicroCardTemplate'\n\nexport interface InsightCardProps extends MicroInsightCardProps {\n beat: Beat | BeatLikeOffer\n index?: number\n}\n\nexport const InsightCard: React.FC<InsightCardProps> = ({\n ariaLabel,\n beat,\n elevation,\n index,\n isActiveCard,\n onCardClick,\n posthog,\n widthOverrides,\n variant,\n showIcon,\n heightOverrides,\n}) => {\n const { ref, inView } = useInView({\n threshold: VIEW_THRESHOLD,\n })\n\n // *************** Context functions *********************\n const { cardsCopy } = useCopyStore()\n const { onEvent } = useEvent()\n const { updateBeat, updateOffer } = useInsightsMicroWidgetStore()\n\n // ************** Use Effects Hooks **********************\n useEffect(() => {\n if (inView) {\n if (!beat.has_been_displayed) {\n if (beat.guid.startsWith('OFR')) {\n updateOffer({\n ...beat,\n has_been_displayed: true,\n })\n } else {\n updateBeat({\n ...beat,\n has_been_displayed: true,\n })\n }\n onEvent(ON_VIEW_FIRST_TIME_EVENT(beat.template))\n } else {\n onEvent(ON_VIEW_EVENT(beat.template))\n }\n }\n }, [inView])\n\n useEffect(() => {\n if (inView && beat) {\n if (beat.template === 'MarketingOffer') {\n const offerBeat = beat as BeatLikeOffer\n posthog?.capture('viewed_messaging_insight', {\n template: beat.template,\n campaign_guid: offerBeat.campaign_guid,\n campaign_name: offerBeat.pulse_campaign_name,\n })\n } else {\n posthog?.capture('viewed_insight', {\n beat_guid: beat.guid,\n template: beat.template,\n position: index,\n })\n }\n }\n }, [beat, index, inView])\n\n // *************** Click handlers ************************\n const handleClick = () => {\n /* eslint-disable no-unused-expressions */\n onCardClick && onCardClick(beat)\n onEvent(ON_CLICK_EVENT(beat.template))\n\n if (beat.template === 'MarketingOffer') {\n const offerBeat = beat as BeatLikeOffer\n posthog?.capture('clicked_messaging_insight', {\n template: beat.template,\n campaign_guid: offerBeat.campaign_guid,\n campaign_name: offerBeat.pulse_campaign_name,\n })\n } else {\n posthog?.capture('clicked_insight', {\n beat_guid: beat.guid,\n template: beat.template,\n position: index,\n })\n }\n }\n\n return (\n <MicroCardTemplate\n aria-roledescription=\"slide\"\n ariaLabel={ariaLabel}\n description={\n beat?.html_micro_description && beat?.html_micro_description.length > 0\n ? beat.html_micro_description\n : beat.html_description || ''\n }\n elevation={elevation}\n heightOverrides={heightOverrides}\n icon={showIcon && <BeatIcon beat={beat} />}\n isActiveCard={isActiveCard}\n onCardClick={handleClick}\n onPrimaryAction={handleClick}\n primaryActionText={beat.micro_call_to_action || cardsCopy?.micro_card_cta}\n ref={ref}\n title={beat.micro_title && beat.micro_title.length > 0 ? beat.micro_title : beat.title}\n variant={variant}\n widthOverrides={widthOverrides}\n />\n )\n}\n","import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport IconButton from '@mui/material/IconButton'\nimport { useTheme } from '@mui/material/styles'\n\nimport { ChevronLeft, ChevronRight } from '@mxenabled/mx-icons'\n\nimport { useCopyStore } from '../context/hooks'\n\nexport interface CarouselControlsProps {\n currentBeatIndex: number\n numBeats: number\n onNextClick: () => void\n onPreviousClick: () => void\n scrollRightBoundary: number\n scrollX: number\n shouldApplyDotAnimation?: boolean\n visibleCardsCount?: number\n}\n\nexport const CarouselControls: React.FC<CarouselControlsProps> = ({\n currentBeatIndex,\n numBeats,\n onNextClick,\n onPreviousClick,\n scrollRightBoundary,\n scrollX,\n shouldApplyDotAnimation = false,\n visibleCardsCount = 1,\n}) => {\n const theme = useTheme()\n // *************** Context functions *********************\n const { carouselCopy: copy } = useCopyStore()\n\n const disabledLeft =\n Math.floor(scrollX) > scrollRightBoundary || currentBeatIndex - visibleCardsCount + 1 === 0\n const disabledRight = scrollX < 0 || numBeats - 1 === currentBeatIndex\n\n const DISABLED_ICON_COLOR = theme.palette.grey[500]\n const ICON_COLOR = theme.palette.primary.main\n\n return (\n <Stack\n direction={'row'}\n sx={{\n alignItems: 'center',\n justifyContent: 'center',\n pt: 4,\n width: '100%',\n // we were using `gap` instead of margin, but it doesn't work in safari browsers older than iOS 14.1\n '& button:first-child': {\n mr: 8,\n },\n }}\n >\n <IconButton\n aria-disabled={disabledLeft}\n aria-label={copy?.previous_insight_cta_aria}\n disabled={disabledLeft}\n onClick={onPreviousClick}\n >\n <ChevronLeft\n sx={{\n color: disabledLeft ? DISABLED_ICON_COLOR : ICON_COLOR,\n }}\n />\n </IconButton>\n {Array.from({ length: numBeats }).map((_, i) => {\n const isActive = i === currentBeatIndex\n return (\n <Box\n className=\"mx-insights-micro-carousel-dots\"\n key={`carousel-button-${i}`}\n sx={{\n bgcolor: isActive ? ICON_COLOR : DISABLED_ICON_COLOR,\n height: 8,\n mr: 8, // existing comment from meganthan \"we were using `gap` instead of margin, but it doesn't work in safari browsers older than iOS 14.1\"\n ...(shouldApplyDotAnimation\n ? {\n borderRadius: '4px',\n transformOrigin: 'center',\n transition: 'all 0.5s ease-out',\n willChange: 'width, background-color',\n }\n : {\n borderRadius: '50%',\n p: 0,\n }),\n width: isActive && shouldApplyDotAnimation ? 24 : 8,\n }}\n />\n )\n })}\n <IconButton\n aria-disabled={disabledRight}\n aria-label={copy?.next_insight_cta_aria}\n disabled={disabledRight}\n onClick={onNextClick}\n >\n <ChevronRight\n sx={{\n color: disabledRight ? DISABLED_ICON_COLOR : ICON_COLOR,\n }}\n />\n </IconButton>\n </Stack>\n )\n}\n","import React from 'react'\n\nimport { InsightCard, ViewMoreMicroCard } from '..'\nimport type { MicroInsightCardProps } from '../interfaces'\n\nimport { useCopyStore } from '../context/hooks'\n\nimport type { Beat } from '../../core/types/Beat'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nexport interface BeatListProps extends MicroInsightCardProps {\n activeCardIndex: number\n beats: Beat[]\n cardWidth: number | null\n}\n\nconst BeatList: React.FC<BeatListProps> = ({\n activeCardIndex,\n beats,\n cardWidth,\n elevation,\n heightOverrides,\n onCardClick,\n posthog,\n showIcon,\n variant,\n}) => {\n const { carouselCopy: copy } = useCopyStore()\n\n const generalProps = {\n elevation,\n heightOverrides,\n posthog,\n showIcon,\n variant,\n }\n\n return (\n <>\n {beats.map((beat: Beat, i) => {\n const beatPosition = i + 1\n const totalBeats = beats.length + 1\n const ariaLabelPositionInCarousel = buildDynamicCopy(\n copy?.card_position_in_carousel_aria,\n beatPosition.toString(),\n totalBeats.toString(),\n )\n\n const hasMicroTitle = beat.micro_title && beat.micro_title.length > 0\n const hasMicroDescription = beat.micro_description && beat.micro_description.length > 0\n\n const beatTitle = hasMicroTitle ? beat.micro_title : beat.title\n const beatDescription = hasMicroDescription ? beat.micro_description : beat.description\n\n return (\n <InsightCard\n ariaLabel={`${ariaLabelPositionInCarousel}: ${beatTitle}, ${beatDescription}`}\n beat={beat}\n index={i}\n isActiveCard={i === activeCardIndex}\n key={`${beat.guid} ${i}`}\n onCardClick={onCardClick}\n widthOverrides={cardWidth || undefined}\n {...generalProps}\n />\n )\n })}\n <ViewMoreMicroCard\n isActiveCard={activeCardIndex === beats.length}\n onCardClick={onCardClick}\n widthOverrides={cardWidth || undefined}\n {...generalProps}\n />\n </>\n )\n}\n\nexport default BeatList\n","/* eslint-disable consistent-return */\nimport React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { CarouselControls } from './CarouselControls'\nimport BeatList from './BeatList'\n\nimport type { MicroWidgetProps } from '..'\n\nimport { useCopyStore, useEvent } from '../context/hooks'\n\nimport type { Beat } from '../../core/types/Beat'\n\nimport { ANALYTICS_CLICK_EVENTS } from '../constants/Analytics'\nimport { MINIMUM_SWIPE_DISTANCE } from '../constants/App'\n\ninterface MicroBeatCarouselProps {\n allowSingleCardPeeking?: boolean\n analyticsMetadata?: Record<string, string>\n beats?: Beat[]\n elevation?: number\n heightOverrides?: MicroWidgetProps['heightOverrides']\n onCardClick?: MicroWidgetProps['onCardClick']\n posthog?: MicroWidgetProps['posthog']\n showCarouselControls?: boolean\n showIcon?: boolean\n showWithMargin?: boolean\n variant?: 'outlined' | 'elevation' | undefined\n visibleCardsCount?: number\n widthOverrides?: number\n}\n\nconst MicroBeatCarousel: React.FC<MicroBeatCarouselProps> = ({\n analyticsMetadata,\n allowSingleCardPeeking,\n beats = [],\n elevation,\n heightOverrides,\n onCardClick,\n posthog,\n showCarouselControls,\n showIcon,\n showWithMargin = true,\n variant,\n widthOverrides,\n visibleCardsCount = 1, // Default to 1 card visible\n}) => {\n // ************** Use Ref Hooks **************************\n const ref = React.useRef<HTMLDivElement | null>(null)\n const carouselRef = React.useRef<HTMLDivElement | null>(null)\n\n // ************** Use States Hooks ***********************\n const [scrollX, setScrollX] = React.useState<number>(0)\n const [touchEnd, setTouchEnd] = React.useState<number | null>(null)\n const [touchStart, setTouchStart] = React.useState<number | null>(null)\n const [cardWidth, setCardWidth] = React.useState<number | null>(null)\n\n // *************** Context functions *********************\n const { carouselCopy: copy } = useCopyStore()\n const { onEvent } = useEvent()\n\n // ************** Use Effects Hooks **********************\n\n React.useEffect(() => {\n // Single source of truth for card-width sizing. The two layout modes\n // (breakpoint-based peeking vs. proportional visible-cards math) are\n // mutually exclusive on `allowSingleCardPeeking`, so they share one\n // ResizeObserver/effect to keep resize tracking in one place.\n //\n // Observe the outer, structurally stable container (carouselRef) rather\n // than the inner shrink-wrapped flex row (ref). The inner row's width\n // depends on cardWidth, so observing it would feed back into itself and\n // cause a shrinking ResizeObserver loop / stuck-small layout.\n const computeCardWidth = (observedWidth?: number) => {\n const node = carouselRef.current\n if (!node) return\n\n // Prefer the width reported by the ResizeObserver entry to avoid an\n // extra layout read (thrashing); fall back to a DOM read on mount and\n // on the window-resize fallback path.\n const rawWidth = observedWidth ?? node.offsetWidth\n\n if (allowSingleCardPeeking) {\n // Use until token sizes are actually implemented in the mxui repo\n const breakpoints = [\n { maxWidth: 320, cardWidth: 220 },\n { maxWidth: 375, cardWidth: 268 },\n { maxWidth: 444, cardWidth: 300 },\n { maxWidth: 599, cardWidth: 350 },\n { maxWidth: 749, cardWidth: 450 },\n { maxWidth: 900, cardWidth: 600 },\n ]\n\n const matchingBreakpoint = breakpoints.find((bp) => rawWidth <= bp.maxWidth)\n setCardWidth(matchingBreakpoint ? matchingBreakpoint.cardWidth : 750)\n return\n }\n\n // The inner row is constrained to `calc(100% - 32px)` when showWithMargin\n // is set, so subtract that margin to match the actual available width.\n // Clamp to 0 so a tiny/unmeasured container never yields a negative width.\n const containerWidth = showWithMargin ? Math.max(0, rawWidth - 32) : rawWidth\n const gap = 8 // gap between cards\n\n // When visibleCardsCount > 1, make each card narrower to fit multiple cards and show a peek of the next card\n // When visibleCardsCount is 1, use full container width\n let calculatedCardWidth\n if (visibleCardsCount > 1) {\n // First calculate what a single full card width would be\n const fullCardWidth = (containerWidth - (visibleCardsCount - 1) * gap) / visibleCardsCount\n // Set the peek area to be 1/3 of a card width instead of fixed 60px\n const peekAreaWidth = fullCardWidth / 3\n // Calculate final card width, accounting for the peek area and gaps\n calculatedCardWidth =\n (containerWidth - peekAreaWidth - (visibleCardsCount - 1) * gap) / visibleCardsCount\n } else {\n calculatedCardWidth = containerWidth\n }\n\n // Clamp to prevent negative widths.\n setCardWidth(Math.max(0, calculatedCardWidth))\n }\n\n computeCardWidth()\n\n // Recompute on container resize via ResizeObserver, falling back to the\n // window resize event only when ResizeObserver is unavailable.\n const handleResize = () => computeCardWidth()\n let observer: ResizeObserver | null = null\n if (typeof ResizeObserver !== 'undefined' && carouselRef.current) {\n observer = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n const width = entry.borderBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n computeCardWidth(width)\n })\n observer.observe(carouselRef.current)\n } else {\n window.addEventListener('resize', handleResize)\n }\n\n return () => {\n window.removeEventListener('resize', handleResize)\n observer?.disconnect()\n }\n }, [allowSingleCardPeeking, visibleCardsCount, showWithMargin])\n\n // *************** Click handlers ************************\n const handleNextClick = () => {\n onEvent(ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_FORWARD_CLICK, analyticsMetadata)\n\n if (ref.current && cardWidth) {\n // Scroll by one card width + gap\n ref.current.scrollTo({\n left: scrollX + cardWidth + 8,\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n const handlePreviousClick = () => {\n onEvent(ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_BACK_CLICK, analyticsMetadata)\n\n if (ref.current && cardWidth) {\n // Scroll by one card width + gap\n ref.current.scrollTo({\n left: Math.max(0, scrollX - (cardWidth + 8)),\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n const handleScroll = () => {\n if (ref.current) {\n setScrollX(ref.current.scrollLeft)\n }\n }\n\n // *************** Mobile handlers ************************\n const onTouchEnd = () => {\n if (!touchStart || !touchEnd) return\n const distance = touchStart - touchEnd\n\n // swiping left\n if (distance > MINIMUM_SWIPE_DISTANCE) {\n onEvent(ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_FORWARD_SWIPE, analyticsMetadata)\n } else {\n // swiping right\n onEvent(ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_BACK_SWIPE, analyticsMetadata)\n }\n }\n\n const onTouchMove = (e: React.TouchEvent) => {\n setTouchEnd(e.targetTouches[0].clientX)\n }\n\n const onTouchStart = (e: React.TouchEvent) => {\n // otherwise the swipe is fired even with usual touch events\n setTouchEnd(null)\n setTouchStart(e.targetTouches[0].clientX)\n }\n\n // Calculate active card index based on scroll position and card width\n const activeCardIndex = cardWidth ? Math.round(scrollX / (cardWidth + 8)) : 0\n const scrollBoundry = ref.current ? ref.current.scrollWidth - ref.current.offsetWidth : 0\n\n return (\n <Stack\n aria-label={copy?.carousel_title}\n aria-roledescription=\"carousel\"\n ref={carouselRef}\n role=\"region\"\n sx={{\n alignItems: 'center',\n boxSizing: 'border-box',\n height: heightOverrides,\n width: widthOverrides ? widthOverrides : '100%',\n }}\n >\n <Stack\n direction=\"row\"\n onScroll={handleScroll}\n onTouchEnd={onTouchEnd}\n onTouchMove={onTouchMove}\n onTouchStart={onTouchStart}\n ref={ref}\n sx={{\n alignItems: 'center',\n height: heightOverrides && '100%',\n gap: 8,\n listStyleType: 'none',\n m: 0,\n maxWidth: showWithMargin ? `calc(100% - 32px)` : '100%',\n overflowX: 'auto',\n overflowY: 'hidden',\n p: 0,\n scrollbarWidth: 'none',\n '-ms-overflow-style': 'none',\n '-webkit-overflow-scrolling': 'touch',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n }}\n >\n <BeatList\n activeCardIndex={activeCardIndex}\n beats={beats}\n cardWidth={cardWidth}\n elevation={elevation}\n heightOverrides={heightOverrides}\n onCardClick={onCardClick}\n posthog={posthog}\n showIcon={showIcon}\n variant={variant}\n />\n </Stack>\n {showCarouselControls && (\n <CarouselControls\n currentBeatIndex={activeCardIndex + visibleCardsCount - 1}\n numBeats={beats.length + 1}\n onNextClick={handleNextClick}\n onPreviousClick={handlePreviousClick}\n scrollRightBoundary={scrollBoundry}\n scrollX={scrollX}\n shouldApplyDotAnimation={allowSingleCardPeeking}\n visibleCardsCount={visibleCardsCount}\n />\n )}\n </Stack>\n )\n}\n\nexport default observer(MicroBeatCarousel)\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { H3 } from '@mxenabled/mxui'\n\nimport { ChevronRight as ChevronRightIcon } from '@mxenabled/mx-icons'\n\nimport { useCopyStore, useEvent } from '../context/hooks'\nimport { ANALYTICS_CLICK_EVENTS } from '../constants/Analytics'\n\nimport { Beat } from '../../core/types/Beat'\nimport { TheWholeHog } from '../interfaces'\nimport Loader from '../../common/components/Loader'\nimport { type SxProps } from '@mui/material/styles'\n\nexport interface CarouselHeaderProps {\n analyticsMetadata?: Record<string, string>\n onCardClick: (beat?: Beat | undefined) => void\n posthog?: TheWholeHog\n widthOverrides?: number | string\n headerSx?: SxProps\n}\n\nconst CarouselHeader: React.FC<CarouselHeaderProps> = ({\n analyticsMetadata,\n onCardClick,\n posthog,\n widthOverrides,\n headerSx,\n}) => {\n // *************** Context functions *********************\n const { carouselCopy: copy } = useCopyStore()\n const { onEvent } = useEvent()\n\n // *************** Click handlers ************************\n const handleViewAllClick = () => {\n if (onEvent) {\n onEvent(ANALYTICS_CLICK_EVENTS.ON_VIEW_MORE_CLICKED, analyticsMetadata)\n\n onCardClick()\n\n posthog?.capture('clicked_view_more')\n }\n }\n\n if (!copy) {\n return <Loader />\n }\n\n return (\n <Stack\n alignItems=\"center\"\n direction=\"row\"\n justifyContent=\"space-between\"\n spacing={2}\n sx={{\n p: 16,\n pb: 8,\n width: widthOverrides ? widthOverrides : undefined,\n ...headerSx,\n }}\n >\n <H3>{copy.carousel_title}</H3>\n <Button\n endIcon={<ChevronRightIcon size={20} />}\n onClick={handleViewAllClick}\n size=\"small\"\n variant=\"text\"\n >\n {copy.view_all_insights_in_full_feed_cta_aria}\n </Button>\n </Stack>\n )\n}\n\nexport default observer(CarouselHeader)\n","import React, { PropsWithChildren } from 'react'\n\nimport Box from '@mui/material/Box'\n\nimport { useCopyStore } from './context/hooks'\n\ninterface MicroWidgetContainerProps {\n heightOverrides?: number | string\n widthOverrides?: number\n}\n\nconst MicroWidgetContainer: React.FC<PropsWithChildren<MicroWidgetContainerProps>> = ({\n heightOverrides,\n widthOverrides,\n children,\n}) => {\n const { carouselCopy: copy } = useCopyStore()\n\n return (\n <Box\n aria-label={copy?.carousel_title}\n aria-roledescription=\"carousel\"\n role=\"group\"\n sx={{\n boxSizing: 'border-box',\n height: !heightOverrides ? '100%' : undefined,\n m: '0 auto',\n width: !widthOverrides ? '100%' : undefined,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default MicroWidgetContainer\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport { alpha, useTheme } from '@mui/material/styles'\n\nimport { useCopyStore, useEvent, usePageview } from '../context/hooks'\n\nimport { ANALYTICS_CLICK_EVENTS, ANALYTICS_PAGE_NAMES } from '../constants/Analytics'\n\nimport type { MicroInsightCardProps } from '../interfaces'\nimport MicroCardTemplate from '../MicroCardTemplate'\nimport { BeatMaterialIcon } from '../beaticons'\n\nexport const NoRelevantInsightsCard: React.FC<MicroInsightCardProps> = ({\n ariaLabel,\n elevation,\n heightOverrides,\n onCardClick,\n posthog,\n showIcon,\n variant,\n}) => {\n // *************** Context functions *********************git\n const { cardsCopy } = useCopyStore()\n const theme = useTheme()\n const { onEvent } = useEvent()\n const { onPageview } = usePageview()\n\n // ************** Use Effects Hooks **********************\n React.useEffect(() => {\n onPageview(ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS)\n }, [])\n\n // *************** Click handlers ************************\n const handleClick = () => {\n if (onCardClick) onCardClick()\n onEvent(ANALYTICS_CLICK_EVENTS.ON_NO_RELEVANT_INSIGHTS_CLICKED)\n\n posthog?.capture('clicked_insight', {\n template: 'no_relevant_insights',\n })\n }\n\n return (\n <MicroCardTemplate\n ariaLabel={ariaLabel}\n description={cardsCopy.no_relevant_insights_card_description}\n elevation={elevation}\n heightOverrides={heightOverrides}\n icon={\n showIcon && (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"lightbulb\" />\n )\n }\n onCardClick={handleClick}\n onPrimaryAction={handleClick}\n primaryActionText={cardsCopy.micro_card_cta}\n title={cardsCopy.no_relevant_insights_card_title}\n variant={variant}\n />\n )\n}\n\nexport default observer(NoRelevantInsightsCard)\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport { useCopyStore, usePageview } from '../context/hooks'\n\nimport { ANALYTICS_PAGE_NAMES } from '../constants/Analytics'\n\nimport type { MicroInsightCardProps } from '../interfaces'\nimport MicroCardTemplate from '../MicroCardTemplate'\nimport { BeatMaterialIcon } from '../beaticons'\n\nimport { alpha, useTheme } from '@mui/material/styles'\n\nexport const ZeroStateCard: React.FC<MicroInsightCardProps> = ({\n ariaLabel,\n elevation,\n heightOverrides,\n onCardClick,\n showIcon,\n variant,\n}) => {\n // *************** Context functions *********************\n const { onPageview } = usePageview()\n const { zeroStateCopy } = useCopyStore()\n const theme = useTheme()\n\n // ************** Use Effects Hooks **********************\n React.useEffect(() => {\n onPageview(ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_ZERO_STATE)\n }, [])\n\n return (\n <MicroCardTemplate\n ariaLabel={ariaLabel}\n description={zeroStateCopy.carousel_zero_state_description}\n elevation={elevation}\n heightOverrides={heightOverrides}\n icon={\n showIcon && (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"lightbulb\" />\n )\n }\n onCardClick={onCardClick}\n title={zeroStateCopy.carousel_zero_state_title}\n variant={variant}\n />\n )\n}\n\nexport default observer(ZeroStateCard)\n","import React from 'react'\nimport Box from '@mui/material/Box'\nimport CircularProgress from '@mui/material/CircularProgress'\n\nconst Spinner: React.FC = () => {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n }}\n >\n <CircularProgress />\n </Box>\n )\n}\n\nexport default Spinner\n","export const TRENDS_ANALYTICS_METADATA = {\n featureVersion: 'spendVsIncomeTrends',\n}\n","import React, { useState } from 'react'\n\nimport { observer } from 'mobx-react-lite'\nimport Stack from '@mui/material/Stack'\n\nimport { useCombineEvents, useCombinePageviews, useWidgetLoadTimer } from '../common/hooks'\nimport { InsightsMicroWidgetDataProvider } from './context/InsightsMicroWidgetDataProvider'\n\nimport CarouselHeader from './carousel/CarouselHeader'\nimport MicroWidgetContainer from './MicroWidgetContainer'\nimport MicroBeatCarousel from './carousel/MicroBeatCarousel'\nimport { NoRelevantInsightsCard } from './cards/NoRelevantInsightsCard'\nimport { ZeroStateCard } from './cards/ZeroStateCard'\nimport Spinner from './Spinner'\n\nimport { AppStore } from './stores/AppStore'\n\nimport type { MicroWidgetProps } from './interfaces'\nimport { TRENDS_ANALYTICS_METADATA } from '../trends/constants/TrendsWidget'\nimport { SUPPORTED_CAROUSEL_HEIGHTS } from './constants/App'\n\nconst store = new AppStore()\n\n/*\n This is the parent component / starting point for the general availabile insights micro widget. The Legacy/Cibc version is in a seperate repo\n called insights micro widget. The difference between the No relevent and zero state component is that No relevant is a zero state theat lets the\n user know that although there are no micro insights available but the user has fill insights available and zero state lets the user know that there\n aren't any micro or full insights available.\n*/\n\nconst InsightsMicroWidget: React.FC<MicroWidgetProps> = ({\n allowSingleCardPeeking = true,\n areBeatsLoading = false,\n beats = [], // This also determines the length of the carousel controls (beat.length + 1)\n cardStyle = 'elevation 1',\n endpoint = '/',\n headerSx,\n heightOverrides,\n logOutUser = () => {},\n onCardClick = () => {},\n onEvent: onConsumerEvent = () => {},\n onPageview: onConsumerPageview = () => {},\n posthog,\n showCarouselControls,\n showHeader,\n showIcon,\n showWithMargin = true,\n token = '',\n userHasFullInsightFeedBeats,\n visibleCardsCount = 1,\n widthOverrides,\n}) => {\n // ************** Derived Props ****************************\n const getResolvedVariant = () => {\n if (cardStyle === 'border') return 'outlined' as const\n if (cardStyle === 'elevation 1') return 'elevation' as const\n if (cardStyle === 'flat') return undefined\n return 'elevation'\n }\n const resolvedVariant = getResolvedVariant()\n const resolvedElevation = cardStyle === 'flat' ? 0 : 1\n\n // ************** Use States Hooks ***********************\n const [carouselSize, setCarouselSize] = useState<string>('STANDARD')\n const [isLoaded, setIsLoaded] = useState(false)\n const [triedInitializing, setTriedInitializing] = useState(false)\n\n // ************** Use Custom Hooks ***********************\n const onEvent = useCombineEvents([onConsumerEvent], store)\n const onPageview = useCombinePageviews([onConsumerPageview], store)\n\n useWidgetLoadTimer({\n widgetName: 'InsightsMicroWidget',\n isLoaded: isLoaded,\n })\n\n // ************** Use Effects Hooks **********************\n React.useEffect(() => {\n if (!store.isInitialized && !triedInitializing) {\n store.initialize(endpoint, token, logOutUser).catch(() => setTriedInitializing(false))\n setTriedInitializing(true)\n }\n }, [endpoint, token, logOutUser, store.isInitialized, triedInitializing])\n\n React.useEffect(() => {\n const pageHeight = window.innerHeight\n\n if (pageHeight < 180) {\n setCarouselSize('STANDARD')\n } else if (pageHeight >= 180 && pageHeight < 200) {\n setCarouselSize('LARGE')\n } else if (pageHeight >= 200 && pageHeight < 248) {\n setCarouselSize('XLARGE')\n } else if (pageHeight >= 248) {\n setCarouselSize('XXLARGE')\n }\n }, [window.innerHeight])\n\n React.useEffect(() => {\n setIsLoaded(!areBeatsLoading && store.isInitialized)\n }, [areBeatsLoading, store.isInitialized])\n\n // ************** Spreadable Props ***********************\n const generalProps = {\n heightOverrides,\n onCardClick,\n posthog,\n showIcon,\n showWithMargin,\n widthOverrides,\n }\n\n const zeroStateProps = {\n carouselSize,\n elevation: resolvedElevation,\n variant: resolvedVariant,\n heightOverrides,\n onCardClick,\n posthog,\n showIcon,\n }\n\n return (\n <InsightsMicroWidgetDataProvider onEvent={onEvent} onPageview={onPageview} store={store}>\n <MicroWidgetContainer heightOverrides={heightOverrides} widthOverrides={widthOverrides}>\n {!isLoaded && <Spinner />}\n\n {isLoaded && showHeader && (\n <CarouselHeader\n analyticsMetadata={TRENDS_ANALYTICS_METADATA}\n headerSx={headerSx}\n onCardClick={onCardClick}\n posthog={posthog}\n widthOverrides={widthOverrides}\n />\n )}\n\n {isLoaded && !!beats.length && (\n <MicroBeatCarousel\n allowSingleCardPeeking={allowSingleCardPeeking}\n analyticsMetadata={TRENDS_ANALYTICS_METADATA}\n beats={beats}\n elevation={resolvedElevation}\n showCarouselControls={showCarouselControls}\n variant={resolvedVariant}\n visibleCardsCount={visibleCardsCount}\n {...generalProps}\n />\n )}\n\n {isLoaded && !beats.length && (\n <Stack\n sx={{\n alignItems: 'center',\n height: heightOverrides,\n width: widthOverrides ? widthOverrides : '100%',\n }}\n >\n <Stack\n sx={{\n height: `calc(${SUPPORTED_CAROUSEL_HEIGHTS[carouselSize]}px - 44px)`,\n width: showWithMargin ? `calc(${widthOverrides}px - 32px)` : '100%',\n }}\n >\n {userHasFullInsightFeedBeats ? (\n <NoRelevantInsightsCard {...zeroStateProps} />\n ) : (\n <ZeroStateCard {...zeroStateProps} />\n )}\n </Stack>\n </Stack>\n )}\n </MicroWidgetContainer>\n </InsightsMicroWidgetDataProvider>\n )\n}\n\nexport default observer(InsightsMicroWidget)\n","import React, { useEffect } from 'react'\n\nimport { useInView } from 'react-intersection-observer'\n\nimport { observer } from 'mobx-react-lite'\n\nimport type { MicroInsightCardProps } from '../interfaces'\nimport { useCopyStore, useEvent } from '../context/hooks'\n\nimport { ANALYTICS_CLICK_EVENTS, ANALYTICS_VIEW_EVENTS } from '../constants/Analytics'\nimport { VIEW_THRESHOLD } from '../constants/App'\nimport MicroCardTemplate from '../MicroCardTemplate'\nimport { BeatMaterialIcon } from '../beaticons'\n\nimport { alpha, useTheme } from '@mui/material/styles'\n\nexport const ViewMoreMicroCard: React.FC<MicroInsightCardProps> = ({\n ariaLabel,\n elevation,\n heightOverrides,\n isActiveCard,\n onCardClick,\n posthog,\n widthOverrides,\n showIcon,\n variant,\n}) => {\n const theme = useTheme()\n const { ref, inView } = useInView({\n threshold: VIEW_THRESHOLD,\n })\n\n // *************** Context functions *********************\n const { cardsCopy } = useCopyStore()\n const { onEvent } = useEvent()\n\n // ************** Use Effects Hooks **********************\n useEffect(() => {\n if (inView) {\n onEvent(ANALYTICS_VIEW_EVENTS.ON_VIEW_MORE_VIEWED)\n posthog?.capture('viewed_insight', {\n template: 'view_more_card',\n })\n }\n }, [inView])\n\n // *************** Click handlers ************************\n const handleClick = () => {\n if (onCardClick) onCardClick()\n onEvent(ANALYTICS_CLICK_EVENTS.ON_VIEW_MORE_CLICKED)\n posthog?.capture('clicked_insight', {\n template: 'view_more_card',\n })\n }\n\n return (\n <MicroCardTemplate\n aria-roledescription=\"slide\"\n ariaLabel={ariaLabel}\n description={cardsCopy?.view_more_card_description}\n elevation={elevation}\n heightOverrides={heightOverrides}\n icon={\n showIcon && (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"show_chart\" />\n )\n }\n isActiveCard={isActiveCard}\n onCardClick={handleClick}\n onPrimaryAction={handleClick}\n primaryActionText={cardsCopy?.micro_card_cta}\n ref={ref}\n title={cardsCopy?.view_more_card_title}\n variant={variant}\n widthOverrides={widthOverrides}\n />\n )\n}\n\nexport default observer(ViewMoreMicroCard)\n"],"names":["CopyStore","GlobalCopyApi","makeAutoObservable","endpoint","token","copy","runInAction","TEMPLATE_NAMES","instanceId","PATHS","ON_CLICK_EVENT","name","ON_VIEW_EVENT","ON_VIEW_FIRST_TIME_EVENT","readableTemplateName","onBeatClickedEvents","acc","ANALYTICS_ACTIONS","ANALYTICS_CATEGORIES","onBeatDisplayedEvents","onBeatDisplayedForFirstTimeEvents","ANALYTICS_LABELS","ANALYTICS_CLICK_EVENTS","ANALYTICS_VIEW_EVENTS","ANALYTICS_PAGE_NAMES","ANALYTICS_PAGEVIEWS","ANALYTICS_EVENTS","onAnalyticEvent","event","session","response","error","onAnalyticPageView","page","InsightsMicroWidgetStore","BeatApi","logOutUser","res","err","beat","AppStore","analyticsSession","InsightsMicroWidgetDataContext","React","InsightsMicroWidgetDataProvider","onEvent","onPageview","store","children","jsx","BeatCategoryIcon","primary_category_guid","category_guids","categoryGuid","CategoryGuids","CategoryIcon","BeatMerchantLogo","merchant_guids","primary_merchant_guid","MerchantLogo","buildDataSeries","data","d","item","index","PRIMARY","SUCCESS","ERROR","getColorType","fullDataSeries","incomeStartIndex","spendAmount","incomeAmount","getComparisonColorType","currentValue","comparisonValue","MonthlySpendComparisonIcon","theme","useTheme","colorType","bgColor","BeatMaterialIcon","alpha","AverageSpendComparisonIcon","averageSpend","recentMonthValue","amountIndex","AreaChartIcon","InstitutionLogoIcon","InstitutionLogo","iconTypeMap","_","BeatIcon","icon_type","renderIcon","useCopyStore","context","useInsightsMicroWidgetStore","useEvent","usePageview","SUPPORTED_CAROUSEL_HEIGHTS","MINIMUM_SWIPE_DISTANCE","VIEW_THRESHOLD","MicroCardTemplate","ariaLabel","closeAriaLabel","description","elevation","icon","isActiveCard","heightOverrides","onClose","onCardClick","onPrimaryAction","onSecondaryAction","primaryActionText","secondaryActionText","title","variant","widthOverrides","restProps","inViewRef","hasPrimaryAction","innerContent","jsxs","Fragment","IconButton","e","Close","Stack","P","Button","Text","Card","CardActionArea","Box","InsightCard","posthog","showIcon","ref","inView","useInView","cardsCopy","updateBeat","updateOffer","useEffect","offerBeat","handleClick","CarouselControls","currentBeatIndex","numBeats","onNextClick","onPreviousClick","scrollRightBoundary","scrollX","shouldApplyDotAnimation","visibleCardsCount","disabledLeft","disabledRight","DISABLED_ICON_COLOR","ICON_COLOR","ChevronLeft","i","isActive","ChevronRight","BeatList","activeCardIndex","beats","cardWidth","generalProps","beatPosition","totalBeats","ariaLabelPositionInCarousel","buildDynamicCopy","hasMicroTitle","hasMicroDescription","beatTitle","beatDescription","ViewMoreMicroCard","MicroBeatCarousel","analyticsMetadata","allowSingleCardPeeking","showCarouselControls","showWithMargin","carouselRef","setScrollX","touchEnd","setTouchEnd","touchStart","setTouchStart","setCardWidth","computeCardWidth","observedWidth","node","rawWidth","matchingBreakpoint","bp","containerWidth","gap","calculatedCardWidth","peekAreaWidth","handleResize","observer","entries","entry","width","handleNextClick","handlePreviousClick","handleScroll","onTouchEnd","onTouchMove","onTouchStart","scrollBoundry","MicroBeatCarousel$1","CarouselHeader","headerSx","handleViewAllClick","H3","ChevronRightIcon","Loader","CarouselHeader$1","MicroWidgetContainer","NoRelevantInsightsCard","NoRelevantInsightsCard_default","ZeroStateCard","zeroStateCopy","ZeroStateCard_default","Spinner","CircularProgress","TRENDS_ANALYTICS_METADATA","InsightsMicroWidget","areBeatsLoading","cardStyle","onConsumerEvent","onConsumerPageview","showHeader","userHasFullInsightFeedBeats","resolvedVariant","resolvedElevation","carouselSize","setCarouselSize","useState","isLoaded","setIsLoaded","triedInitializing","setTriedInitializing","useCombineEvents","useCombinePageviews","useWidgetLoadTimer","pageHeight","zeroStateProps","InsightsMicroWidget$1","ViewMoreMicroCard_default"],"mappings":"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"}
1
+ {"version":3,"file":"ViewMoreMicroCard-DXaJ-56q.mjs","sources":["../src/microinsights/stores/CopyStore.ts","../src/microinsights/constants/Analytics.ts","../src/microinsights/analytics.ts","../src/microinsights/stores/InsightsMicroWidgetStore.ts","../src/microinsights/stores/AppStore.ts","../src/microinsights/context/InsightsMicroWidgetDataProvider.tsx","../src/microinsights/beaticons/BeatCategoryIcon.tsx","../src/microinsights/beaticons/BeatMerchantLogo.tsx","../src/microinsights/utils/DataSeries.ts","../src/microinsights/utils/colorType.ts","../src/microinsights/beaticons/MonthlySpendComparisonIcon.tsx","../src/microinsights/beaticons/AverageSpendComparisonIcon.tsx","../src/microinsights/beaticons/AreaChartIcon.tsx","../src/microinsights/beaticons/InstitutionLogoIcon.tsx","../src/microinsights/beaticons/BeatIcon.tsx","../src/microinsights/context/hooks.tsx","../src/microinsights/constants/App.ts","../src/microinsights/MicroCardTemplate.tsx","../src/microinsights/cards/InsightCard.tsx","../src/microinsights/carousel/CarouselControls.tsx","../src/microinsights/carousel/BeatList.tsx","../src/microinsights/carousel/MicroBeatCarousel.tsx","../src/microinsights/carousel/CarouselHeader.tsx","../src/microinsights/MicroWidgetContainer.tsx","../src/microinsights/cards/NoRelevantInsightsCard.tsx","../src/microinsights/cards/ZeroStateCard.tsx","../src/microinsights/Spinner.tsx","../src/trends/constants/TrendsWidget.ts","../src/microinsights/InsightsMicroWidget.tsx","../src/microinsights/cards/ViewMoreMicroCard.tsx"],"sourcesContent":["import { makeAutoObservable, runInAction } from 'mobx'\nimport { GlobalCopyApi } from '../../core/api/GlobalCopyApi'\nimport type { MicroInsightsCopy } from '../../core/types/localization'\n\nexport class CopyStore {\n copyApi: GlobalCopyApi = new GlobalCopyApi('/', '')\n copyObject: MicroInsightsCopy = {} as MicroInsightsCopy\n namespace = 'experiences'\n translationKey = 'micro_insights'\n\n constructor() {\n makeAutoObservable(this)\n }\n\n // NOTE: Not sure if this is special case, but other stores have this deprecation todo\n // DEPRECATED: Initialize api in constructor and use loadCopy instead\n // TODO: Remove this function\n initialize = async (endpoint: string, token: string) => {\n this.copyApi = new GlobalCopyApi(endpoint, token)\n await this.loadCopy()\n }\n\n loadCopy = async () => {\n const copy = await this.copyApi.getGlobalCopy(this.namespace, this.translationKey)\n\n runInAction(() => {\n this.copyObject = copy[this.translationKey]\n })\n }\n\n get cardsCopy(): any {\n return this.copyObject.cards\n }\n\n get carouselCopy(): any {\n return this.copyObject.carousel\n }\n\n get zeroStateCopy(): any {\n return this.copyObject.zero_state\n }\n}\n","import type { BasicAnalyticsEvent } from '../../core/types/Analytics'\n\nexport const TEMPLATE_NAMES = {\n BillAmountNotStandard: 'BillAmountNotStandard',\n CanadianUpcomingDeadlineAlert: 'CanadianUpcomingDeadlineAlert',\n DuplicatePaymentV2: 'DuplicatePaymentV2',\n IntroducePulse: 'IntroducePulse',\n LargeTransaction: 'LargeTransaction',\n MonthlySpendToIncomeComparisonV2: 'MonthlySpendToIncomeComparisonV2',\n QuarterlySummary: 'QuarterlySummary',\n SpendingPlanCategorySpending: 'SpendingPlanCategorySpending',\n SubscriptionPriceIncrease: 'SubscriptionPriceIncrease',\n UncategorizedTransactionsV2: 'UncategorizedTransactionsV2',\n UpcomingBill: 'UpcomingBill',\n UnifiedDeposit: 'UnifiedDeposit',\n WeeklySpendingPlanSummary: 'WeeklySpendingPlanSummary',\n WeeklyNewMerchantsV2: 'WeeklyNewMerchantsV2',\n MonthlySpendComparison: 'MonthlySpendComparison',\n MonthlySpendToIncomeComparison: 'MonthlySpendToIncomeComparison',\n}\n\nconst instanceId = (window as any)?.app?.clientConfig?.microwidget_instance_id || ''\n\nconst PATHS = {\n INSIGHTS_MICRO_WIDGET: '/micro-insights-carousel',\n}\n\nexport const ON_CLICK_EVENT = (name: string) => `on${name}Click`\nexport const ON_VIEW_EVENT = (name: string) => `on${name}View`\nexport const ON_VIEW_FIRST_TIME_EVENT = (name: string) => `on${name}ViewFirstTime`\nexport const readableTemplateName = (name: string) => name.replace(/([a-z])([A-Z])/g, '$1 $2')\nexport const onBeatClickedEvents = () => {\n return Object.values(TEMPLATE_NAMES).reduce(\n (acc, name) => ({\n ...acc,\n [ON_CLICK_EVENT(name)]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_CLICKED,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: readableTemplateName(name),\n value: instanceId,\n },\n }),\n {},\n ) as Record<keyof AnalyticsEventsType, string>\n}\n\nexport const onBeatDisplayedEvents = () => {\n return Object.values(TEMPLATE_NAMES).reduce(\n (acc, name) => ({\n ...acc,\n [ON_VIEW_EVENT(name)]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_DISPLAYED,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: readableTemplateName(name),\n value: instanceId,\n },\n }),\n {},\n ) as Record<keyof AnalyticsEventsType, string>\n}\n\nexport const onBeatDisplayedForFirstTimeEvents = () => {\n return Object.values(TEMPLATE_NAMES).reduce(\n (acc, name) => ({\n ...acc,\n [ON_VIEW_FIRST_TIME_EVENT(name)]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_DISPLAYED_FIRST_TIME,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: readableTemplateName(name),\n value: instanceId,\n },\n }),\n {},\n ) as Record<keyof AnalyticsEventsType, string>\n}\n\nexport const ANALYTICS_LABELS = {\n CARD: 'Card',\n CAROUSEL_CONTROL: 'Carousel Control',\n MICRO_WIDGET: 'Micro Widget',\n VIEW_MORE: 'View More',\n}\n\nexport const ANALYTICS_CATEGORIES = {\n MICRO_WIDGET_INTERACTION: 'Micro Widget Interaction',\n BEAT_INTERACTION: 'Beat Interaction',\n}\n\nexport const ANALYTICS_CLICK_EVENTS = {\n ON_CAROUSEL_BACK_CLICK: 'onCarouselBackClick',\n ON_CAROUSEL_BACK_SWIPE: 'onCarouselBackSwipe',\n ON_CAROUSEL_FORWARD_CLICK: 'onCarouselForwardClick',\n ON_CAROUSEL_FORWARD_SWIPE: 'onCarouselForwardSwipe',\n ON_NO_RELEVANT_INSIGHTS_CLICKED: 'onNoRelevantInsightsClicked',\n ON_VIEW_MORE_CLICKED: 'onViewMoreClicked',\n}\n\nexport const ANALYTICS_VIEW_EVENTS = {\n ON_VIEW_MORE_VIEWED: 'onViewMoreCardView',\n}\n\nexport const ANALYTICS_ACTIONS = {\n CONTROL_BACKWARD: 'Control Backward',\n CONTROL_FORWARD: 'Control Forward',\n MICRO_BEAT_CLICKED: 'Micro Beat Clicked',\n MICRO_BEAT_DISPLAYED: 'Micro Beat Displayed',\n MICRO_BEAT_DISPLAYED_FIRST_TIME: 'Micro Beat Displayed For First Time',\n SWIPE_BACKWARD: 'Swipe Backward',\n SWIPE_FORWARD: 'Swipe Forward',\n}\n\nexport const ANALYTICS_PAGE_NAMES = {\n MICRO_WIDGET_CAROUSEL: 'Micro Widget Carousel',\n MICRO_WIDGET_CAROUSEL_ZERO_STATE: 'Micro Widget Carousel Zero State',\n MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS: 'Micro Widget Carousel No Relevant Insights',\n}\n\nexport const ANALYTICS_PAGEVIEWS = {\n [ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL]: {\n label: ANALYTICS_LABELS.MICRO_WIDGET,\n name: ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL,\n path: PATHS.INSIGHTS_MICRO_WIDGET,\n value: instanceId,\n },\n // zero state\n [ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_ZERO_STATE]: {\n label: ANALYTICS_LABELS.MICRO_WIDGET,\n name: ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_ZERO_STATE,\n path: PATHS.INSIGHTS_MICRO_WIDGET,\n value: instanceId,\n },\n // no relevant cards\n [ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS]: {\n label: ANALYTICS_LABELS.MICRO_WIDGET,\n name: ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS,\n path: '/micro-widget',\n value: instanceId,\n },\n}\n\nexport const ANALYTICS_EVENTS = {\n // carousel control interaction events - clicks and swipes\n [ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_BACK_CLICK]: {\n action: ANALYTICS_ACTIONS.CONTROL_BACKWARD,\n category: ANALYTICS_CATEGORIES.MICRO_WIDGET_INTERACTION,\n label: ANALYTICS_LABELS.CAROUSEL_CONTROL,\n value: instanceId,\n },\n [ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_FORWARD_CLICK]: {\n action: ANALYTICS_ACTIONS.CONTROL_FORWARD,\n category: ANALYTICS_CATEGORIES.MICRO_WIDGET_INTERACTION,\n label: ANALYTICS_LABELS.CAROUSEL_CONTROL,\n value: instanceId,\n },\n [ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_BACK_SWIPE]: {\n action: ANALYTICS_ACTIONS.SWIPE_BACKWARD,\n category: ANALYTICS_CATEGORIES.MICRO_WIDGET_INTERACTION,\n label: ANALYTICS_LABELS.CAROUSEL_CONTROL,\n value: instanceId,\n },\n [ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_FORWARD_SWIPE]: {\n action: ANALYTICS_ACTIONS.SWIPE_FORWARD,\n category: ANALYTICS_CATEGORIES.MICRO_WIDGET_INTERACTION,\n label: ANALYTICS_LABELS.CAROUSEL_CONTROL,\n value: instanceId,\n },\n // read more card events\n [ANALYTICS_CLICK_EVENTS.ON_VIEW_MORE_CLICKED]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_CLICKED,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: ANALYTICS_LABELS.VIEW_MORE,\n value: instanceId,\n },\n [ANALYTICS_VIEW_EVENTS.ON_VIEW_MORE_VIEWED]: {\n action: ANALYTICS_ACTIONS.MICRO_BEAT_DISPLAYED,\n category: ANALYTICS_CATEGORIES.BEAT_INTERACTION,\n label: ANALYTICS_LABELS.VIEW_MORE,\n value: instanceId,\n },\n\n ...onBeatClickedEvents(),\n ...onBeatDisplayedEvents(),\n ...onBeatDisplayedForFirstTimeEvents(),\n}\n\nexport interface AnalyticsEventsObjectType extends BasicAnalyticsEvent {\n value: string\n}\n\nexport type AnalyticsEventsType = {\n [key: string]: AnalyticsEventsObjectType\n}\n","import { analyticsSession } from '../common/utils/Analytics'\nimport { AnalyticsPageviewObjectType } from '../core/types/Analytics'\n\nimport { ANALYTICS_EVENTS, ANALYTICS_PAGEVIEWS } from './constants/Analytics'\nimport type { AnalyticsEventsObjectType } from './constants/Analytics'\n\nexport type AnalyticSession = Awaited<ReturnType<typeof analyticsSession>>\n\nexport const onAnalyticEvent = async (event: string, session: AnalyticSession) => {\n if (!session || !ANALYTICS_EVENTS[event]) return null\n\n return session\n .sendAnalyticEvent(ANALYTICS_EVENTS[event] as AnalyticsEventsObjectType)\n .then((response) => response)\n .catch((error) => {\n throw error\n })\n}\n\nexport const onAnalyticPageView = async (page: string, session: AnalyticSession) => {\n if (!session || !ANALYTICS_PAGEVIEWS[page]) {\n return null\n }\n\n return session\n .sendAnalyticsPageview(ANALYTICS_PAGEVIEWS[page] as AnalyticsPageviewObjectType)\n .then((response) => response)\n .catch((error) => {\n throw error\n })\n}\n","import { makeAutoObservable } from 'mobx'\n\nimport { type AnalyticSession, onAnalyticEvent, onAnalyticPageView } from '../analytics'\nimport { BeatApi } from '../../core/api/BeatApi'\nimport type { Beat } from '../../core/types/Beat'\n\nexport interface ErrPromise<TSuccess, TError = unknown> {\n then<TResult1 = TSuccess, TResult2 = never>(\n onfulfilled?: ((value: TSuccess) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: TError) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n ): Promise<TResult1 | TResult2>\n catch<TResult = never>(\n onrejected?: ((reason: TError) => TResult | PromiseLike<TResult>) | undefined | null,\n ): Promise<TSuccess | TResult>\n}\n\nexport class InsightsMicroWidgetStore {\n onAnalyticEvent: (\n event: string,\n session: AnalyticSession,\n ) => ErrPromise<string, AnalyticSession> = onAnalyticEvent\n onAnalyticPageView: (\n event: string,\n session: AnalyticSession,\n ) => ErrPromise<string, AnalyticSession> = onAnalyticPageView\n\n beatApi = new BeatApi('/', '')\n\n constructor() {\n makeAutoObservable(this)\n }\n\n initialize = async (endpoint: string, token: string, logOutUser: () => void) => {\n this.onAnalyticEvent = (event: string, session: AnalyticSession): any => {\n onAnalyticEvent(event, session)\n .then((res) => res)\n .catch((err) => {\n if (err.status === 401) {\n logOutUser()\n }\n throw err\n })\n }\n\n this.onAnalyticPageView = (page: string, session: AnalyticSession): any => {\n onAnalyticPageView(page, session)\n .then((res) => res)\n .catch((err) => {\n if (err.status === 401) {\n logOutUser()\n }\n throw err\n })\n }\n\n this.beatApi = new BeatApi(endpoint, token)\n }\n\n updateBeat = async (beat: Beat) => {\n this.beatApi.updateBeat(beat)\n }\n\n updateOffer = async (beat: Beat) => {\n this.beatApi.updateOffer(beat)\n }\n}\n","import { makeAutoObservable, runInAction } from 'mobx'\n\nimport { analyticsSession } from '../../common/utils/Analytics'\n\nimport { CopyStore } from './CopyStore'\nimport { InsightsMicroWidgetStore } from './InsightsMicroWidgetStore'\n\nimport type { AnalyticSession } from '../analytics'\n\nexport class AppStore {\n copyStore\n endpoint = '/'\n insightsMicroWidgetStore\n session: AnalyticSession | null = null\n token = ''\n\n isInitialized = false\n\n constructor() {\n this.copyStore = new CopyStore()\n this.insightsMicroWidgetStore = new InsightsMicroWidgetStore()\n makeAutoObservable(this)\n }\n\n initialize = async (endpoint: string, token: string, logOutUser: () => void) => {\n await this.copyStore.initialize(endpoint, token)\n await this.insightsMicroWidgetStore.initialize(endpoint, token, logOutUser)\n const session = await analyticsSession(endpoint, token, '1.0.0', 'Micro Insights Carousel')\n\n runInAction(() => {\n this.session = session\n this.isInitialized = true\n })\n }\n}\n","import React from 'react'\n\nimport { type GlobalEventHandler } from '../../core'\nimport type { AppStore } from '../stores/AppStore'\n\nexport interface InsightsMicroWidgetContextTypes {\n children: React.ReactNode\n onEvent: GlobalEventHandler\n onPageview: (page: string) => void\n store: AppStore\n}\n\nexport const InsightsMicroWidgetDataContext =\n React.createContext<InsightsMicroWidgetContextTypes | null>(null)\n\nexport const InsightsMicroWidgetDataProvider: React.FC<InsightsMicroWidgetContextTypes> = ({\n onEvent,\n onPageview,\n store,\n children,\n}) => (\n <InsightsMicroWidgetDataContext.Provider value={{ onEvent, onPageview, store, children }}>\n {children}\n </InsightsMicroWidgetDataContext.Provider>\n)\n","import { FC } from 'react'\n\nimport { CategoryIcon } from '@mxenabled/mxui'\n\nimport { CategoryGuids } from '../../core/constants/Category'\nimport type { WeGotTheBeat } from '../interfaces'\n\nexport const BeatCategoryIcon: FC<WeGotTheBeat> = ({ beat }) => {\n const { primary_category_guid, category_guids } = beat\n const categoryGuid = primary_category_guid || category_guids?.[0] || CategoryGuids.UNCATEGORIZED\n\n return <CategoryIcon categoryGuid={categoryGuid} size={32} sx={{ minWidth: 32 }} />\n}\n","import { FC } from 'react'\n\nimport { MerchantLogo } from '@mxenabled/mxui'\n\nimport type { WeGotTheBeat } from '../interfaces'\n\nconst BeatMerchantLogo: FC<WeGotTheBeat> = ({ beat }) => {\n const { category_guids, merchant_guids, primary_category_guid, primary_merchant_guid } = beat\n return (\n <MerchantLogo\n categoryGuid={primary_category_guid || (category_guids && category_guids[0]) || ''}\n merchantGuid={primary_merchant_guid || merchant_guids[0]}\n size={32}\n sx={{\n display: 'flex',\n mt: 2,\n minWidth: 32,\n }}\n />\n )\n}\n\nexport default BeatMerchantLogo\n","import type { DataSeries } from '../../core/types/Beat'\n\nexport const buildDataSeries = (data: DataSeries | undefined) => {\n if (!data) {\n return []\n }\n\n if (data.data) {\n return data.data.map((d) => {\n const item: any = {}\n\n data.names?.map((name, index) => {\n item[name] = d[index]\n })\n return item\n })\n } else {\n return []\n }\n}\n","import type { DataSeries } from '../../core/types/Beat'\nimport { buildDataSeries } from './DataSeries'\n\nconst PRIMARY = 'primary'\nconst SUCCESS = 'success'\nconst ERROR = 'error'\n\nexport type ColorType = typeof PRIMARY | typeof SUCCESS | typeof ERROR\n\n/**\n * Determines color type by comparing spending vs income from data series.\n * Data series is expected to have spending data in the first half and income data in the second half.\n *\n * @param data - DataSeries with spending and income data\n * @returns 'error' if spending > income, 'success' if spending < income, 'primary' otherwise\n */\nexport const getColorType = (data: DataSeries | undefined): ColorType => {\n const fullDataSeries = buildDataSeries(data)\n const incomeStartIndex = Math.floor(fullDataSeries.length / 2)\n\n if (incomeStartIndex === 0 || incomeStartIndex === fullDataSeries.length) return PRIMARY\n\n const spendAmount = fullDataSeries[0]?.amount\n const incomeAmount = fullDataSeries[incomeStartIndex]?.amount\n\n if (spendAmount == null || incomeAmount == null) return PRIMARY\n\n if (spendAmount > incomeAmount) return ERROR\n if (spendAmount < incomeAmount) return SUCCESS\n return PRIMARY\n}\n\n/**\n * Determines color type by comparing two numeric values.\n *\n * @param currentValue - Current value to compare\n * @param comparisonValue - Value to compare against\n * @returns 'success' if current < comparison, 'error' if current > comparison, 'primary' if equal\n */\nexport const getComparisonColorType = (\n currentValue: number,\n comparisonValue: number,\n): ColorType => {\n if (currentValue < comparisonValue) return SUCCESS\n if (currentValue > comparisonValue) return ERROR\n return PRIMARY\n}\n","import { FC } from 'react'\nimport { useTheme } from '@mui/material/styles'\nimport { alpha } from '@mui/material/styles'\n\nimport type { WeGotTheBeat } from '../interfaces'\nimport BeatMaterialIcon from './BeatMaterialIcon'\nimport { getColorType } from '../utils/colorType'\n\nexport const MonthlySpendComparisonIcon: FC<WeGotTheBeat> = ({ beat }) => {\n const theme = useTheme()\n const colorType = getColorType(beat.data_series)\n const bgColor = theme.palette[colorType].main\n\n return <BeatMaterialIcon bgColor={alpha(bgColor, 0.15)} iconColor={colorType} name=\"bar_chart\" />\n}\n","import { FC } from 'react'\nimport { useTheme } from '@mui/material/styles'\nimport { alpha } from '@mui/material/styles'\n\nimport type { WeGotTheBeat } from '../interfaces'\nimport BeatMaterialIcon from './BeatMaterialIcon'\nimport { getComparisonColorType } from '../utils/colorType'\n\nexport const AverageSpendComparisonIcon: FC<WeGotTheBeat> = ({ beat }) => {\n const theme = useTheme()\n\n // Get average spend from payload\n const averageSpend = beat.payload?.average_spend || 0\n\n // Get recent month value from data_series\n let recentMonthValue = 0\n if (beat.data_series?.data && beat.data_series.data.length > 0) {\n const names = beat.data_series.names || []\n const amountIndex = names.indexOf('amount')\n if (amountIndex !== -1) {\n recentMonthValue = beat.data_series.data[0][amountIndex] || 0\n }\n }\n\n // Determine color based on comparison\n const colorType = getComparisonColorType(recentMonthValue, averageSpend)\n\n return (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette[colorType].main, 0.15)}\n iconColor={colorType}\n name=\"timeline\"\n />\n )\n}\n","import { FC } from 'react'\n\nimport { useTheme } from '@mui/material/styles'\nimport { alpha } from '@mui/material/styles'\n\nimport type { WeGotTheBeat } from '../interfaces'\nimport BeatMaterialIcon from './BeatMaterialIcon'\nimport { getColorType } from '../utils/colorType'\n\nexport const AreaChartIcon: FC<WeGotTheBeat> = ({ beat }) => {\n const theme = useTheme()\n const colorType = getColorType(beat.data_series)\n const bgColor = theme.palette[colorType].main\n\n return (\n <BeatMaterialIcon\n bgColor={alpha(bgColor, 0.15)}\n fill={false}\n iconColor={colorType}\n name=\"area_chart\"\n />\n )\n}\n","import React from 'react'\nimport { InstitutionLogo } from '@mxenabled/mxui'\n\nimport type { Beat } from '../../core/types/Beat'\n\nexport const InstitutionLogoIcon: React.FC<{ beat: Beat }> = ({ beat }) => (\n <InstitutionLogo alt={beat.institutionName || ''} institutionGuid={beat.institutionGuid || ''} />\n)\n","import React from 'react'\n\nimport {\n AverageSpendComparisonIcon,\n BeatCategoryIcon,\n BeatMaterialIcon,\n BeatMerchantLogo,\n MonthlySpendComparisonIcon,\n AreaChartIcon,\n InstitutionLogoIcon,\n} from '.'\n\nimport type { WeGotTheBeat } from '../interfaces'\nimport type { Theme } from '@mui/material/styles'\nimport { alpha, useTheme } from '@mui/material/styles'\n\nconst iconTypeMap: Record<number, (beat: WeGotTheBeat['beat'], theme: Theme) => React.JSX.Element> =\n {\n 0: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"error\" />\n ),\n 1: (beat) => <BeatCategoryIcon beat={beat} />,\n 2: (beat) => <BeatMerchantLogo beat={beat} />,\n 3: (beat) => <MonthlySpendComparisonIcon beat={beat} />,\n 4: (_, theme) => {\n return (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.secondary.main, 0.15)}\n iconColor=\"secondary\"\n name=\"info\"\n />\n )\n },\n 5: (_, theme) => {\n return <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"campaign\" />\n },\n 6: (_, theme) => {\n return (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.success.main, 0.15)}\n iconColor=\"success\"\n name=\"check_circle\"\n />\n )\n },\n 7: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"today\" />\n ),\n 8: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"calendar_clock\" />\n ),\n 9: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"celebration\" />\n ),\n // TODO: Waiting for the backend to accommodate the below icon types\n 10: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"problem\" />\n ),\n 11: (_, theme) => (\n <BeatMaterialIcon\n avatarSx={{ border: `1px solid ${theme.palette.secondary.main}` }}\n bgColor={alpha(theme.palette.secondary.main, 0.15)}\n fill={false}\n name=\"category\"\n sx={{ color: 'text.primary' }}\n />\n ),\n 12: (beat) => <AreaChartIcon beat={beat} />,\n 13: () => (\n <BeatMaterialIcon\n avatarSx={{ border: '1px solid #EB00D0' }} //TODO : Remove explict color code\n bgColor={alpha('#EB00D0', 0.25)}\n fill={false}\n name=\"money_bag\"\n sx={{ color: 'text.primary' }}\n />\n ),\n 14: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.secondary.main, 0.15)}\n fill={false}\n iconColor=\"secondary\"\n name=\"person\"\n />\n ),\n 15: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.primary.main, 0.15)}\n name=\"payment_arrow_down\"\n />\n ),\n 16: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.success.main, 0.15)}\n name=\"beenhere\"\n sx={{ color: 'success.main' }}\n />\n ),\n 17: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"savings\" />\n ),\n 18: (beat, theme) => (\n <BeatMaterialIcon\n bgColor={\n beat.payload.projected_overdraft_amount < 0\n ? alpha(theme.palette.warning.main, 0.15)\n : alpha(theme.palette.error.main, 0.15)\n }\n iconColor={beat?.payload?.projected_overdraft_amount < 0 ? 'warning' : 'error'}\n name=\"error\"\n />\n ),\n 19: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"finance_mode\" />\n ),\n 20: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"tips_and_updates\" />\n ),\n 21: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.primary.main, 0.15)}\n name=\"currency_exchange\"\n />\n ),\n 22: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.warning.main, 0.15)}\n name=\"flag\"\n sx={{ color: 'warning.main' }}\n />\n ),\n 23: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"thumb_up\" />\n ),\n 24: () => (\n <BeatMaterialIcon\n bgColor={alpha('#EB00D0', 0.15)} //TODO : Remove explict color code\n name=\"attach_money\"\n sx={{ color: '#EB00D0' }}\n />\n ),\n 25: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"note_stack\" />\n ),\n 26: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.primary.main, 0.15)}\n fill={false}\n name=\"price_change\"\n />\n ),\n 27: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"directions_car\" />\n ),\n 28: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"contract\" />\n ),\n 29: (beat) => <AverageSpendComparisonIcon beat={beat} />,\n 30: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"calendar_month\" />\n ),\n 31: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.warning.main, 0.15)}\n name=\"star_rate\"\n sx={{ color: 'warning.400' }}\n />\n ),\n 32: (_, theme) => (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"help\" />\n ),\n 33: (_, theme) => (\n <BeatMaterialIcon\n bgColor={alpha(theme.palette.primary.main, 0.15)}\n fill={false}\n name=\"storefront\"\n />\n ),\n 34: (beat) => <InstitutionLogoIcon beat={beat} />,\n }\n\nexport const BeatIcon: React.FC<WeGotTheBeat> = ({ beat }) => {\n const theme = useTheme()\n const { icon_type } = beat\n const renderIcon = icon_type != null ? iconTypeMap[icon_type] : null\n\n if (renderIcon) {\n return renderIcon(beat, theme)\n }\n\n return <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"error\" />\n}\n","import React from 'react'\n\nimport { InsightsMicroWidgetDataContext } from './InsightsMicroWidgetDataProvider'\n\nexport const useDataContext = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('useDataContext() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return context\n}\n\nexport const useStore = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('useStore() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return context.store\n}\n\nexport const useCopyStore = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('useCopyStore() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return context.store.copyStore\n}\n\nexport const useInsightsMicroWidgetStore = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context?.store?.insightsMicroWidgetStore) {\n throw new Error(\n 'useInsightsMicroWidgetStore() must be used within the InsightsMicroWidgetDataProvider',\n )\n }\n\n return context.store.insightsMicroWidgetStore\n}\n\nexport const useEvent = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('useEvent() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return { onEvent: context.onEvent }\n}\n\nexport const usePageview = () => {\n const context = React.useContext(InsightsMicroWidgetDataContext)\n\n if (!context) {\n throw new Error('usePageview() must be used within the InsightsMicroWidgetDataProvider')\n }\n\n return { onPageview: context.onPageview }\n}","export const SUPPORTED_CAROUSEL_HEIGHTS: any = {\n LARGE: 180,\n STANDARD: 154,\n XLARGE: 200,\n XXLARGE: 248,\n}\n\nexport const MINIMUM_SWIPE_DISTANCE = 50\n\nexport const VIEW_THRESHOLD = 1 // card is 100% in view\n","import React from 'react'\nimport { Box, Button, Card, CardActionArea, IconButton, Stack } from '@mui/material'\n\nimport { P, Text } from '@mxenabled/mxui'\nimport { Close } from '@mxenabled/mx-icons'\n\ninterface MicroCardTemplateProps {\n ariaLabel?: string\n closeAriaLabel?: string\n description: string\n elevation?: number\n icon?: React.ReactNode\n isActiveCard?: boolean\n heightOverrides?: string | number\n onClose?: () => void\n onCardClick?: () => void\n onPrimaryAction?: () => void\n onSecondaryAction?: () => void\n primaryActionText?: string\n secondaryActionText?: string\n title: string\n variant?: 'outlined' | 'elevation' | undefined\n widthOverrides?: string | number\n}\n\nconst MicroCardTemplate = React.forwardRef<HTMLDivElement, MicroCardTemplateProps>(\n function MicroCardTemplate(\n {\n ariaLabel,\n closeAriaLabel,\n description,\n elevation,\n icon,\n isActiveCard,\n heightOverrides,\n onClose,\n onCardClick,\n onPrimaryAction,\n onSecondaryAction,\n primaryActionText,\n secondaryActionText,\n title,\n variant,\n widthOverrides,\n ...restProps\n },\n inViewRef,\n ) {\n const hasPrimaryAction = Boolean(onPrimaryAction && primaryActionText)\n const hasSecondaryAction = Boolean(onSecondaryAction && secondaryActionText)\n\n const innerContent = (\n <>\n {onClose && (\n <IconButton\n aria-label={closeAriaLabel}\n onClick={(e) => {\n e.stopPropagation()\n onClose?.()\n }}\n onMouseDown={(e) => {\n e.stopPropagation()\n }}\n onTouchStart={(e) => {\n e.stopPropagation()\n }}\n sx={{ minHeight: 40, minWidth: 40, position: 'absolute', right: 4, top: 4 }}\n >\n <Close />\n </IconButton>\n )}\n <Stack sx={{ gap: 6, height: '100%', justifyContent: 'space-between' }}>\n <Stack sx={{ flexDirection: 'row', gap: 12 }}>\n {icon && icon}\n <Stack sx={{ gap: 6 }}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <P bold={true} sx={{ lineHeight: '16px' }} variant=\"body1\">\n {title}\n </P>\n </Stack>\n <P\n dangerouslySetInnerHTML={{ __html: description }}\n sx={{\n display: '-webkit-box',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: hasPrimaryAction ? 2 : 3,\n '& .bold-copy': {\n fontWeight: 'bold',\n fontFamily: 'inherit',\n },\n }}\n variant=\"subtitle2\"\n />\n </Stack>\n </Stack>\n\n {hasPrimaryAction && (\n <Stack\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n height: 28,\n pb: 4,\n pl: icon ? 36 : 0,\n }}\n >\n {hasPrimaryAction && (\n <Button\n onClick={(e) => {\n e.stopPropagation()\n onPrimaryAction?.()\n }}\n onMouseDown={(e) => {\n e.stopPropagation()\n }}\n onTouchStart={(e) => {\n e.stopPropagation()\n }}\n size=\"small\"\n sx={{ px: 8, ml: icon ? 0 : -8 }}\n variant=\"text\"\n >\n <Text bold={true} variant=\"body2\">\n {primaryActionText}\n </Text>\n </Button>\n )}\n\n {hasSecondaryAction && (\n <Button\n onClick={(e) => {\n e.stopPropagation()\n onSecondaryAction?.()\n }}\n onMouseDown={(e) => {\n e.stopPropagation()\n }}\n onTouchStart={(e) => {\n e.stopPropagation()\n }}\n size=\"small\"\n sx={{ px: 8 }}\n variant=\"text\"\n >\n <Text bold={true} sx={{ color: 'text.secondary' }} variant=\"body2\">\n {secondaryActionText}\n </Text>\n </Button>\n )}\n </Stack>\n )}\n </Stack>\n </>\n )\n\n return (\n <Card\n aria-hidden={!isActiveCard}\n aria-label={ariaLabel}\n elevation={elevation}\n ref={inViewRef}\n role=\"group\"\n sx={{\n backgroundColor: 'background.paper',\n height: heightOverrides ? '100%' : 120,\n minWidth: widthOverrides ? `${widthOverrides}px` : '100%',\n position: 'relative',\n my: 1,\n borderRadius: 2,\n }}\n tabIndex={onCardClick || !isActiveCard ? -1 : 0}\n variant={variant}\n {...restProps}\n >\n {onCardClick ? (\n <CardActionArea\n component=\"div\"\n onClick={onCardClick}\n sx={{\n pb: 8,\n pt: 16,\n px: 16,\n height: '100%',\n }}\n >\n {innerContent}\n </CardActionArea>\n ) : (\n <Box sx={{ pb: 8, pt: 16, px: 16, height: '100%' }}>{innerContent}</Box>\n )}\n </Card>\n )\n },\n)\n\nexport default MicroCardTemplate\n","import React, { useEffect } from 'react'\nimport { useInView } from 'react-intersection-observer'\n\nimport { BeatIcon } from '../beaticons'\n\nimport { useCopyStore, useEvent, useInsightsMicroWidgetStore } from '../context/hooks'\n\nimport { ON_CLICK_EVENT, ON_VIEW_EVENT, ON_VIEW_FIRST_TIME_EVENT } from '../constants/Analytics'\nimport { VIEW_THRESHOLD } from '../constants/App'\n\nimport type { BeatLikeOffer, MicroInsightCardProps } from '../interfaces'\nimport type { Beat } from '../../core/types/Beat'\nimport MicroCardTemplate from '../MicroCardTemplate'\n\nexport interface InsightCardProps extends MicroInsightCardProps {\n beat: Beat | BeatLikeOffer\n index?: number\n}\n\nexport const InsightCard: React.FC<InsightCardProps> = ({\n ariaLabel,\n beat,\n elevation,\n index,\n isActiveCard,\n onCardClick,\n posthog,\n widthOverrides,\n variant,\n showIcon,\n heightOverrides,\n}) => {\n const { ref, inView } = useInView({\n threshold: VIEW_THRESHOLD,\n })\n\n // *************** Context functions *********************\n const { cardsCopy } = useCopyStore()\n const { onEvent } = useEvent()\n const { updateBeat, updateOffer } = useInsightsMicroWidgetStore()\n\n // ************** Use Effects Hooks **********************\n useEffect(() => {\n if (inView) {\n if (!beat.has_been_displayed) {\n if (beat.guid.startsWith('OFR')) {\n updateOffer({\n ...beat,\n has_been_displayed: true,\n })\n } else {\n updateBeat({\n ...beat,\n has_been_displayed: true,\n })\n }\n onEvent(ON_VIEW_FIRST_TIME_EVENT(beat.template))\n } else {\n onEvent(ON_VIEW_EVENT(beat.template))\n }\n }\n }, [inView])\n\n useEffect(() => {\n if (inView && beat) {\n if (beat.template === 'MarketingOffer') {\n const offerBeat = beat as BeatLikeOffer\n posthog?.capture('viewed_messaging_insight', {\n template: beat.template,\n campaign_guid: offerBeat.campaign_guid,\n campaign_name: offerBeat.pulse_campaign_name,\n })\n } else {\n posthog?.capture('viewed_insight', {\n beat_guid: beat.guid,\n template: beat.template,\n position: index,\n })\n }\n }\n }, [beat, index, inView])\n\n // *************** Click handlers ************************\n const handleClick = () => {\n /* eslint-disable no-unused-expressions */\n onCardClick && onCardClick(beat)\n onEvent(ON_CLICK_EVENT(beat.template))\n\n if (beat.template === 'MarketingOffer') {\n const offerBeat = beat as BeatLikeOffer\n posthog?.capture('clicked_messaging_insight', {\n template: beat.template,\n campaign_guid: offerBeat.campaign_guid,\n campaign_name: offerBeat.pulse_campaign_name,\n })\n } else {\n posthog?.capture('clicked_insight', {\n beat_guid: beat.guid,\n template: beat.template,\n position: index,\n })\n }\n }\n\n return (\n <MicroCardTemplate\n aria-roledescription=\"slide\"\n ariaLabel={ariaLabel}\n description={\n beat?.html_micro_description && beat?.html_micro_description.length > 0\n ? beat.html_micro_description\n : beat.html_description || ''\n }\n elevation={elevation}\n heightOverrides={heightOverrides}\n icon={showIcon && <BeatIcon beat={beat} />}\n isActiveCard={isActiveCard}\n onCardClick={handleClick}\n onPrimaryAction={handleClick}\n primaryActionText={beat.micro_call_to_action || cardsCopy?.micro_card_cta}\n ref={ref}\n title={beat.micro_title && beat.micro_title.length > 0 ? beat.micro_title : beat.title}\n variant={variant}\n widthOverrides={widthOverrides}\n />\n )\n}\n","import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport IconButton from '@mui/material/IconButton'\nimport { useTheme } from '@mui/material/styles'\n\nimport { ChevronLeft, ChevronRight } from '@mxenabled/mx-icons'\n\nimport { useCopyStore } from '../context/hooks'\n\nexport interface CarouselControlsProps {\n currentBeatIndex: number\n numBeats: number\n onNextClick: () => void\n onPreviousClick: () => void\n scrollRightBoundary: number\n scrollX: number\n shouldApplyDotAnimation?: boolean\n visibleCardsCount?: number\n}\n\nexport const CarouselControls: React.FC<CarouselControlsProps> = ({\n currentBeatIndex,\n numBeats,\n onNextClick,\n onPreviousClick,\n scrollRightBoundary,\n scrollX,\n shouldApplyDotAnimation = false,\n visibleCardsCount = 1,\n}) => {\n const theme = useTheme()\n // *************** Context functions *********************\n const { carouselCopy: copy } = useCopyStore()\n\n const disabledLeft =\n Math.floor(scrollX) > scrollRightBoundary || currentBeatIndex - visibleCardsCount + 1 === 0\n const disabledRight = scrollX < 0 || numBeats - 1 === currentBeatIndex\n\n const DISABLED_ICON_COLOR = theme.palette.grey[500]\n const ICON_COLOR = theme.palette.primary.main\n\n return (\n <Stack\n direction={'row'}\n sx={{\n alignItems: 'center',\n justifyContent: 'center',\n pt: 4,\n width: '100%',\n // we were using `gap` instead of margin, but it doesn't work in safari browsers older than iOS 14.1\n '& button:first-child': {\n mr: 8,\n },\n }}\n >\n <IconButton\n aria-disabled={disabledLeft}\n aria-label={copy?.previous_insight_cta_aria}\n disabled={disabledLeft}\n onClick={onPreviousClick}\n >\n <ChevronLeft\n sx={{\n color: disabledLeft ? DISABLED_ICON_COLOR : ICON_COLOR,\n }}\n />\n </IconButton>\n {Array.from({ length: numBeats }).map((_, i) => {\n const isActive = i === currentBeatIndex\n return (\n <Box\n className=\"mx-insights-micro-carousel-dots\"\n key={`carousel-button-${i}`}\n sx={{\n bgcolor: isActive ? ICON_COLOR : DISABLED_ICON_COLOR,\n height: 8,\n mr: 8, // existing comment from meganthan \"we were using `gap` instead of margin, but it doesn't work in safari browsers older than iOS 14.1\"\n ...(shouldApplyDotAnimation\n ? {\n borderRadius: '4px',\n transformOrigin: 'center',\n transition: 'all 0.5s ease-out',\n willChange: 'width, background-color',\n }\n : {\n borderRadius: '50%',\n p: 0,\n }),\n width: isActive && shouldApplyDotAnimation ? 24 : 8,\n }}\n />\n )\n })}\n <IconButton\n aria-disabled={disabledRight}\n aria-label={copy?.next_insight_cta_aria}\n disabled={disabledRight}\n onClick={onNextClick}\n >\n <ChevronRight\n sx={{\n color: disabledRight ? DISABLED_ICON_COLOR : ICON_COLOR,\n }}\n />\n </IconButton>\n </Stack>\n )\n}\n","import React from 'react'\n\nimport { InsightCard, ViewMoreMicroCard } from '..'\nimport type { MicroInsightCardProps } from '../interfaces'\n\nimport { useCopyStore } from '../context/hooks'\n\nimport type { Beat } from '../../core/types/Beat'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nexport interface BeatListProps extends MicroInsightCardProps {\n activeCardIndex: number\n beats: Beat[]\n cardWidth: number | null\n}\n\nconst BeatList: React.FC<BeatListProps> = ({\n activeCardIndex,\n beats,\n cardWidth,\n elevation,\n heightOverrides,\n onCardClick,\n posthog,\n showIcon,\n variant,\n}) => {\n const { carouselCopy: copy } = useCopyStore()\n\n const generalProps = {\n elevation,\n heightOverrides,\n posthog,\n showIcon,\n variant,\n }\n\n return (\n <>\n {beats.map((beat: Beat, i) => {\n const beatPosition = i + 1\n const totalBeats = beats.length + 1\n const ariaLabelPositionInCarousel = buildDynamicCopy(\n copy?.card_position_in_carousel_aria,\n beatPosition.toString(),\n totalBeats.toString(),\n )\n\n const hasMicroTitle = beat.micro_title && beat.micro_title.length > 0\n const hasMicroDescription = beat.micro_description && beat.micro_description.length > 0\n\n const beatTitle = hasMicroTitle ? beat.micro_title : beat.title\n const beatDescription = hasMicroDescription ? beat.micro_description : beat.description\n\n return (\n <InsightCard\n ariaLabel={`${ariaLabelPositionInCarousel}: ${beatTitle}, ${beatDescription}`}\n beat={beat}\n index={i}\n isActiveCard={i === activeCardIndex}\n key={`${beat.guid} ${i}`}\n onCardClick={onCardClick}\n widthOverrides={cardWidth || undefined}\n {...generalProps}\n />\n )\n })}\n <ViewMoreMicroCard\n isActiveCard={activeCardIndex === beats.length}\n onCardClick={onCardClick}\n widthOverrides={cardWidth || undefined}\n {...generalProps}\n />\n </>\n )\n}\n\nexport default BeatList\n","/* eslint-disable consistent-return */\nimport React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { CarouselControls } from './CarouselControls'\nimport BeatList from './BeatList'\n\nimport type { MicroWidgetProps } from '..'\n\nimport { useCopyStore, useEvent } from '../context/hooks'\n\nimport type { Beat } from '../../core/types/Beat'\n\nimport { ANALYTICS_CLICK_EVENTS } from '../constants/Analytics'\nimport { MINIMUM_SWIPE_DISTANCE } from '../constants/App'\n\ninterface MicroBeatCarouselProps {\n allowSingleCardPeeking?: boolean\n analyticsMetadata?: Record<string, string>\n beats?: Beat[]\n elevation?: number\n heightOverrides?: MicroWidgetProps['heightOverrides']\n onCardClick?: MicroWidgetProps['onCardClick']\n posthog?: MicroWidgetProps['posthog']\n showCarouselControls?: boolean\n showIcon?: boolean\n showWithMargin?: boolean\n variant?: 'outlined' | 'elevation' | undefined\n visibleCardsCount?: number\n widthOverrides?: number\n}\n\nconst MicroBeatCarousel: React.FC<MicroBeatCarouselProps> = ({\n analyticsMetadata,\n allowSingleCardPeeking,\n beats = [],\n elevation,\n heightOverrides,\n onCardClick,\n posthog,\n showCarouselControls,\n showIcon,\n showWithMargin = true,\n variant,\n widthOverrides,\n visibleCardsCount = 1, // Default to 1 card visible\n}) => {\n // ************** Use Ref Hooks **************************\n const ref = React.useRef<HTMLDivElement | null>(null)\n const carouselRef = React.useRef<HTMLDivElement | null>(null)\n\n // ************** Use States Hooks ***********************\n const [scrollX, setScrollX] = React.useState<number>(0)\n const [touchEnd, setTouchEnd] = React.useState<number | null>(null)\n const [touchStart, setTouchStart] = React.useState<number | null>(null)\n const [cardWidth, setCardWidth] = React.useState<number | null>(null)\n\n // *************** Context functions *********************\n const { carouselCopy: copy } = useCopyStore()\n const { onEvent } = useEvent()\n\n // ************** Use Effects Hooks **********************\n\n React.useEffect(() => {\n // Single source of truth for card-width sizing. The two layout modes\n // (breakpoint-based peeking vs. proportional visible-cards math) are\n // mutually exclusive on `allowSingleCardPeeking`, so they share one\n // ResizeObserver/effect to keep resize tracking in one place.\n //\n // Observe the outer, structurally stable container (carouselRef) rather\n // than the inner shrink-wrapped flex row (ref). The inner row's width\n // depends on cardWidth, so observing it would feed back into itself and\n // cause a shrinking ResizeObserver loop / stuck-small layout.\n const computeCardWidth = (observedWidth?: number) => {\n const node = carouselRef.current\n if (!node) return\n\n // Prefer the width reported by the ResizeObserver entry to avoid an\n // extra layout read (thrashing); fall back to a DOM read on mount and\n // on the window-resize fallback path.\n const rawWidth = observedWidth ?? node.offsetWidth\n\n if (allowSingleCardPeeking) {\n // Use until token sizes are actually implemented in the mxui repo\n const breakpoints = [\n { maxWidth: 320, cardWidth: 220 },\n { maxWidth: 375, cardWidth: 268 },\n { maxWidth: 444, cardWidth: 300 },\n { maxWidth: 599, cardWidth: 350 },\n { maxWidth: 749, cardWidth: 450 },\n { maxWidth: 900, cardWidth: 600 },\n ]\n\n const matchingBreakpoint = breakpoints.find((bp) => rawWidth <= bp.maxWidth)\n setCardWidth(matchingBreakpoint ? matchingBreakpoint.cardWidth : 750)\n return\n }\n\n // The inner row is constrained to `calc(100% - 32px)` when showWithMargin\n // is set, so subtract that margin to match the actual available width.\n // Clamp to 0 so a tiny/unmeasured container never yields a negative width.\n const containerWidth = showWithMargin ? Math.max(0, rawWidth - 32) : rawWidth\n const gap = 8 // gap between cards\n\n // When visibleCardsCount > 1, make each card narrower to fit multiple cards and show a peek of the next card\n // When visibleCardsCount is 1, use full container width\n let calculatedCardWidth\n if (visibleCardsCount > 1) {\n // First calculate what a single full card width would be\n const fullCardWidth = (containerWidth - (visibleCardsCount - 1) * gap) / visibleCardsCount\n // Set the peek area to be 1/3 of a card width instead of fixed 60px\n const peekAreaWidth = fullCardWidth / 3\n // Calculate final card width, accounting for the peek area and gaps\n calculatedCardWidth =\n (containerWidth - peekAreaWidth - (visibleCardsCount - 1) * gap) / visibleCardsCount\n } else {\n calculatedCardWidth = containerWidth\n }\n\n // Clamp to prevent negative widths.\n setCardWidth(Math.max(0, calculatedCardWidth))\n }\n\n computeCardWidth()\n\n // Recompute on container resize via ResizeObserver, falling back to the\n // window resize event only when ResizeObserver is unavailable.\n const handleResize = () => computeCardWidth()\n let observer: ResizeObserver | null = null\n if (typeof ResizeObserver !== 'undefined' && carouselRef.current) {\n observer = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n const width = entry.borderBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n computeCardWidth(width)\n })\n observer.observe(carouselRef.current)\n } else {\n window.addEventListener('resize', handleResize)\n }\n\n return () => {\n window.removeEventListener('resize', handleResize)\n observer?.disconnect()\n }\n }, [allowSingleCardPeeking, visibleCardsCount, showWithMargin])\n\n // *************** Click handlers ************************\n const handleNextClick = () => {\n onEvent(ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_FORWARD_CLICK, analyticsMetadata)\n\n if (ref.current && cardWidth) {\n // Scroll by one card width + gap\n ref.current.scrollTo({\n left: scrollX + cardWidth + 8,\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n const handlePreviousClick = () => {\n onEvent(ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_BACK_CLICK, analyticsMetadata)\n\n if (ref.current && cardWidth) {\n // Scroll by one card width + gap\n ref.current.scrollTo({\n left: Math.max(0, scrollX - (cardWidth + 8)),\n top: 0,\n behavior: 'smooth',\n })\n }\n }\n\n const handleScroll = () => {\n if (ref.current) {\n setScrollX(ref.current.scrollLeft)\n }\n }\n\n // *************** Mobile handlers ************************\n const onTouchEnd = () => {\n if (!touchStart || !touchEnd) return\n const distance = touchStart - touchEnd\n\n // swiping left\n if (distance > MINIMUM_SWIPE_DISTANCE) {\n onEvent(ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_FORWARD_SWIPE, analyticsMetadata)\n } else {\n // swiping right\n onEvent(ANALYTICS_CLICK_EVENTS.ON_CAROUSEL_BACK_SWIPE, analyticsMetadata)\n }\n }\n\n const onTouchMove = (e: React.TouchEvent) => {\n setTouchEnd(e.targetTouches[0].clientX)\n }\n\n const onTouchStart = (e: React.TouchEvent) => {\n // otherwise the swipe is fired even with usual touch events\n setTouchEnd(null)\n setTouchStart(e.targetTouches[0].clientX)\n }\n\n // Calculate active card index based on scroll position and card width\n const activeCardIndex = cardWidth ? Math.round(scrollX / (cardWidth + 8)) : 0\n const scrollBoundry = ref.current ? ref.current.scrollWidth - ref.current.offsetWidth : 0\n\n return (\n <Stack\n aria-label={copy?.carousel_title}\n aria-roledescription=\"carousel\"\n ref={carouselRef}\n role=\"region\"\n sx={{\n alignItems: 'center',\n boxSizing: 'border-box',\n height: heightOverrides,\n width: widthOverrides ? widthOverrides : '100%',\n }}\n >\n <Stack\n direction=\"row\"\n onScroll={handleScroll}\n onTouchEnd={onTouchEnd}\n onTouchMove={onTouchMove}\n onTouchStart={onTouchStart}\n ref={ref}\n sx={{\n alignItems: 'center',\n height: heightOverrides && '100%',\n gap: 8,\n listStyleType: 'none',\n m: 0,\n maxWidth: showWithMargin ? `calc(100% - 32px)` : '100%',\n overflowX: 'auto',\n overflowY: 'hidden',\n p: 0,\n scrollbarWidth: 'none',\n '-ms-overflow-style': 'none',\n '-webkit-overflow-scrolling': 'touch',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n }}\n >\n <BeatList\n activeCardIndex={activeCardIndex}\n beats={beats}\n cardWidth={cardWidth}\n elevation={elevation}\n heightOverrides={heightOverrides}\n onCardClick={onCardClick}\n posthog={posthog}\n showIcon={showIcon}\n variant={variant}\n />\n </Stack>\n {showCarouselControls && (\n <CarouselControls\n currentBeatIndex={activeCardIndex + visibleCardsCount - 1}\n numBeats={beats.length + 1}\n onNextClick={handleNextClick}\n onPreviousClick={handlePreviousClick}\n scrollRightBoundary={scrollBoundry}\n scrollX={scrollX}\n shouldApplyDotAnimation={allowSingleCardPeeking}\n visibleCardsCount={visibleCardsCount}\n />\n )}\n </Stack>\n )\n}\n\nexport default observer(MicroBeatCarousel)\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { H3 } from '@mxenabled/mxui'\n\nimport { ChevronRight as ChevronRightIcon } from '@mxenabled/mx-icons'\n\nimport { useCopyStore, useEvent } from '../context/hooks'\nimport { ANALYTICS_CLICK_EVENTS } from '../constants/Analytics'\n\nimport { Beat } from '../../core/types/Beat'\nimport { TheWholeHog } from '../interfaces'\nimport Loader from '../../common/components/Loader'\nimport { type SxProps } from '@mui/material/styles'\n\nexport interface CarouselHeaderProps {\n analyticsMetadata?: Record<string, string>\n onCardClick: (beat?: Beat | undefined) => void\n posthog?: TheWholeHog\n widthOverrides?: number | string\n headerSx?: SxProps\n}\n\nconst CarouselHeader: React.FC<CarouselHeaderProps> = ({\n analyticsMetadata,\n onCardClick,\n posthog,\n widthOverrides,\n headerSx,\n}) => {\n // *************** Context functions *********************\n const { carouselCopy: copy } = useCopyStore()\n const { onEvent } = useEvent()\n\n // *************** Click handlers ************************\n const handleViewAllClick = () => {\n if (onEvent) {\n onEvent(ANALYTICS_CLICK_EVENTS.ON_VIEW_MORE_CLICKED, analyticsMetadata)\n\n onCardClick()\n\n posthog?.capture('clicked_view_more')\n }\n }\n\n if (!copy) {\n return <Loader />\n }\n\n return (\n <Stack\n alignItems=\"center\"\n direction=\"row\"\n justifyContent=\"space-between\"\n spacing={2}\n sx={{\n p: 16,\n pb: 8,\n width: widthOverrides ? widthOverrides : undefined,\n ...headerSx,\n }}\n >\n <H3>{copy.carousel_title}</H3>\n <Button\n endIcon={<ChevronRightIcon size={20} />}\n onClick={handleViewAllClick}\n size=\"small\"\n variant=\"text\"\n >\n {copy.view_all_insights_in_full_feed_cta_aria}\n </Button>\n </Stack>\n )\n}\n\nexport default observer(CarouselHeader)\n","import React, { PropsWithChildren } from 'react'\n\nimport Box from '@mui/material/Box'\n\nimport { useCopyStore } from './context/hooks'\n\ninterface MicroWidgetContainerProps {\n heightOverrides?: number | string\n widthOverrides?: number\n}\n\nconst MicroWidgetContainer: React.FC<PropsWithChildren<MicroWidgetContainerProps>> = ({\n heightOverrides,\n widthOverrides,\n children,\n}) => {\n const { carouselCopy: copy } = useCopyStore()\n\n return (\n <Box\n aria-label={copy?.carousel_title}\n aria-roledescription=\"carousel\"\n role=\"group\"\n sx={{\n boxSizing: 'border-box',\n height: !heightOverrides ? '100%' : undefined,\n m: '0 auto',\n width: !widthOverrides ? '100%' : undefined,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default MicroWidgetContainer\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport { alpha, useTheme } from '@mui/material/styles'\n\nimport { useCopyStore, useEvent, usePageview } from '../context/hooks'\n\nimport { ANALYTICS_CLICK_EVENTS, ANALYTICS_PAGE_NAMES } from '../constants/Analytics'\n\nimport type { MicroInsightCardProps } from '../interfaces'\nimport MicroCardTemplate from '../MicroCardTemplate'\nimport { BeatMaterialIcon } from '../beaticons'\n\nexport const NoRelevantInsightsCard: React.FC<MicroInsightCardProps> = ({\n ariaLabel,\n elevation,\n heightOverrides,\n onCardClick,\n posthog,\n showIcon,\n variant,\n}) => {\n // *************** Context functions *********************git\n const { cardsCopy } = useCopyStore()\n const theme = useTheme()\n const { onEvent } = useEvent()\n const { onPageview } = usePageview()\n\n // ************** Use Effects Hooks **********************\n React.useEffect(() => {\n onPageview(ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS)\n }, [])\n\n // *************** Click handlers ************************\n const handleClick = () => {\n if (onCardClick) onCardClick()\n onEvent(ANALYTICS_CLICK_EVENTS.ON_NO_RELEVANT_INSIGHTS_CLICKED)\n\n posthog?.capture('clicked_insight', {\n template: 'no_relevant_insights',\n })\n }\n\n return (\n <MicroCardTemplate\n ariaLabel={ariaLabel}\n description={cardsCopy.no_relevant_insights_card_description}\n elevation={elevation}\n heightOverrides={heightOverrides}\n icon={\n showIcon && (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"lightbulb\" />\n )\n }\n onCardClick={handleClick}\n onPrimaryAction={handleClick}\n primaryActionText={cardsCopy.micro_card_cta}\n title={cardsCopy.no_relevant_insights_card_title}\n variant={variant}\n />\n )\n}\n\nexport default observer(NoRelevantInsightsCard)\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport { useCopyStore, usePageview } from '../context/hooks'\n\nimport { ANALYTICS_PAGE_NAMES } from '../constants/Analytics'\n\nimport type { MicroInsightCardProps } from '../interfaces'\nimport MicroCardTemplate from '../MicroCardTemplate'\nimport { BeatMaterialIcon } from '../beaticons'\n\nimport { alpha, useTheme } from '@mui/material/styles'\n\nexport const ZeroStateCard: React.FC<MicroInsightCardProps> = ({\n ariaLabel,\n elevation,\n heightOverrides,\n onCardClick,\n showIcon,\n variant,\n}) => {\n // *************** Context functions *********************\n const { onPageview } = usePageview()\n const { zeroStateCopy } = useCopyStore()\n const theme = useTheme()\n\n // ************** Use Effects Hooks **********************\n React.useEffect(() => {\n onPageview(ANALYTICS_PAGE_NAMES.MICRO_WIDGET_CAROUSEL_ZERO_STATE)\n }, [])\n\n return (\n <MicroCardTemplate\n ariaLabel={ariaLabel}\n description={zeroStateCopy.carousel_zero_state_description}\n elevation={elevation}\n heightOverrides={heightOverrides}\n icon={\n showIcon && (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"lightbulb\" />\n )\n }\n onCardClick={onCardClick}\n title={zeroStateCopy.carousel_zero_state_title}\n variant={variant}\n />\n )\n}\n\nexport default observer(ZeroStateCard)\n","import React from 'react'\nimport Box from '@mui/material/Box'\nimport CircularProgress from '@mui/material/CircularProgress'\n\nconst Spinner: React.FC = () => {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n }}\n >\n <CircularProgress />\n </Box>\n )\n}\n\nexport default Spinner\n","export const TRENDS_ANALYTICS_METADATA = {\n featureVersion: 'spendVsIncomeTrends',\n}\n","import React, { useState } from 'react'\n\nimport { observer } from 'mobx-react-lite'\nimport Stack from '@mui/material/Stack'\n\nimport { useCombineEvents, useCombinePageviews, useWidgetLoadTimer } from '../common/hooks'\nimport { InsightsMicroWidgetDataProvider } from './context/InsightsMicroWidgetDataProvider'\n\nimport CarouselHeader from './carousel/CarouselHeader'\nimport MicroWidgetContainer from './MicroWidgetContainer'\nimport MicroBeatCarousel from './carousel/MicroBeatCarousel'\nimport { NoRelevantInsightsCard } from './cards/NoRelevantInsightsCard'\nimport { ZeroStateCard } from './cards/ZeroStateCard'\nimport Spinner from './Spinner'\n\nimport { AppStore } from './stores/AppStore'\n\nimport type { MicroWidgetProps } from './interfaces'\nimport { TRENDS_ANALYTICS_METADATA } from '../trends/constants/TrendsWidget'\nimport { SUPPORTED_CAROUSEL_HEIGHTS } from './constants/App'\n\nconst store = new AppStore()\n\n/*\n This is the parent component / starting point for the general availabile insights micro widget. The Legacy/Cibc version is in a seperate repo\n called insights micro widget. The difference between the No relevent and zero state component is that No relevant is a zero state theat lets the\n user know that although there are no micro insights available but the user has fill insights available and zero state lets the user know that there\n aren't any micro or full insights available.\n*/\n\nconst InsightsMicroWidget: React.FC<MicroWidgetProps> = ({\n allowSingleCardPeeking = true,\n areBeatsLoading = false,\n beats = [], // This also determines the length of the carousel controls (beat.length + 1)\n cardStyle = 'elevation 1',\n endpoint = '/',\n headerSx,\n heightOverrides,\n logOutUser = () => {},\n onCardClick = () => {},\n onEvent: onConsumerEvent = () => {},\n onPageview: onConsumerPageview = () => {},\n posthog,\n showCarouselControls,\n showHeader,\n showIcon,\n showWithMargin = true,\n token = '',\n userHasFullInsightFeedBeats,\n visibleCardsCount = 1,\n widthOverrides,\n}) => {\n // ************** Derived Props ****************************\n const getResolvedVariant = () => {\n if (cardStyle === 'border') return 'outlined' as const\n if (cardStyle === 'elevation 1') return 'elevation' as const\n if (cardStyle === 'flat') return undefined\n return 'elevation'\n }\n const resolvedVariant = getResolvedVariant()\n const resolvedElevation = cardStyle === 'flat' ? 0 : 1\n\n // ************** Use States Hooks ***********************\n const [carouselSize, setCarouselSize] = useState<string>('STANDARD')\n const [isLoaded, setIsLoaded] = useState(false)\n const [triedInitializing, setTriedInitializing] = useState(false)\n\n // ************** Use Custom Hooks ***********************\n const onEvent = useCombineEvents([onConsumerEvent], store)\n const onPageview = useCombinePageviews([onConsumerPageview], store)\n\n useWidgetLoadTimer({\n widgetName: 'InsightsMicroWidget',\n isLoaded: isLoaded,\n })\n\n // ************** Use Effects Hooks **********************\n React.useEffect(() => {\n if (!store.isInitialized && !triedInitializing) {\n store.initialize(endpoint, token, logOutUser).catch(() => setTriedInitializing(false))\n setTriedInitializing(true)\n }\n }, [endpoint, token, logOutUser, store.isInitialized, triedInitializing])\n\n React.useEffect(() => {\n const pageHeight = window.innerHeight\n\n if (pageHeight < 180) {\n setCarouselSize('STANDARD')\n } else if (pageHeight >= 180 && pageHeight < 200) {\n setCarouselSize('LARGE')\n } else if (pageHeight >= 200 && pageHeight < 248) {\n setCarouselSize('XLARGE')\n } else if (pageHeight >= 248) {\n setCarouselSize('XXLARGE')\n }\n }, [window.innerHeight])\n\n React.useEffect(() => {\n setIsLoaded(!areBeatsLoading && store.isInitialized)\n }, [areBeatsLoading, store.isInitialized])\n\n // ************** Spreadable Props ***********************\n const generalProps = {\n heightOverrides,\n onCardClick,\n posthog,\n showIcon,\n showWithMargin,\n widthOverrides,\n }\n\n const zeroStateProps = {\n carouselSize,\n elevation: resolvedElevation,\n variant: resolvedVariant,\n heightOverrides,\n onCardClick,\n posthog,\n showIcon,\n }\n\n return (\n <InsightsMicroWidgetDataProvider onEvent={onEvent} onPageview={onPageview} store={store}>\n <MicroWidgetContainer heightOverrides={heightOverrides} widthOverrides={widthOverrides}>\n {!isLoaded && <Spinner />}\n\n {isLoaded && showHeader && (\n <CarouselHeader\n analyticsMetadata={TRENDS_ANALYTICS_METADATA}\n headerSx={headerSx}\n onCardClick={onCardClick}\n posthog={posthog}\n widthOverrides={widthOverrides}\n />\n )}\n\n {isLoaded && !!beats.length && (\n <MicroBeatCarousel\n allowSingleCardPeeking={allowSingleCardPeeking}\n analyticsMetadata={TRENDS_ANALYTICS_METADATA}\n beats={beats}\n elevation={resolvedElevation}\n showCarouselControls={showCarouselControls}\n variant={resolvedVariant}\n visibleCardsCount={visibleCardsCount}\n {...generalProps}\n />\n )}\n\n {isLoaded && !beats.length && (\n <Stack\n sx={{\n alignItems: 'center',\n height: heightOverrides,\n width: widthOverrides ? widthOverrides : '100%',\n }}\n >\n <Stack\n sx={{\n height: `calc(${SUPPORTED_CAROUSEL_HEIGHTS[carouselSize]}px - 44px)`,\n width: showWithMargin ? `calc(${widthOverrides}px - 32px)` : '100%',\n }}\n >\n {userHasFullInsightFeedBeats ? (\n <NoRelevantInsightsCard {...zeroStateProps} />\n ) : (\n <ZeroStateCard {...zeroStateProps} />\n )}\n </Stack>\n </Stack>\n )}\n </MicroWidgetContainer>\n </InsightsMicroWidgetDataProvider>\n )\n}\n\nexport default observer(InsightsMicroWidget)\n","import React, { useEffect } from 'react'\n\nimport { useInView } from 'react-intersection-observer'\n\nimport { observer } from 'mobx-react-lite'\n\nimport type { MicroInsightCardProps } from '../interfaces'\nimport { useCopyStore, useEvent } from '../context/hooks'\n\nimport { ANALYTICS_CLICK_EVENTS, ANALYTICS_VIEW_EVENTS } from '../constants/Analytics'\nimport { VIEW_THRESHOLD } from '../constants/App'\nimport MicroCardTemplate from '../MicroCardTemplate'\nimport { BeatMaterialIcon } from '../beaticons'\n\nimport { alpha, useTheme } from '@mui/material/styles'\n\nexport const ViewMoreMicroCard: React.FC<MicroInsightCardProps> = ({\n ariaLabel,\n elevation,\n heightOverrides,\n isActiveCard,\n onCardClick,\n posthog,\n widthOverrides,\n showIcon,\n variant,\n}) => {\n const theme = useTheme()\n const { ref, inView } = useInView({\n threshold: VIEW_THRESHOLD,\n })\n\n // *************** Context functions *********************\n const { cardsCopy } = useCopyStore()\n const { onEvent } = useEvent()\n\n // ************** Use Effects Hooks **********************\n useEffect(() => {\n if (inView) {\n onEvent(ANALYTICS_VIEW_EVENTS.ON_VIEW_MORE_VIEWED)\n posthog?.capture('viewed_insight', {\n template: 'view_more_card',\n })\n }\n }, [inView])\n\n // *************** Click handlers ************************\n const handleClick = () => {\n if (onCardClick) onCardClick()\n onEvent(ANALYTICS_CLICK_EVENTS.ON_VIEW_MORE_CLICKED)\n posthog?.capture('clicked_insight', {\n template: 'view_more_card',\n })\n }\n\n return (\n <MicroCardTemplate\n aria-roledescription=\"slide\"\n ariaLabel={ariaLabel}\n description={cardsCopy?.view_more_card_description}\n elevation={elevation}\n heightOverrides={heightOverrides}\n icon={\n showIcon && (\n <BeatMaterialIcon bgColor={alpha(theme.palette.primary.main, 0.15)} name=\"show_chart\" />\n )\n }\n isActiveCard={isActiveCard}\n onCardClick={handleClick}\n onPrimaryAction={handleClick}\n primaryActionText={cardsCopy?.micro_card_cta}\n ref={ref}\n title={cardsCopy?.view_more_card_title}\n variant={variant}\n widthOverrides={widthOverrides}\n />\n )\n}\n\nexport default observer(ViewMoreMicroCard)\n"],"names":["CopyStore","GlobalCopyApi","makeAutoObservable","endpoint","token","copy","runInAction","TEMPLATE_NAMES","instanceId","PATHS","ON_CLICK_EVENT","name","ON_VIEW_EVENT","ON_VIEW_FIRST_TIME_EVENT","readableTemplateName","onBeatClickedEvents","acc","ANALYTICS_ACTIONS","ANALYTICS_CATEGORIES","onBeatDisplayedEvents","onBeatDisplayedForFirstTimeEvents","ANALYTICS_LABELS","ANALYTICS_CLICK_EVENTS","ANALYTICS_VIEW_EVENTS","ANALYTICS_PAGE_NAMES","ANALYTICS_PAGEVIEWS","ANALYTICS_EVENTS","onAnalyticEvent","event","session","response","error","onAnalyticPageView","page","InsightsMicroWidgetStore","BeatApi","logOutUser","res","err","beat","AppStore","analyticsSession","InsightsMicroWidgetDataContext","React","InsightsMicroWidgetDataProvider","onEvent","onPageview","store","children","jsx","BeatCategoryIcon","primary_category_guid","category_guids","categoryGuid","CategoryGuids","CategoryIcon","BeatMerchantLogo","merchant_guids","primary_merchant_guid","MerchantLogo","buildDataSeries","data","d","item","index","PRIMARY","SUCCESS","ERROR","getColorType","fullDataSeries","incomeStartIndex","spendAmount","incomeAmount","getComparisonColorType","currentValue","comparisonValue","MonthlySpendComparisonIcon","theme","useTheme","colorType","bgColor","BeatMaterialIcon","alpha","AverageSpendComparisonIcon","averageSpend","recentMonthValue","amountIndex","AreaChartIcon","InstitutionLogoIcon","InstitutionLogo","iconTypeMap","_","BeatIcon","icon_type","renderIcon","useCopyStore","context","useInsightsMicroWidgetStore","useEvent","usePageview","SUPPORTED_CAROUSEL_HEIGHTS","MINIMUM_SWIPE_DISTANCE","VIEW_THRESHOLD","MicroCardTemplate","ariaLabel","closeAriaLabel","description","elevation","icon","isActiveCard","heightOverrides","onClose","onCardClick","onPrimaryAction","onSecondaryAction","primaryActionText","secondaryActionText","title","variant","widthOverrides","restProps","inViewRef","hasPrimaryAction","innerContent","jsxs","Fragment","IconButton","e","Close","Stack","P","Button","Text","Card","CardActionArea","Box","InsightCard","posthog","showIcon","ref","inView","useInView","cardsCopy","updateBeat","updateOffer","useEffect","offerBeat","handleClick","CarouselControls","currentBeatIndex","numBeats","onNextClick","onPreviousClick","scrollRightBoundary","scrollX","shouldApplyDotAnimation","visibleCardsCount","disabledLeft","disabledRight","DISABLED_ICON_COLOR","ICON_COLOR","ChevronLeft","i","isActive","ChevronRight","BeatList","activeCardIndex","beats","cardWidth","generalProps","beatPosition","totalBeats","ariaLabelPositionInCarousel","buildDynamicCopy","hasMicroTitle","hasMicroDescription","beatTitle","beatDescription","ViewMoreMicroCard","MicroBeatCarousel","analyticsMetadata","allowSingleCardPeeking","showCarouselControls","showWithMargin","carouselRef","setScrollX","touchEnd","setTouchEnd","touchStart","setTouchStart","setCardWidth","computeCardWidth","observedWidth","node","rawWidth","matchingBreakpoint","bp","containerWidth","gap","calculatedCardWidth","peekAreaWidth","handleResize","observer","entries","entry","width","handleNextClick","handlePreviousClick","handleScroll","onTouchEnd","onTouchMove","onTouchStart","scrollBoundry","MicroBeatCarousel$1","CarouselHeader","headerSx","handleViewAllClick","H3","ChevronRightIcon","Loader","CarouselHeader$1","MicroWidgetContainer","NoRelevantInsightsCard","NoRelevantInsightsCard_default","ZeroStateCard","zeroStateCopy","ZeroStateCard_default","Spinner","CircularProgress","TRENDS_ANALYTICS_METADATA","InsightsMicroWidget","areBeatsLoading","cardStyle","onConsumerEvent","onConsumerPageview","showHeader","userHasFullInsightFeedBeats","resolvedVariant","resolvedElevation","carouselSize","setCarouselSize","useState","isLoaded","setIsLoaded","triedInitializing","setTriedInitializing","useCombineEvents","useCombinePageviews","useWidgetLoadTimer","pageHeight","zeroStateProps","InsightsMicroWidget$1","ViewMoreMicroCard_default"],"mappings":"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"}
@@ -11,8 +11,8 @@ import Y from "@mui/material/Stack";
11
11
  import { ChevronLeft as be } from "@mxenabled/mx-icons";
12
12
  import { Icon as x, Text as F, DateRangePicker as Z } from "@mxenabled/mxui";
13
13
  import { u as J } from "./useDimensions-CeDR9V8N.mjs";
14
- import { G as _e } from "./GlobalAccountFilter-BhzR5Vb1.mjs";
15
- import { a as se, u as le, f as Re, i as Ce, W as xe } from "./hooks-97sNJ_lf.mjs";
14
+ import { G as _e } from "./GlobalAccountFilter-DEEc3Bc5.mjs";
15
+ import { a as se, u as le, f as Re, i as Ce, W as xe } from "./hooks-DWOrMnfZ.mjs";
16
16
  import { addMonths as ee } from "date-fns/addMonths";
17
17
  import { addDays as De } from "date-fns/addDays";
18
18
  import { addYears as te } from "date-fns/addYears";
@@ -480,4 +480,4 @@ export {
480
480
  wt as W,
481
481
  We as u
482
482
  };
483
- //# sourceMappingURL=WidgetContainer-CjdCY4sj.mjs.map
483
+ //# sourceMappingURL=WidgetContainer-5O6N88mr.mjs.map