@mx-cartographer/experiences 9.3.0-alpha.bb2 → 9.3.0

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 (612) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/accounts/AccountsMiniWidget.es.js.map +1 -1
  3. package/dist/accounts/AccountsWidget.es.js.map +1 -1
  4. package/dist/accounts/ConnectMiniWidget.es.js.map +1 -1
  5. package/dist/accounts/components/AccountListItem.es.js.map +1 -1
  6. package/dist/accounts/components/AccountsList.es.js.map +1 -1
  7. package/dist/accounts/components/AccountsListCompact.es.js.map +1 -1
  8. package/dist/accounts/components/ConnectImage.es.js.map +1 -1
  9. package/dist/accounts/components/ConnectMiniWidgetCard.es.js.map +1 -1
  10. package/dist/accounts/components/ConnectionStatusIcons.es.js.map +1 -1
  11. package/dist/accounts/components/ConnectionsDrawer.es.js.map +1 -1
  12. package/dist/accounts/components/detailsdrawer/Accounts/AccountActions.es.js +40 -37
  13. package/dist/accounts/components/detailsdrawer/Accounts/AccountActions.es.js.map +1 -1
  14. package/dist/accounts/components/detailsdrawer/Accounts/AccountActionsRow.es.js.map +1 -1
  15. package/dist/accounts/components/detailsdrawer/Accounts/AccountConnection.es.js.map +1 -1
  16. package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailEdit.es.js.map +1 -1
  17. package/dist/accounts/components/detailsdrawer/Accounts/AccountDetails.es.js.map +1 -1
  18. package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsChart.es.js.map +1 -1
  19. package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.es.js.map +1 -1
  20. package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.es.js.map +1 -1
  21. package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsHeader.es.js.map +1 -1
  22. package/dist/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.es.js.map +1 -1
  23. package/dist/accounts/components/detailsdrawer/Transactions/TransactionsTab.es.js.map +1 -1
  24. package/dist/accounts/utils/AccountFields.es.js +4 -1
  25. package/dist/accounts/utils/AccountFields.es.js.map +1 -1
  26. package/dist/analytics/SurveyMiniWidget.es.js.map +1 -1
  27. package/dist/analytics/components/RatingScale.es.js.map +1 -1
  28. package/dist/budgets/BubbleBudgetsMiniWidget.es.js +46 -44
  29. package/dist/budgets/BubbleBudgetsMiniWidget.es.js.map +1 -1
  30. package/dist/budgets/BubbleBudgetsWidget.es.js.map +1 -1
  31. package/dist/budgets/components/AddBudgets.es.js.map +1 -1
  32. package/dist/budgets/components/BubbleBudgets.es.js.map +1 -1
  33. package/dist/budgets/components/BubbleChart.es.js +12 -12
  34. package/dist/budgets/components/BubbleChart.es.js.map +1 -1
  35. package/dist/budgets/components/BudgetDetailsDrawer.es.js.map +1 -1
  36. package/dist/budgets/components/BudgetDetailsDrawerV2.es.js.map +1 -1
  37. package/dist/budgets/components/BudgetList.es.js.map +1 -1
  38. package/dist/budgets/components/MerchantBudgetDetailsDrawer.es.js.map +1 -1
  39. package/dist/budgets/components/Overview.es.js.map +1 -1
  40. package/dist/budgets/components/addbudget/Header.es.js.map +1 -1
  41. package/dist/budgets/components/addbudget/RecalculateBudgets.es.js.map +1 -1
  42. package/dist/budgets/components/addbudget/UnbudgetedRow.es.js.map +1 -1
  43. package/dist/budgets/components/bubblechart/Bubble.es.js.map +1 -1
  44. package/dist/budgets/components/bubblechart/Mercury.es.js +13 -11
  45. package/dist/budgets/components/bubblechart/Mercury.es.js.map +1 -1
  46. package/dist/budgets/components/budgetdetails/AddSubBudget.es.js.map +1 -1
  47. package/dist/budgets/components/budgetdetails/BudgetDetails.es.js.map +1 -1
  48. package/dist/budgets/components/budgetdetails/Header.es.js.map +1 -1
  49. package/dist/budgets/components/budgetdetails/SubBudgetList.es.js.map +1 -1
  50. package/dist/budgets/components/budgetlist/BudgetRow.es.js.map +1 -1
  51. package/dist/budgets/components/budgetlist/SubBudgetRow.es.js.map +1 -1
  52. package/dist/budgets/components/budgetlist/SubBudgetZeroState.es.js.map +1 -1
  53. package/dist/budgets/components/shared/BudgetAmount.es.js.map +1 -1
  54. package/dist/budgets/components/shared/BudgetDetailsTopSection.es.js.map +1 -1
  55. package/dist/budgets/utils/BubblesSVG.es.js +10 -10
  56. package/dist/budgets/utils/BubblesSVG.es.js.map +1 -1
  57. package/dist/cashflow/CashflowMiniWidget.es.js.map +1 -1
  58. package/dist/cashflow/CashflowOnboarding.es.js.map +1 -1
  59. package/dist/cashflow/CashflowWidget.es.js.map +1 -1
  60. package/dist/cashflow/components/CashflowAmountHeading.es.js.map +1 -1
  61. package/dist/cashflow/components/CashflowContent.es.js.map +1 -1
  62. package/dist/cashflow/components/CashflowHeading.es.js.map +1 -1
  63. package/dist/cashflow/components/CashflowWidgetContent.es.js.map +1 -1
  64. package/dist/cashflow/components/DetailsExpenseHeader.es.js.map +1 -1
  65. package/dist/cashflow/components/DetailsExpenseRow.es.js.map +1 -1
  66. package/dist/cashflow/components/DetailsFooter.es.js.map +1 -1
  67. package/dist/cashflow/components/DetailsTab.es.js.map +1 -1
  68. package/dist/cashflow/components/RemainingCash.es.js.map +1 -1
  69. package/dist/cashflow/components/SummaryTab.es.js.map +1 -1
  70. package/dist/cashflow/components/onboarding/StepOne.es.js.map +1 -1
  71. package/dist/cashflow/components/onboarding/StepTwo.es.js.map +1 -1
  72. package/dist/categories/components/CategoryList.es.js +24 -24
  73. package/dist/categories/components/CategoryList.es.js.map +1 -1
  74. package/dist/categories/components/CategoryRow.es.js +6 -6
  75. package/dist/categories/components/CategoryRow.es.js.map +1 -1
  76. package/dist/categories/components/CategorySelector.es.js +36 -32
  77. package/dist/categories/components/CategorySelector.es.js.map +1 -1
  78. package/dist/categories/components/CategorySelectorDrawer.es.js.map +1 -1
  79. package/dist/categories/components/CustomCategories/AddSubcategory.es.js.map +1 -1
  80. package/dist/categories/components/CustomCategories/CustomCategoryModal.es.js +0 -1
  81. package/dist/categories/components/CustomCategories/CustomCategoryModal.es.js.map +1 -1
  82. package/dist/categories/components/SubcategoryList.es.js.map +1 -1
  83. package/dist/categories/components/SubcategoryRow.es.js.map +1 -1
  84. package/dist/common/components/Banner.es.js.map +1 -1
  85. package/dist/common/components/ConnectCard.es.js.map +1 -1
  86. package/dist/common/components/ConnectDrawer.es.js.map +1 -1
  87. package/dist/common/components/ConnectStatus.es.js.map +1 -1
  88. package/dist/common/components/CurrencyDialog.es.js.map +1 -1
  89. package/dist/common/components/CurrencyInput.es.js +11 -11
  90. package/dist/common/components/CurrencyText.es.js.map +1 -1
  91. package/dist/common/components/DataRow.es.js +7 -7
  92. package/dist/common/components/DataRow.es.js.map +1 -1
  93. package/dist/common/components/EmptyState.es.js.map +1 -1
  94. package/dist/common/components/Error.es.js.map +1 -1
  95. package/dist/common/components/ErrorBoundary.es.js.map +1 -1
  96. package/dist/common/components/GlobalAccountFilter.es.js.map +1 -1
  97. package/dist/common/components/IconBacking.es.js.map +1 -1
  98. package/dist/common/components/InformationTooltip.es.js.map +1 -1
  99. package/dist/common/components/ListItemAction.es.js.map +1 -1
  100. package/dist/common/components/ListItemRow.es.js +1 -1
  101. package/dist/common/components/ListItemRow.es.js.map +1 -1
  102. package/dist/common/components/ListItemWrapper.es.js.map +1 -1
  103. package/dist/common/components/Loader.es.js.map +1 -1
  104. package/dist/common/components/MicroWidgetContainer.es.js.map +1 -1
  105. package/dist/common/components/MiniWidgetContainer.es.js.map +1 -1
  106. package/dist/common/components/ResponsiveButton.es.js.map +1 -1
  107. package/dist/common/components/SearchBox.es.js.map +1 -1
  108. package/dist/common/components/Select.es.js.map +1 -1
  109. package/dist/common/components/SelectionBox.es.js.map +1 -1
  110. package/dist/common/components/SkeletonLoader.es.js.map +1 -1
  111. package/dist/common/components/SubheaderRow.es.js.map +1 -1
  112. package/dist/common/components/TabContentContainer.es.js.map +1 -1
  113. package/dist/common/components/TinyBarChart.es.js.map +1 -1
  114. package/dist/common/components/WidgetContainer.es.js.map +1 -1
  115. package/dist/common/components/WidgetDateRangeSelector.es.js +28 -28
  116. package/dist/common/components/WidgetDateRangeSelector.es.js.map +1 -1
  117. package/dist/common/components/addaccounts/AddAccounts.es.js +13 -13
  118. package/dist/common/components/addaccounts/AddAccounts.es.js.map +1 -1
  119. package/dist/common/components/calendar/Calendar.es.js.map +1 -1
  120. package/dist/common/components/calendar/Day.es.js.map +1 -1
  121. package/dist/common/components/calendar/Header.es.js +26 -23
  122. package/dist/common/components/calendar/Header.es.js.map +1 -1
  123. package/dist/common/components/charts/Donut.es.js.map +1 -1
  124. package/dist/common/components/charts/LineChart.es.js.map +1 -1
  125. package/dist/common/components/charts/StackedLineChart.es.js.map +1 -1
  126. package/dist/common/components/charts/StatusBar.es.js.map +1 -1
  127. package/dist/common/components/charts/linechart/CustomLegend.es.js.map +1 -1
  128. package/dist/common/components/charts/linechart/CustomLine.es.js.map +1 -1
  129. package/dist/common/components/charts/linechart/CustomMark.es.js.map +1 -1
  130. package/dist/common/components/charts/linechart/CustomTooltip.es.js.map +1 -1
  131. package/dist/common/components/charts/stackedlinechart/CategoryIconLabel.es.js.map +1 -1
  132. package/dist/common/components/charts/stackedlinechart/CustomAreaTooltip.es.js.map +1 -1
  133. package/dist/common/components/charts/stackedlinechart/CustomLegend.es.js.map +1 -1
  134. package/dist/common/components/charts/stackedlinechart/CustomPointTooltip.es.js.map +1 -1
  135. package/dist/common/components/daterangeselector/DateRangeSelector.d.ts +14 -0
  136. package/dist/common/components/daterangeselector/DateRangeSelector.es.js +113 -101
  137. package/dist/common/components/daterangeselector/DateRangeSelector.es.js.map +1 -1
  138. package/dist/common/components/dialog/Dialog.es.js.map +1 -1
  139. package/dist/common/components/donuts/MultiSegmentDonut.es.js.map +1 -1
  140. package/dist/common/components/donuts/SingleSegmentDonut.es.js.map +1 -1
  141. package/dist/common/components/drawer/Drawer.es.js.map +1 -1
  142. package/dist/common/components/drawer/Footer.es.js.map +1 -1
  143. package/dist/common/components/drawer/Header.es.js.map +1 -1
  144. package/dist/common/components/globalaccountfilter/GlobalAccountFilterList.es.js +71 -87
  145. package/dist/common/components/globalaccountfilter/GlobalAccountFilterList.es.js.map +1 -1
  146. package/dist/common/components/listitems/CollapseExpandListItem.es.js +4 -4
  147. package/dist/common/components/listitems/CollapseExpandListItem.es.js.map +1 -1
  148. package/dist/common/components/listitems/ToggleButtonListItem.es.js +6 -6
  149. package/dist/common/components/listitems/ToggleButtonListItem.es.js.map +1 -1
  150. package/dist/common/components/listitems/ToggleListItem.es.js.map +1 -1
  151. package/dist/common/hooks/useAriaLive.es.js.map +1 -1
  152. package/dist/common/utils/AccountFilter.es.js.map +1 -1
  153. package/dist/core/constants/Category.es.js.map +1 -1
  154. package/dist/core/stores/CategoryStore.d.ts +2 -0
  155. package/dist/core/stores/CategoryStore.es.js +55 -47
  156. package/dist/core/stores/CategoryStore.es.js.map +1 -1
  157. package/dist/core/stores/DebtsStore.es.js +10 -10
  158. package/dist/core/stores/DebtsStore.es.js.map +1 -1
  159. package/dist/core/stores/FinstrongStore.es.js +4 -4
  160. package/dist/core/stores/FinstrongStore.es.js.map +1 -1
  161. package/dist/core/stores/TrendsStore.es.js +6 -6
  162. package/dist/core/types/Account.es.js.map +1 -1
  163. package/dist/core/utils/DateUtil.es.js +24 -23
  164. package/dist/core/utils/DateUtil.es.js.map +1 -1
  165. package/dist/core/utils/DebtUtils.es.js +28 -28
  166. package/dist/core/utils/DebtUtils.es.js.map +1 -1
  167. package/dist/core/utils/GoalsUtil.es.js +11 -8
  168. package/dist/core/utils/GoalsUtil.es.js.map +1 -1
  169. package/dist/core/utils/InvestmentUtil.es.js +26 -23
  170. package/dist/core/utils/InvestmentUtil.es.js.map +1 -1
  171. package/dist/core/utils/NotificationUtils.es.js +11 -8
  172. package/dist/core/utils/NotificationUtils.es.js.map +1 -1
  173. package/dist/core/utils/RecurringTransactionsUtil.es.js +5 -8
  174. package/dist/core/utils/RecurringTransactionsUtil.es.js.map +1 -1
  175. package/dist/core/utils/SettingsUtil.es.js.map +1 -1
  176. package/dist/core/utils/TransactionUtils.es.js.map +1 -1
  177. package/dist/dashboard/Dashboard.es.js.map +1 -1
  178. package/dist/dashboard/Greeting.es.js.map +1 -1
  179. package/dist/debts/DebtsWidget.es.js.map +1 -1
  180. package/dist/debts/components/DebtDrawer.es.js.map +1 -1
  181. package/dist/debts/components/DebtsChart.es.js +36 -36
  182. package/dist/debts/components/DebtsChart.es.js.map +1 -1
  183. package/dist/debts/components/DebtsTable.es.js +13 -13
  184. package/dist/debts/components/DebtsTable.es.js.map +1 -1
  185. package/dist/debts/components/PaydownDrawer.es.js.map +1 -1
  186. package/dist/debts/components/SnowballCard.es.js.map +1 -1
  187. package/dist/debts/components/SnowballDrawer.es.js.map +1 -1
  188. package/dist/debts/components/actions/DebtsPriorityAction.es.js +23 -23
  189. package/dist/debts/components/actions/DebtsPriorityAction.es.js.map +1 -1
  190. package/dist/debts/components/actions/ExtraPaymentAction.es.js.map +1 -1
  191. package/dist/debts/components/actions/InterestRateAction.es.js.map +1 -1
  192. package/dist/debts/components/actions/MonthlyPaymentAction.es.js.map +1 -1
  193. package/dist/debts/components/actions/OriginalBalanceAction.es.js.map +1 -1
  194. package/dist/debts/components/debtsdrawer/DebtDetailsChart.es.js.map +1 -1
  195. package/dist/debts/components/debtsdrawer/DebtDetailsContent.es.js.map +1 -1
  196. package/dist/debts/components/debtsdrawer/DebtDetailsTab.es.js.map +1 -1
  197. package/dist/debts/components/debtsdrawer/DebtScheduleTab.es.js.map +1 -1
  198. package/dist/debts/components/debtsdrawer/DebtStatusCard.es.js.map +1 -1
  199. package/dist/debts/components/debtspaydown/PaydownButton.es.js.map +1 -1
  200. package/dist/debts/components/debtspaydown/PaydownContent.es.js.map +1 -1
  201. package/dist/debts/components/debtspriority/DebtsPriorityButton.es.js.map +1 -1
  202. package/dist/debts/components/debtspriority/DebtsPrioriyPopover.es.js.map +1 -1
  203. package/dist/debts/components/debtstable/AccountCell.es.js.map +1 -1
  204. package/dist/debts/components/debtstable/PriorityCell.es.js.map +1 -1
  205. package/dist/finstrong/FinancialStrengthCard.es.js.map +1 -1
  206. package/dist/finstrong/FinstrongWidget.es.js.map +1 -1
  207. package/dist/finstrong/components/ConnectMoreAccountsCard.es.js.map +1 -1
  208. package/dist/finstrong/components/CreditScore/CreditScoreContent.es.js.map +1 -1
  209. package/dist/finstrong/components/CreditScore/CreditScoreHeader.es.js.map +1 -1
  210. package/dist/finstrong/components/HaveManageableDebt/DebtPaymentTabContent.es.js.map +1 -1
  211. package/dist/finstrong/components/HaveManageableDebt/HaveManageableDebtComponent.es.js.map +1 -1
  212. package/dist/finstrong/components/HaveManageableDebt/HaveManageableDebtProgressBar.es.js.map +1 -1
  213. package/dist/finstrong/components/HaveManageableDebt/IncomeTabContent.es.js.map +1 -1
  214. package/dist/finstrong/components/HealthChart.es.js.map +1 -1
  215. package/dist/finstrong/components/KeyIndicatorsBorrowTab.es.js.map +1 -1
  216. package/dist/finstrong/components/KeyIndicatorsDrawer.es.js.map +1 -1
  217. package/dist/finstrong/components/KeyIndicatorsSaveTab.es.js.map +1 -1
  218. package/dist/finstrong/components/KeyIndicatorsSpendTab.es.js.map +1 -1
  219. package/dist/finstrong/components/KeyIndicatorsTabItem.es.js.map +1 -1
  220. package/dist/finstrong/components/KeyIndicatorsTabItemDrawer.es.js.map +1 -1
  221. package/dist/finstrong/components/KeyIndicatorsTabsWidget.es.js.map +1 -1
  222. package/dist/finstrong/components/MaintainingEmergencySavings/EstimatedContributionCalculator.es.js.map +1 -1
  223. package/dist/finstrong/components/MaintainingEmergencySavings/MaintainingEmergencySavingsContent.es.js.map +1 -1
  224. package/dist/finstrong/components/MaintainingEmergencySavings/MaintainingEmergencySavingsSticky.es.js.map +1 -1
  225. package/dist/finstrong/components/ManageCreditScore.es.js.map +1 -1
  226. package/dist/finstrong/components/ManageDOB.es.js.map +1 -1
  227. package/dist/finstrong/components/MissingData.es.js.map +1 -1
  228. package/dist/finstrong/components/ProfileDrawer.es.js.map +1 -1
  229. package/dist/finstrong/components/ProfileList.es.js.map +1 -1
  230. package/dist/finstrong/components/ProfileProgressBar.es.js.map +1 -1
  231. package/dist/finstrong/components/ProgressBar.es.js.map +1 -1
  232. package/dist/finstrong/components/SaveEnoughToLiveOn/AvailableTabContent.es.js.map +1 -1
  233. package/dist/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnDrawerContent.es.js.map +1 -1
  234. package/dist/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnProgressBar.es.js.map +1 -1
  235. package/dist/finstrong/components/SaveEnoughToLiveOn/SpendingTabContent.es.js.map +1 -1
  236. package/dist/finstrong/components/ScoreHistoryDrawer.es.js.map +1 -1
  237. package/dist/finstrong/components/ScoreRubricDrawer.es.js.map +1 -1
  238. package/dist/finstrong/components/SpendLessThanYouMake/SpendLessThanYouMakeComponent.es.js.map +1 -1
  239. package/dist/finstrong/components/SpendLessThanYouMake/SpendLessThanYouMakeProgressBar.es.js.map +1 -1
  240. package/dist/finstrong/components/StatusChip.es.js.map +1 -1
  241. package/dist/finstrong/components/onboarding/Onboarding.es.js.map +1 -1
  242. package/dist/finstrong/components/onboarding/OnboardingAddMonthlyIncome.es.js.map +1 -1
  243. package/dist/finstrong/components/onboarding/OnboardingBirthday.es.js.map +1 -1
  244. package/dist/finstrong/components/onboarding/OnboardingCreditScore.es.js.map +1 -1
  245. package/dist/finstrong/components/onboarding/OnboardingStepsDrawer.es.js +15 -18
  246. package/dist/finstrong/components/onboarding/OnboardingStepsDrawer.es.js.map +1 -1
  247. package/dist/finstrong/components/onboarding/OnboardingStepsHeader.es.js.map +1 -1
  248. package/dist/finstrong/components/paybillsontime/PayBillsOnTimeDrawerComponent.es.js.map +1 -1
  249. package/dist/finstrong/components/paybillsontime/PayBillsOnTimeStickyComponent.es.js.map +1 -1
  250. package/dist/finstrong/components/shared/Accounts.es.js.map +1 -1
  251. package/dist/finstrong/components/shared/CustomDoubleBarPlot.es.js.map +1 -1
  252. package/dist/finstrong/components/shared/CustomPieArc.es.js.map +1 -1
  253. package/dist/finstrong/components/shared/DialScoreCard.es.js +27 -27
  254. package/dist/finstrong/components/shared/DialScoreCard.es.js.map +1 -1
  255. package/dist/finstrong/components/shared/DoubleBarChart.es.js.map +1 -1
  256. package/dist/finstrong/components/shared/LineGraph.es.js +20 -19
  257. package/dist/finstrong/components/shared/LineGraph.es.js.map +1 -1
  258. package/dist/finstrong/components/shared/ScoreHistoryTimeline.es.js +28 -28
  259. package/dist/finstrong/components/shared/ScoreHistoryTimeline.es.js.map +1 -1
  260. package/dist/finstrong/components/shared/ScoreHistoryTimelineItem.es.js.map +1 -1
  261. package/dist/finstrong/components/shared/TotalCard.es.js.map +1 -1
  262. package/dist/finstrong/components/shared/Transactions.es.js.map +1 -1
  263. package/dist/finstrong/util/finstrongUtils.es.js +4 -1
  264. package/dist/finstrong/util/finstrongUtils.es.js.map +1 -1
  265. package/dist/goals/GoalsMicroWidget.es.js.map +1 -1
  266. package/dist/goals/GoalsWidget.es.js.map +1 -1
  267. package/dist/goals/components/AccountSelectionDrawer.es.js.map +1 -1
  268. package/dist/goals/components/AddGoal.es.js.map +1 -1
  269. package/dist/goals/components/GoalDetails.es.js.map +1 -1
  270. package/dist/goals/components/GoalDetailsDrawer.es.js.map +1 -1
  271. package/dist/goals/components/GoalList.es.js.map +1 -1
  272. package/dist/goals/components/GoalStatusCard.es.js.map +1 -1
  273. package/dist/goals/components/ManageGoals.es.js.map +1 -1
  274. package/dist/goals/components/TabTitle.es.js.map +1 -1
  275. package/dist/goals/components/actions/AccountAction.es.js.map +1 -1
  276. package/dist/goals/components/actions/AddRetirementAccountAction.es.js.map +1 -1
  277. package/dist/goals/components/actions/AmountToSaveAction.es.js.map +1 -1
  278. package/dist/goals/components/actions/BirthdayAction.es.js.map +1 -1
  279. package/dist/goals/components/actions/ChangeAccountAction.es.js.map +1 -1
  280. package/dist/goals/components/actions/ContributionAction.es.js.map +1 -1
  281. package/dist/goals/components/actions/GoalNameAction.es.js.map +1 -1
  282. package/dist/goals/components/actions/InterestRateAction.es.js.map +1 -1
  283. package/dist/goals/components/actions/MonthlyPaymentAction.es.js.map +1 -1
  284. package/dist/goals/components/actions/OriginalBalanceAction.es.js.map +1 -1
  285. package/dist/goals/components/actions/RetirementAgeAction.es.js.map +1 -1
  286. package/dist/goals/components/addgoal/AddGoalListItem.es.js +5 -5
  287. package/dist/goals/components/addgoal/AddGoalListItem.es.js.map +1 -1
  288. package/dist/goals/components/managegoals/CompleteListItem.es.js.map +1 -1
  289. package/dist/goals/components/managegoals/OngoingListItem.es.js.map +1 -1
  290. package/dist/goals/components/micro/GoalMicroStatusCard.es.js.map +1 -1
  291. package/dist/goals/components/micro/GoalsMicroEmptyState.es.js.map +1 -1
  292. package/dist/help/HelpWidget.es.js.map +1 -1
  293. package/dist/help/components/Help.es.js.map +1 -1
  294. package/dist/help/components/HelpList.es.js +32 -32
  295. package/dist/help/components/HelpList.es.js.map +1 -1
  296. package/dist/help/components/content/BottomImageContent.es.js.map +1 -1
  297. package/dist/help/components/content/ContentItem.es.js.map +1 -1
  298. package/dist/help/components/content/Header.es.js.map +1 -1
  299. package/dist/help/components/content/LeftImageContent.es.js.map +1 -1
  300. package/dist/help/components/content/NoImageContent.es.js.map +1 -1
  301. package/dist/help/components/content/RightImageContent.es.js.map +1 -1
  302. package/dist/help/components/content/TopImageContent.es.js.map +1 -1
  303. package/dist/help/components/requestsupport/ContactSupport.es.js.map +1 -1
  304. package/dist/help/components/requestsupport/HelpByCategoryList.es.js.map +1 -1
  305. package/dist/help/components/requestsupport/MissingInstitution.es.js.map +1 -1
  306. package/dist/help/components/requestsupport/PopularTopicsDrawer.es.js.map +1 -1
  307. package/dist/help/components/requestsupport/PopularTopicsList.es.js.map +1 -1
  308. package/dist/help/components/requestsupport/PopularTopicsRow.es.js +6 -6
  309. package/dist/help/components/requestsupport/PopularTopicsRow.es.js.map +1 -1
  310. package/dist/help/components/requestsupport/RequestSupport.es.js.map +1 -1
  311. package/dist/help/components/requestsupport/RequestSupportFooter.es.js.map +1 -1
  312. package/dist/help/components/requestsupport/RequestSupportHeader.es.js.map +1 -1
  313. package/dist/help/components/requestsupport/RequestSupportInstitution.es.js.map +1 -1
  314. package/dist/help/components/requestsupport/SupportSuccessMessage.es.js.map +1 -1
  315. package/dist/insights/components/feed/Header.es.js.map +1 -1
  316. package/dist/insights/components/insights/AmericanUpcomingTaxDeadlineAlert/AmericanUpcomingTaxDeadlineAlert.es.js.map +1 -1
  317. package/dist/insights/components/insights/BillAmountNotStandard/BillAmountNotStandard.es.js.map +1 -1
  318. package/dist/insights/components/insights/BillAmountNotStandard/BillAmountNotStandardMUI.es.js.map +1 -1
  319. package/dist/insights/components/insights/CashBack/CashBack.es.js.map +1 -1
  320. package/dist/insights/components/insights/CategoryBudget/CategoryBudget.es.js +17 -17
  321. package/dist/insights/components/insights/CategoryBudget/CategoryBudget.es.js.map +1 -1
  322. package/dist/insights/components/insights/CategorySpendingV2/CategorySpendingV2.es.js.map +1 -1
  323. package/dist/insights/components/insights/CategorySpendingV2/CategorySpendingV2MUI.es.js.map +1 -1
  324. package/dist/insights/components/insights/CelebrateCreditCardPayoff/CelebrateCreditCardPayoff.es.js.map +1 -1
  325. package/dist/insights/components/insights/CustomTransaction/CustomTransaction.es.js.map +1 -1
  326. package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsBody.es.js.map +1 -1
  327. package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsLearnMoreDrawerContent.es.js +6 -6
  328. package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsLearnMoreDrawerContent.es.js.map +1 -1
  329. package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsMiniInsight.es.js.map +1 -1
  330. package/dist/insights/components/insights/FederalBankHoliday/FederalBankHoliday.es.js.map +1 -1
  331. package/dist/insights/components/insights/FederalBankHoliday/FederalBankHolidayMUI.es.js.map +1 -1
  332. package/dist/insights/components/insights/MarketingHub/Offer.es.js.map +1 -1
  333. package/dist/insights/components/insights/MonthlyDebtToIncomeComparisonV2/MonthlyDebtToIncomeComparisonV2.es.js.map +1 -1
  334. package/dist/insights/components/insights/MonthlyEmergencyFundReview/LastMonthsContributionSection.es.js.map +1 -1
  335. package/dist/insights/components/insights/MonthlyEmergencyFundReview/MonthlyEmergencyFundReviewBody.es.js +38 -35
  336. package/dist/insights/components/insights/MonthlyEmergencyFundReview/MonthlyEmergencyFundReviewBody.es.js.map +1 -1
  337. package/dist/insights/components/insights/MonthlyEmergencyFundReview/ProjectedCompletionSection.es.js.map +1 -1
  338. package/dist/insights/components/insights/MonthlyEmergencyFundReview/TotalSection.es.js.map +1 -1
  339. package/dist/insights/components/insights/MonthlySavingsToIncomeComparison/MonthlySavingsToIncomeComparison.es.js.map +1 -1
  340. package/dist/insights/components/insights/MonthlySpendToIncomeComparisonV2/MonthlySpendToIncomeComparisonV2.es.js.map +1 -1
  341. package/dist/insights/components/insights/MonthlySpendingComparisonV2/MonthlySpendingComparisonV2.es.js.map +1 -1
  342. package/dist/insights/components/insights/P2pCategorization/P2pCategorization.es.js.map +1 -1
  343. package/dist/insights/components/insights/P2pCategorization/shared/P2pCategorizationMultipleTransactions.es.js.map +1 -1
  344. package/dist/insights/components/insights/P2pCategorization/shared/P2pCategorizationSingleTransaction.es.js.map +1 -1
  345. package/dist/insights/components/insights/SavingsAccountBalancesSummary/SavingsAccountBalancesSummary.es.js.map +1 -1
  346. package/dist/insights/components/insights/SharedDeposit/SharedDeposit.es.js.map +1 -1
  347. package/dist/insights/components/insights/SwitchDirectDeposit/AccountBox.es.js.map +1 -1
  348. package/dist/insights/components/insights/SwitchDirectDeposit/SwitchDirectDepositMainContainer.es.js.map +1 -1
  349. package/dist/insights/components/insights/UnifiedDeposit/UnifiedDeposit.es.js.map +1 -1
  350. package/dist/insights/components/insights/UnifiedDeposit/UnifiedDepositBody.es.js.map +1 -1
  351. package/dist/insights/components/insights/UserFeedback/UserFeedback.es.js.map +1 -1
  352. package/dist/insights/components/insights/WeeklyNoSpendDays/BubbleWeek.es.js.map +1 -1
  353. package/dist/insights/components/insights/WeeklyNoSpendDays/WeeklyNoSpendDays.es.js.map +1 -1
  354. package/dist/insights/components/shared/ChartDrawerTemplate/ChartDrawerTemplate.es.js +22 -22
  355. package/dist/insights/components/shared/ChartDrawerTemplate/ChartDrawerTemplate.es.js.map +1 -1
  356. package/dist/insights/components/shared/ChartDrawerTemplate/TipSection.es.js.map +1 -1
  357. package/dist/insights/components/shared/ChartTransactionWithDrillDown.es.js.map +1 -1
  358. package/dist/insights/components/shared/Charts/BarChart/BarChart.es.js.map +1 -1
  359. package/dist/insights/components/shared/Charts/BarChart/BarChartV2.es.js.map +1 -1
  360. package/dist/insights/components/shared/Charts/BarChart/ChartLegend.es.js.map +1 -1
  361. package/dist/insights/components/shared/Charts/BarChart/ChartLegendV2.es.js.map +1 -1
  362. package/dist/insights/components/shared/Charts/BarChart/CustomBarPlot.es.js.map +1 -1
  363. package/dist/insights/components/shared/Charts/BarChart/CustomBarPlotV2.es.js.map +1 -1
  364. package/dist/insights/components/shared/Charts/BarChart/CustomDoubleBarPlot.es.js.map +1 -1
  365. package/dist/insights/components/shared/Charts/BarChart/CustomDoubleBarPlotMXUI.es.js.map +1 -1
  366. package/dist/insights/components/shared/Charts/BarChart/DoubleBarChart.es.js.map +1 -1
  367. package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartLegend.es.js.map +1 -1
  368. package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartLegendMXUI.es.js.map +1 -1
  369. package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartMXUI.es.js.map +1 -1
  370. package/dist/insights/components/shared/ConnectionCard.es.js.map +1 -1
  371. package/dist/insights/components/shared/Coupon.es.js.map +1 -1
  372. package/dist/insights/components/shared/DeepLinks/DeepLinkDialog.es.js.map +1 -1
  373. package/dist/insights/components/shared/DeepLinks/DirectDeposit/DirectDepositDeepLink.es.js.map +1 -1
  374. package/dist/insights/components/shared/DeepLinks/DirectDeposit/Dot.es.js.map +1 -1
  375. package/dist/insights/components/shared/DirectDeposit/DirectDeposit.es.js.map +1 -1
  376. package/dist/insights/components/shared/DirectDeposit/DirectDepositSubHeader.es.js.map +1 -1
  377. package/dist/insights/components/shared/DirectDeposit/FullFeedBodyHeader.es.js.map +1 -1
  378. package/dist/insights/components/shared/DirectDeposit/LeftBox.es.js.map +1 -1
  379. package/dist/insights/components/shared/DirectDeposit/MiniBodyHeader.es.js.map +1 -1
  380. package/dist/insights/components/shared/DirectDeposit/RightBox.es.js.map +1 -1
  381. package/dist/insights/components/shared/DiscoveredAccountsConnect.es.js.map +1 -1
  382. package/dist/insights/components/shared/DrillDownCalculation/BalanceStepper.es.js.map +1 -1
  383. package/dist/insights/components/shared/DrillDownCalculation/DrillDownCalculation.es.js.map +1 -1
  384. package/dist/insights/components/shared/ErrorCard/ErrorCard.es.js.map +1 -1
  385. package/dist/insights/components/shared/GenericFeedback/FeedbackButtons.es.js.map +1 -1
  386. package/dist/insights/components/shared/GenericFeedback/FeedbackDescription.es.js.map +1 -1
  387. package/dist/insights/components/shared/GenericFeedback/FeedbackHeader.es.js.map +1 -1
  388. package/dist/insights/components/shared/GenericFeedback/FeedbackOptions.es.js.map +1 -1
  389. package/dist/insights/components/shared/GenericFeedback/FeedbackText.es.js.map +1 -1
  390. package/dist/insights/components/shared/GoalProgress.es.js.map +1 -1
  391. package/dist/insights/components/shared/GradientBox.es.js.map +1 -1
  392. package/dist/insights/components/shared/InsightsCard/BeatCard.es.js.map +1 -1
  393. package/dist/insights/components/shared/InsightsCard/BeatCardMUI.es.js.map +1 -1
  394. package/dist/insights/components/shared/InsightsCard/CardButtonSection.es.js.map +1 -1
  395. package/dist/insights/components/shared/InsightsCard/CardError.es.js.map +1 -1
  396. package/dist/insights/components/shared/InsightsCard/CardFooter.es.js.map +1 -1
  397. package/dist/insights/components/shared/InsightsCard/CardLoading.es.js.map +1 -1
  398. package/dist/insights/components/shared/InsightsCard/ClientConfigurableCta.es.js.map +1 -1
  399. package/dist/insights/components/shared/InsightsCard/ContentAndDescription.es.js.map +1 -1
  400. package/dist/insights/components/shared/InsightsCard/ContentAndDescriptionMUI.es.js.map +1 -1
  401. package/dist/insights/components/shared/InsightsCard/Description.es.js.map +1 -1
  402. package/dist/insights/components/shared/InsightsCard/DescriptionMUI.es.js.map +1 -1
  403. package/dist/insights/components/shared/InsightsCard/EmbeddedCard.es.js.map +1 -1
  404. package/dist/insights/components/shared/InsightsCard/FeedbackCard.es.js +4 -4
  405. package/dist/insights/components/shared/InsightsCard/FeedbackCard.es.js.map +1 -1
  406. package/dist/insights/components/shared/InsightsCard/InsightButton.es.js.map +1 -1
  407. package/dist/insights/components/shared/MenuAction.es.js +4 -4
  408. package/dist/insights/components/shared/MenuAction.es.js.map +1 -1
  409. package/dist/insights/components/shared/MiniInsightCard.es.js.map +1 -1
  410. package/dist/insights/components/shared/P2P/P2PMultipleCategorization.es.js +23 -23
  411. package/dist/insights/components/shared/P2P/P2PMultipleCategorization.es.js.map +1 -1
  412. package/dist/insights/components/shared/P2PCategorizationSingleAccount/P2PCategorizationSingleAccount.es.js +24 -24
  413. package/dist/insights/components/shared/P2PCategorizationSingleAccount/P2PCategorizationSingleAccount.es.js.map +1 -1
  414. package/dist/insights/components/shared/ProgressBar.es.js.map +1 -1
  415. package/dist/insights/components/shared/SaveAnExtra100/SaveAnExtra100.es.js.map +1 -1
  416. package/dist/insights/components/shared/SaveEnoughToLiveOnBottomSection.es.js.map +1 -1
  417. package/dist/insights/components/shared/StatusIndicator.es.js.map +1 -1
  418. package/dist/insights/components/shared/ThemedSVGImage.es.js.map +1 -1
  419. package/dist/insights/components/shared/TransactionCard.es.js.map +1 -1
  420. package/dist/insights/components/shared/ZeroState/LinedCardZeroState.es.js.map +1 -1
  421. package/dist/investments/InvestmentsWidget.es.js.map +1 -1
  422. package/dist/investments/components/Allocation.es.js.map +1 -1
  423. package/dist/investments/components/Analysis.es.js.map +1 -1
  424. package/dist/investments/components/AnalysisDetails.es.js.map +1 -1
  425. package/dist/investments/components/EmptyStateFooterComponent.es.js.map +1 -1
  426. package/dist/investments/components/HeaderCell.es.js.map +1 -1
  427. package/dist/investments/components/HoldingDrawer.es.js.map +1 -1
  428. package/dist/investments/components/HoldingTable.es.js +167 -164
  429. package/dist/investments/components/HoldingTable.es.js.map +1 -1
  430. package/dist/investments/components/InfoToolTip.es.js.map +1 -1
  431. package/dist/investments/components/Overview.es.js.map +1 -1
  432. package/dist/investments/components/TabTitle.es.js.map +1 -1
  433. package/dist/investments/components/allocation/InvestementAllocationList.es.js.map +1 -1
  434. package/dist/investments/components/allocation/InvestmentsAllocationChart.es.js.map +1 -1
  435. package/dist/merchants/components/MerchantLookup.es.js.map +1 -1
  436. package/dist/microinsights/InsightsMicroWidget.es.js.map +1 -1
  437. package/dist/microinsights/MicroCardTemplate.es.js.map +1 -1
  438. package/dist/microinsights/Spinner.es.js.map +1 -1
  439. package/dist/microinsights/beaticons/BeatCategoryIcon.es.js +8 -8
  440. package/dist/microinsights/beaticons/BeatCategoryIcon.es.js.map +1 -1
  441. package/dist/microinsights/beaticons/BeatMaterialIcon.es.js.map +1 -1
  442. package/dist/microinsights/beaticons/ChartFilledIcon.es.js.map +1 -1
  443. package/dist/microinsights/beaticons/ZeroStateIcon.es.js.map +1 -1
  444. package/dist/microinsights/cards/ViewMoreMicroCard.d.ts +1 -0
  445. package/dist/microinsights/cards/ViewMoreMicroCard.es.js.map +1 -1
  446. package/dist/microinsights/carousel/BeatList.es.js +17 -17
  447. package/dist/microinsights/carousel/BeatList.es.js.map +1 -1
  448. package/dist/microinsights/carousel/CarouselControls.es.js.map +1 -1
  449. package/dist/microinsights/carousel/CarouselHeader.es.js.map +1 -1
  450. package/dist/microinsights/carousel/MicroBeatCarousel.es.js.map +1 -1
  451. package/dist/microinsights/constants/Analytics.es.js.map +1 -1
  452. package/dist/networth/NetWorthMicroWidget.es.js.map +1 -1
  453. package/dist/networth/NetWorthWidget.es.js.map +1 -1
  454. package/dist/networth/components/AssetsLiabilitiesDetail.es.js +1 -1
  455. package/dist/networth/components/AssetsLiabilitiesDetail.es.js.map +1 -1
  456. package/dist/networth/components/GainsLossesDetail.es.js.map +1 -1
  457. package/dist/networth/components/NetWorthChange.es.js.map +1 -1
  458. package/dist/networth/components/NetWorthChart.es.js.map +1 -1
  459. package/dist/networth/components/NetWorthList.es.js.map +1 -1
  460. package/dist/networth/components/NetWorthListItem.es.js.map +1 -1
  461. package/dist/networth/components/NetWorthSummary.es.js.map +1 -1
  462. package/dist/networth/components/micro/NetworthData.es.js.map +1 -1
  463. package/dist/networth/components/micro/ZeroState.es.js.map +1 -1
  464. package/dist/notifications/components/DateRow.es.js.map +1 -1
  465. package/dist/notifications/components/NotificationBadge.es.js.map +1 -1
  466. package/dist/notifications/components/NotificationCard.es.js.map +1 -1
  467. package/dist/notifications/components/NotificationDrawer.es.js.map +1 -1
  468. package/dist/notifications/components/NotificationList.es.js +33 -30
  469. package/dist/notifications/components/NotificationList.es.js.map +1 -1
  470. package/dist/notifications/components/NotificationsEmptyState.es.js.map +1 -1
  471. package/dist/recurringtransactions/RecurringTransactionsMicroWidget.es.js.map +1 -1
  472. package/dist/recurringtransactions/RecurringTransactionsMiniWidget.es.js.map +1 -1
  473. package/dist/recurringtransactions/RecurringTransactionsWidget.es.js.map +1 -1
  474. package/dist/recurringtransactions/ZeroStateMicroWidget.es.js.map +1 -1
  475. package/dist/recurringtransactions/components/MicroWidgetContent.es.js.map +1 -1
  476. package/dist/recurringtransactions/components/MiniWidgetContent.es.js.map +1 -1
  477. package/dist/recurringtransactions/components/PaymentSchedule.es.js.map +1 -1
  478. package/dist/recurringtransactions/components/RecurrenceBadges.es.js.map +1 -1
  479. package/dist/recurringtransactions/components/RecurrenceList.es.js.map +1 -1
  480. package/dist/recurringtransactions/components/RecurrenceRow.es.js.map +1 -1
  481. package/dist/recurringtransactions/components/RecurringSettingsDrawer.es.js.map +1 -1
  482. package/dist/recurringtransactions/components/RecurringStatus.es.js.map +1 -1
  483. package/dist/recurringtransactions/components/RecurringTransactionDetails.es.js.map +1 -1
  484. package/dist/recurringtransactions/components/RecurringTransactionDetailsDrawer.es.js.map +1 -1
  485. package/dist/recurringtransactions/components/RecurringTransactionList.es.js.map +1 -1
  486. package/dist/recurringtransactions/components/RecurringTransactions.es.js.map +1 -1
  487. package/dist/recurringtransactions/components/UpcomingRecurrenceCard.es.js.map +1 -1
  488. package/dist/recurringtransactions/components/actions/LinkTransactionDrawer.es.js.map +1 -1
  489. package/dist/recurringtransactions/components/actions/MarkAsPaidDialog.es.js.map +1 -1
  490. package/dist/recurringtransactions/components/actions/MarkAsUnpaidDialog.es.js.map +1 -1
  491. package/dist/recurringtransactions/components/actions/PaymentScheduleAction.es.js.map +1 -1
  492. package/dist/recurringtransactions/components/micro/MerchantLogosRow.es.js.map +1 -1
  493. package/dist/recurringtransactions/components/micro/OverlappingMerchantLogos.es.js.map +1 -1
  494. package/dist/recurringtransactions/components/micro/RecurrenceLegend.es.js.map +1 -1
  495. package/dist/recurringtransactions/components/recurrencecalendar/Legend.es.js.map +1 -1
  496. package/dist/recurringtransactions/components/recurrencecalendar/RecurrenceCalendar.es.js.map +1 -1
  497. package/dist/recurringtransactions/components/recurrencecalendar/RecurrenceDay.es.js.map +1 -1
  498. package/dist/recurringtransactions/components/shared/RecurringSettings.es.js.map +1 -1
  499. package/dist/recurringtransactions/components/shared/recurringsettings/AddRecurringTransaction.es.js.map +1 -1
  500. package/dist/recurringtransactions/components/shared/recurringsettings/AddRecurringTransactionDetails.es.js.map +1 -1
  501. package/dist/recurringtransactions/components/shared/recurringsettings/ManageExpenses.es.js.map +1 -1
  502. package/dist/recurringtransactions/components/shared/recurringsettings/ManageIncome.es.js.map +1 -1
  503. package/dist/recurringtransactions/components/shared/recurringsettings/RecurringRow.es.js.map +1 -1
  504. package/dist/recurringtransactions/components/shared/recurringsettings/RecurringSettingsZeroState.es.js.map +1 -1
  505. package/dist/recurringtransactions/components/shared/recurringsettings/SelectTransaction.es.js.map +1 -1
  506. package/dist/settings/NotificationSettingsWidget.es.js.map +1 -1
  507. package/dist/settings/SettingsWidget.es.js.map +1 -1
  508. package/dist/settings/TransactionRulesWidget.es.js.map +1 -1
  509. package/dist/settings/components/SettingsWidgetContents.es.js.map +1 -1
  510. package/dist/settings/components/devices/DeviceDialog.es.js.map +1 -1
  511. package/dist/settings/components/devices/DeviceList.es.js.map +1 -1
  512. package/dist/settings/components/devices/DeviceTab.es.js.map +1 -1
  513. package/dist/settings/components/devices/DeviceTable.es.js +82 -82
  514. package/dist/settings/components/devices/DeviceTable.es.js.map +1 -1
  515. package/dist/settings/components/notifications/AccountNotificationProfile.es.js.map +1 -1
  516. package/dist/settings/components/notifications/AccountNotificationProfiles.es.js.map +1 -1
  517. package/dist/settings/components/notifications/AccountProfileListItem.es.js.map +1 -1
  518. package/dist/settings/components/notifications/DeliveryMethods.es.js.map +1 -1
  519. package/dist/settings/components/notifications/NotificationProfile.es.js.map +1 -1
  520. package/dist/settings/components/notifications/NotificationSettings.es.js.map +1 -1
  521. package/dist/settings/components/notifications/PersonalDetails.es.js.map +1 -1
  522. package/dist/settings/components/profile/ProfileTab.es.js.map +1 -1
  523. package/dist/settings/components/profile/actions/VerifyEmailAction.es.js.map +1 -1
  524. package/dist/settings/components/profile/actions/VerifyPhoneAction.es.js.map +1 -1
  525. package/dist/settings/components/profile/actions/VerifyTokenAction.es.js.map +1 -1
  526. package/dist/settings/components/transactionrules/TransactionRulesTab.es.js.map +1 -1
  527. package/dist/settings/components/transactionrules/actions/DeleteRuleAction.es.js.map +1 -1
  528. package/dist/settings/components/transactionrules/actions/EditPayeeAction.es.js.map +1 -1
  529. package/dist/settings/components/transactionrules/components/EditRuleDetails.es.js.map +1 -1
  530. package/dist/settings/components/transactionrules/components/RuleListItem.es.js +24 -21
  531. package/dist/settings/components/transactionrules/components/RuleListItem.es.js.map +1 -1
  532. package/dist/spending/SpendingMiniWidget.es.js.map +1 -1
  533. package/dist/spending/SpendingWidget.es.js +48 -39
  534. package/dist/spending/SpendingWidget.es.js.map +1 -1
  535. package/dist/spending/components/MiniSpendingChart.es.js.map +1 -1
  536. package/dist/spending/components/Spending.es.js.map +1 -1
  537. package/dist/spending/components/SpendingChart.es.js.map +1 -1
  538. package/dist/spending/components/SpendingDonut.es.js.map +1 -1
  539. package/dist/spending/components/SpendingLegend.es.js.map +1 -1
  540. package/dist/spending/components/SpendingList.es.js.map +1 -1
  541. package/dist/spending/components/SpendingTabLabel.es.js.map +1 -1
  542. package/dist/transactions/TransactionWidget.es.js.map +1 -1
  543. package/dist/transactions/components/shared/TransactionDetails.es.js.map +1 -1
  544. package/dist/transactions/components/shared/TransactionList.es.js.map +1 -1
  545. package/dist/transactions/components/shared/TransactionTable.es.js.map +1 -1
  546. package/dist/transactions/components/shared/transactiondetails/Description.es.js.map +1 -1
  547. package/dist/transactions/components/shared/transactiondetails/FlagTransaction.es.js.map +1 -1
  548. package/dist/transactions/components/shared/transactiondetails/ManualTransactionDetails.es.js.map +1 -1
  549. package/dist/transactions/components/shared/transactiondetails/TransactionAmountHeader.es.js.map +1 -1
  550. package/dist/transactions/components/shared/transactiondetails/TransactionDetailsView.es.js.map +1 -1
  551. package/dist/transactions/components/shared/transactiondetails/actions/AddMerchantBudgetAction.es.js +7 -7
  552. package/dist/transactions/components/shared/transactiondetails/actions/AddMerchantBudgetAction.es.js.map +1 -1
  553. package/dist/transactions/components/shared/transactiondetails/actions/CategoryAction.es.js +29 -29
  554. package/dist/transactions/components/shared/transactiondetails/actions/CategoryAction.es.js.map +1 -1
  555. package/dist/transactions/components/shared/transactiondetails/actions/DateAction.es.js +36 -36
  556. package/dist/transactions/components/shared/transactiondetails/actions/DateAction.es.js.map +1 -1
  557. package/dist/transactions/components/shared/transactiondetails/actions/DeleteAction.es.js +7 -7
  558. package/dist/transactions/components/shared/transactiondetails/actions/DeleteAction.es.js.map +1 -1
  559. package/dist/transactions/components/shared/transactiondetails/actions/DeleteLogoAction.es.js +7 -7
  560. package/dist/transactions/components/shared/transactiondetails/actions/DeleteLogoAction.es.js.map +1 -1
  561. package/dist/transactions/components/shared/transactiondetails/actions/ExcludeAction.es.js +7 -7
  562. package/dist/transactions/components/shared/transactiondetails/actions/ExcludeAction.es.js.map +1 -1
  563. package/dist/transactions/components/shared/transactiondetails/actions/MemoAction.es.js +24 -24
  564. package/dist/transactions/components/shared/transactiondetails/actions/MemoAction.es.js.map +1 -1
  565. package/dist/transactions/components/shared/transactiondetails/actions/SplitAction.es.js +40 -40
  566. package/dist/transactions/components/shared/transactiondetails/actions/SplitAction.es.js.map +1 -1
  567. package/dist/transactions/components/shared/transactiondetails/actions/TagsAction.es.js +34 -34
  568. package/dist/transactions/components/shared/transactiondetails/actions/TagsAction.es.js.map +1 -1
  569. package/dist/transactions/components/shared/transactionlist/TransactionRow.es.js.map +1 -1
  570. package/dist/transactions/components/shared/transactionlist/ZeroState.es.js.map +1 -1
  571. package/dist/transactions/components/shared/transactiontable/cells/AccountCell.es.js.map +1 -1
  572. package/dist/transactions/components/shared/transactiontable/cells/AmountCell.es.js.map +1 -1
  573. package/dist/transactions/components/shared/transactiontable/cells/CategoryCell.es.js.map +1 -1
  574. package/dist/transactions/components/shared/transactiontable/cells/DateCell.es.js.map +1 -1
  575. package/dist/transactions/components/shared/transactiontable/cells/FlagCell.es.js.map +1 -1
  576. package/dist/transactions/components/shared/transactiontable/cells/HeaderCell.es.js.map +1 -1
  577. package/dist/transactions/components/shared/transactiontable/cells/PayeeCell.es.js.map +1 -1
  578. package/dist/transactions/components/splitmanager/SplitManager.es.js.map +1 -1
  579. package/dist/transactions/components/splitmanager/SplitRow.es.js.map +1 -1
  580. package/dist/transactions/components/tagmanager/Header.es.js.map +1 -1
  581. package/dist/transactions/components/tagmanager/SearchBox.es.js.map +1 -1
  582. package/dist/transactions/components/tagmanager/TagManager.es.js.map +1 -1
  583. package/dist/transactions/components/tagmanager/TagRow.es.js +4 -4
  584. package/dist/transactions/components/tagmanager/TagRow.es.js.map +1 -1
  585. package/dist/transactions/components/transactionwidget/AddAccountModal.es.js.map +1 -1
  586. package/dist/transactions/components/transactionwidget/actions/EditCategoryAction.es.js.map +1 -1
  587. package/dist/transactions/components/transactionwidget/actions/ExportCsvAction.es.js.map +1 -1
  588. package/dist/transactions/utils/Transactions.es.js +20 -12
  589. package/dist/transactions/utils/Transactions.es.js.map +1 -1
  590. package/dist/trends/TrendsFullWidget.es.js +47 -47
  591. package/dist/trends/TrendsFullWidget.es.js.map +1 -1
  592. package/dist/trends/TrendsMicroWidget.es.js.map +1 -1
  593. package/dist/trends/TrendsMiniWidget.es.js.map +1 -1
  594. package/dist/trends/TrendsWidget.es.js +88 -89
  595. package/dist/trends/TrendsWidget.es.js.map +1 -1
  596. package/dist/trends/ZeroStateMicroWidget.es.js.map +1 -1
  597. package/dist/trends/components/CategoriesList.es.js.map +1 -1
  598. package/dist/trends/components/CategoryDetailChart.es.js.map +1 -1
  599. package/dist/trends/components/CategoryDetails.es.js.map +1 -1
  600. package/dist/trends/components/DateRangeText.es.js.map +1 -1
  601. package/dist/trends/components/TrendsChart.es.js.map +1 -1
  602. package/dist/trends/components/TrendsDrawer.es.js.map +1 -1
  603. package/dist/trends/components/TrendsInsights.es.js +21 -21
  604. package/dist/trends/components/TrendsInsights.es.js.map +1 -1
  605. package/dist/trends/components/TrendsMicroSpendingIncomeBox.es.js.map +1 -1
  606. package/dist/trends/components/TrendsTableContainer.es.js.map +1 -1
  607. package/dist/trends/components/TrendsViewToggle.es.js.map +1 -1
  608. package/dist/trends/components/trendstable/AccessibleSortIcon.es.js.map +1 -1
  609. package/dist/trends/components/trendstable/AmountCell.es.js.map +1 -1
  610. package/dist/trends/components/trendstable/CategoryCell.es.js.map +1 -1
  611. package/dist/trends/components/trendstable/HeaderCell.es.js.map +1 -1
  612. package/package.json +36 -35
@@ -1 +1 @@
1
- {"version":3,"file":"DialScoreCard.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/DialScoreCard.tsx"],"sourcesContent":["import Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport type { PieArcProps, PieValueType } from '@mui/x-charts'\nimport { PieChart } from '@mui/x-charts/PieChart'\n\nimport { P } from '@mxenabled/mxui'\nimport { TrendingDown, TrendingUp, ArrowRightAlt } from '@mxenabled/mx-icons'\n\nimport { getMarkerXYCoordinates, radiansToDegrees } from '../../util/finstrongUtils'\n\nimport { CustomPieArc } from './CustomPieArc'\n\nexport interface DialScoreCardProps {\n arcRadius: number\n healthScore: number\n size: 'L' | 'M' | 'SM'\n dialScoreData: PieValueType[]\n minValue?: number\n maxValue?: number\n margin?: { top?: number; right?: number; left?: number; bottom?: number }\n markerColor?: string\n healthScoreStatus: string\n footerCenterContent?: string | number\n footerLeftContent?: number\n footerRightContent?: number\n isFinacialStrengthGraph?: boolean\n}\nexport const DialScoreCard = ({\n arcRadius = 100,\n healthScore,\n size = 'L',\n dialScoreData,\n minValue = 0,\n maxValue = 100,\n margin,\n markerColor,\n healthScoreStatus,\n footerCenterContent,\n footerLeftContent,\n footerRightContent,\n isFinacialStrengthGraph = false,\n}: DialScoreCardProps) => {\n const theme = useTheme()\n const arcStartAngle = -Math.PI / 1.35\n const arcEndAngle = Math.PI / 1.35\n\n //finding the end angle of the filled(colored) arc i.e progressArc\n const totalAngularSpan = arcEndAngle - arcStartAngle\n\n const anglePerUnit = totalAngularSpan / (maxValue - minValue)\n const progressEndAngleOffset = (healthScore - minValue) * anglePerUnit\n const progressEndAngle = arcStartAngle + progressEndAngleOffset + 0.02 // Adding a small offset to avoid overlap with the next arc\n\n const thicknessRatio = size !== 'SM' ? 0.1 : 0.12\n const outterArcRadius = arcRadius\n const innerArcRadius = arcRadius * (1 - thicknessRatio)\n\n const chartDimenesions = outterArcRadius * 2 //width and height of the chart\n const centerX = chartDimenesions / 2\n const centerY = chartDimenesions / 2\n const markerRadius = (innerArcRadius + outterArcRadius) / 2\n const angleOffset =\n healthScore !== 25 && healthScore !== 50 && healthScore !== 75 && healthScore !== 100 ? 0 : 0.12 // Adjust the offset based on health score\n\n const [markerX, markerY] = getMarkerXYCoordinates(markerRadius, progressEndAngle, angleOffset)\n\n const unitsPerSegment = healthScore / 25\n\n const sizeMap = {\n L: { markerSize: 12, healthScoreFontSize: 64 },\n M: { markerSize: 8, healthScoreFontSize: 48 },\n SM: { markerSize: 3, healthScoreFontSize: 14 },\n }\n\n const chartMargin = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...margin,\n }\n const PercentageIcon = footerCenterContent === 0 ? ArrowRightAlt : TrendingDown\n const stroke = size !== 'SM' ? 3 : 1\n const padding = stroke * 4 // enough room for stroke\n const svgSize = sizeMap[size].markerSize * 2 + padding\n\n return (\n <Stack\n sx={{\n width: chartDimenesions,\n height: size === 'SM' ? chartDimenesions - 7 : chartDimenesions,\n position: 'relative',\n alignSelf: 'center',\n overflow: 'visible',\n }}\n >\n <PieChart\n height={size === 'SM' ? chartDimenesions - 7 : chartDimenesions}\n hideLegend={true}\n margin={chartMargin}\n series={[\n {\n data: dialScoreData,\n innerRadius: innerArcRadius,\n outerRadius: outterArcRadius,\n startAngle: Math.round(radiansToDegrees(arcStartAngle)), // Use Math.degrees to convert\n endAngle: Math.round(radiansToDegrees(arcEndAngle)), // Use Math.degrees to convert\n },\n ]}\n skipAnimation={true}\n slots={{\n pieArc: (props: PieArcProps) => (\n <CustomPieArc\n arcColor={props.color}\n arcRadius={arcRadius}\n arcStartAngle={arcStartAngle}\n centerX={centerX}\n centerY={centerY}\n dataIndex={props.dataIndex}\n dialScoreData={dialScoreData}\n innerArcRadius={innerArcRadius}\n isFinacialStrengthGraph={isFinacialStrengthGraph}\n outterArcRadius={outterArcRadius}\n progressEndAngle={progressEndAngle}\n totalAngularSpan={totalAngularSpan}\n unitsPerSegment={unitsPerSegment}\n />\n ),\n }}\n sx={{\n '& path': {\n stroke: 'none',\n },\n }}\n width={chartDimenesions}\n />\n\n {healthScore >= minValue && healthScore <= maxValue && (\n <svg\n height={svgSize}\n style={{\n position: 'absolute',\n left: centerX + markerX - sizeMap[size].markerSize - 5,\n top: centerY + markerY - sizeMap[size].markerSize - 5,\n overflow: 'visible',\n }}\n viewBox={`${centerX + markerX - sizeMap[size].markerSize - 5} ${centerY + markerY - sizeMap[size].markerSize - 5} ${svgSize} ${svgSize}`}\n width={svgSize}\n >\n <circle\n cx={centerX + markerX}\n cy={centerY + markerY}\n fill={theme.palette.common.white}\n r={sizeMap[size].markerSize}\n stroke={isFinacialStrengthGraph ? 'url(#arcGradient)' : markerColor}\n strokeWidth={stroke}\n />\n </svg>\n )}\n <Box\n sx={{\n position: 'absolute',\n top: `${centerY}px`,\n left: `${centerX}px`,\n transform: 'translate(-50%, -50%)',\n textAlign: 'center',\n }}\n >\n <Stack\n spacing={1}\n sx={{ alignItems: 'center', justifyContent: 'center', gap: size !== 'M' ? 10 : 3 }}\n >\n <P\n sx={{\n fontSize: sizeMap[size].healthScoreFontSize,\n lineHeight: size !== 'SM' ? '48px' : '100%',\n }}\n variant=\"h1\"\n >\n {healthScore}\n </P>\n {size !== 'SM' && (\n <P sx={{ fontWeight: 600 }} variant={size === 'L' ? 'body1' : 'body2'}>\n {healthScoreStatus}\n </P>\n )}\n </Stack>\n </Box>\n {footerCenterContent !== undefined && (\n <Box\n sx={{\n position: 'absolute',\n top: `${centerY * 2 * 0.83}px`,\n left: `${centerX}px`,\n transform: 'translate(-50%, -50%)',\n textAlign: 'center',\n }}\n >\n {typeof footerCenterContent === 'number' ? (\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n mt: 24,\n }}\n >\n {footerCenterContent > 0 ? (\n <TrendingUp size={16} sx={{ color: 'success.main' }} />\n ) : (\n <PercentageIcon size={16} sx={{ color: 'text.secondary' }} />\n )}\n <P\n sx={{\n fontWeight: 600,\n color: footerCenterContent > 0 ? 'success.main' : 'text.secondary',\n }}\n variant=\"body1\"\n >\n {Math.abs(footerCenterContent)}\n </P>\n </Stack>\n ) : (\n <P sx={{ color: 'text.secondary' }} variant={'subtitle2'}>\n {footerCenterContent}\n </P>\n )}\n </Box>\n )}\n {/* Left Footer Content */}\n {footerLeftContent !== undefined && (\n <Box\n sx={{\n position: 'absolute',\n top: `${centerY * 2 * 0.83}px`,\n left: `${centerX - centerX / 2}px`, // shift left from center\n transform: 'translate(-50%, -50%)',\n textAlign: 'left',\n }}\n >\n <P variant=\"body1\">{footerLeftContent}</P>\n </Box>\n )}\n\n {/* Right Footer Content */}\n {footerRightContent !== undefined && (\n <Box\n sx={{\n position: 'absolute',\n top: `${centerY * 2 * 0.83}px`,\n left: `${centerX + centerX / 2}px`,\n transform: 'translate(-50%, -50%)',\n textAlign: 'right',\n }}\n >\n <P variant=\"body1\">{footerRightContent}</P>\n </Box>\n )}\n </Stack>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DialScoreCard.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/DialScoreCard.tsx"],"sourcesContent":["import Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport type { PieArcProps, PieValueType } from '@mui/x-charts'\nimport { PieChart } from '@mui/x-charts/PieChart'\n\nimport { P } from '@mxenabled/mxui'\nimport { TrendingDown, TrendingUp, ArrowRightAlt } from '@mxenabled/mx-icons'\n\nimport { getMarkerXYCoordinates, radiansToDegrees } from '../../util/finstrongUtils'\n\nimport { CustomPieArc } from './CustomPieArc'\n\nexport interface DialScoreCardProps {\n arcRadius: number\n healthScore: number\n size: 'L' | 'M' | 'SM'\n dialScoreData: PieValueType[]\n minValue?: number\n maxValue?: number\n margin?: { top?: number; right?: number; left?: number; bottom?: number }\n markerColor?: string\n healthScoreStatus: string\n footerCenterContent?: string | number\n footerLeftContent?: number\n footerRightContent?: number\n isFinacialStrengthGraph?: boolean\n}\nexport const DialScoreCard = ({\n arcRadius = 100,\n healthScore,\n size = 'L',\n dialScoreData,\n minValue = 0,\n maxValue = 100,\n margin,\n markerColor,\n healthScoreStatus,\n footerCenterContent,\n footerLeftContent,\n footerRightContent,\n isFinacialStrengthGraph = false,\n}: DialScoreCardProps) => {\n const theme = useTheme()\n const arcStartAngle = -Math.PI / 1.35\n const arcEndAngle = Math.PI / 1.35\n\n //finding the end angle of the filled(colored) arc i.e progressArc\n const totalAngularSpan = arcEndAngle - arcStartAngle\n\n const anglePerUnit = totalAngularSpan / (maxValue - minValue)\n const progressEndAngleOffset = (healthScore - minValue) * anglePerUnit\n const progressEndAngle = arcStartAngle + progressEndAngleOffset + 0.02 // Adding a small offset to avoid overlap with the next arc\n\n const thicknessRatio = size !== 'SM' ? 0.1 : 0.12\n const outterArcRadius = arcRadius\n const innerArcRadius = arcRadius * (1 - thicknessRatio)\n\n const chartDimenesions = outterArcRadius * 2 //width and height of the chart\n const centerX = chartDimenesions / 2\n const centerY = chartDimenesions / 2\n const markerRadius = (innerArcRadius + outterArcRadius) / 2\n const angleOffset =\n healthScore !== 25 && healthScore !== 50 && healthScore !== 75 && healthScore !== 100 ? 0 : 0.12 // Adjust the offset based on health score\n\n const [markerX, markerY] = getMarkerXYCoordinates(markerRadius, progressEndAngle, angleOffset)\n\n const unitsPerSegment = healthScore / 25\n\n const sizeMap = {\n L: { markerSize: 12, healthScoreFontSize: 64 },\n M: { markerSize: 8, healthScoreFontSize: 48 },\n SM: { markerSize: 3, healthScoreFontSize: 14 },\n }\n\n const chartMargin = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...margin,\n }\n const PercentageIcon = footerCenterContent === 0 ? ArrowRightAlt : TrendingDown\n const stroke = size !== 'SM' ? 3 : 1\n const padding = stroke * 4 // enough room for stroke\n const svgSize = sizeMap[size].markerSize * 2 + padding\n\n return (\n <Stack\n sx={{\n width: chartDimenesions,\n height: size === 'SM' ? chartDimenesions - 7 : chartDimenesions,\n position: 'relative',\n alignSelf: 'center',\n overflow: 'visible',\n }}\n >\n <PieChart\n height={size === 'SM' ? chartDimenesions - 7 : chartDimenesions}\n hideLegend={true}\n margin={chartMargin}\n series={[\n {\n data: dialScoreData,\n innerRadius: innerArcRadius,\n outerRadius: outterArcRadius,\n startAngle: Math.round(radiansToDegrees(arcStartAngle)), // Use Math.degrees to convert\n endAngle: Math.round(radiansToDegrees(arcEndAngle)), // Use Math.degrees to convert\n },\n ]}\n skipAnimation={true}\n slots={{\n pieArc: (props: PieArcProps) => (\n <CustomPieArc\n arcColor={props.color}\n arcRadius={arcRadius}\n arcStartAngle={arcStartAngle}\n centerX={centerX}\n centerY={centerY}\n dataIndex={props.dataIndex}\n dialScoreData={dialScoreData}\n innerArcRadius={innerArcRadius}\n isFinacialStrengthGraph={isFinacialStrengthGraph}\n outterArcRadius={outterArcRadius}\n progressEndAngle={progressEndAngle}\n totalAngularSpan={totalAngularSpan}\n unitsPerSegment={unitsPerSegment}\n />\n ),\n }}\n sx={{\n '& path': {\n stroke: 'none',\n },\n }}\n width={chartDimenesions}\n />\n\n {healthScore >= minValue && healthScore <= maxValue && (\n <svg\n height={svgSize}\n style={{\n position: 'absolute',\n left: centerX + markerX - sizeMap[size].markerSize - 5,\n top: centerY + markerY - sizeMap[size].markerSize - 5,\n overflow: 'visible',\n }}\n viewBox={`${centerX + markerX - sizeMap[size].markerSize - 5} ${centerY + markerY - sizeMap[size].markerSize - 5} ${svgSize} ${svgSize}`}\n width={svgSize}\n >\n <circle\n cx={centerX + markerX}\n cy={centerY + markerY}\n fill={theme.palette.common.white}\n r={sizeMap[size].markerSize}\n stroke={isFinacialStrengthGraph ? 'url(#arcGradient)' : markerColor}\n strokeWidth={stroke}\n />\n </svg>\n )}\n <Box\n sx={{\n position: 'absolute',\n top: `${centerY}px`,\n left: `${centerX}px`,\n transform: 'translate(-50%, -50%)',\n textAlign: 'center',\n }}\n >\n <Stack\n spacing={1}\n sx={{ alignItems: 'center', justifyContent: 'center', gap: size !== 'M' ? 10 : 3 }}\n >\n <P\n sx={{\n fontSize: sizeMap[size].healthScoreFontSize,\n lineHeight: size !== 'SM' ? '48px' : '100%',\n }}\n variant=\"h1\"\n >\n {healthScore}\n </P>\n {size !== 'SM' && (\n <P sx={{ fontWeight: 600 }} variant={size === 'L' ? 'body1' : 'body2'}>\n {healthScoreStatus}\n </P>\n )}\n </Stack>\n </Box>\n {footerCenterContent !== undefined && (\n <Box\n sx={{\n position: 'absolute',\n top: `${centerY * 2 * 0.83}px`,\n left: `${centerX}px`,\n transform: 'translate(-50%, -50%)',\n textAlign: 'center',\n }}\n >\n {typeof footerCenterContent === 'number' ? (\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n mt: 24,\n }}\n >\n {footerCenterContent > 0 ? (\n <TrendingUp size={16} sx={{ color: 'success.main' }} />\n ) : (\n <PercentageIcon size={16} sx={{ color: 'text.secondary' }} />\n )}\n <P\n sx={{\n fontWeight: 600,\n color: footerCenterContent > 0 ? 'success.main' : 'text.secondary',\n }}\n variant=\"body1\"\n >\n {Math.abs(footerCenterContent)}\n </P>\n </Stack>\n ) : (\n <P sx={{ color: 'text.secondary' }} variant={'subtitle2'}>\n {footerCenterContent}\n </P>\n )}\n </Box>\n )}\n {/* Left Footer Content */}\n {footerLeftContent !== undefined && (\n <Box\n sx={{\n position: 'absolute',\n top: `${centerY * 2 * 0.83}px`,\n left: `${centerX - centerX / 2}px`, // shift left from center\n transform: 'translate(-50%, -50%)',\n textAlign: 'left',\n }}\n >\n <P variant=\"body1\">{footerLeftContent}</P>\n </Box>\n )}\n\n {/* Right Footer Content */}\n {footerRightContent !== undefined && (\n <Box\n sx={{\n position: 'absolute',\n top: `${centerY * 2 * 0.83}px`,\n left: `${centerX + centerX / 2}px`,\n transform: 'translate(-50%, -50%)',\n textAlign: 'right',\n }}\n >\n <P variant=\"body1\">{footerRightContent}</P>\n </Box>\n )}\n </Stack>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleBarChart.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/DoubleBarChart.tsx"],"sourcesContent":["import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\nimport useMediaQuery from '@mui/material/useMediaQuery'\nimport { useTheme } from '@mui/material/styles'\n\nimport { BarPlot } from '@mui/x-charts/BarChart'\nimport { ChartContainer as ResponsiveChartContainer } from '@mui/x-charts/ChartContainer'\nimport { ChartsXAxis } from '@mui/x-charts/ChartsXAxis'\nimport { ChartsYAxis } from '@mui/x-charts/ChartsYAxis'\nimport type { DatasetType } from '@mui/x-charts/internals'\n\nimport { H3, Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { getMonthName } from '../../util/finstrongUtils'\n\nimport { CustomDoubleBarPlot } from './CustomDoubleBarPlot'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\nexport interface FinancialData {\n year: number\n month: number\n standard_spend: number\n income: number\n debt_spend: number\n}\n\nexport interface ChartDataPoint {\n label: string\n main: number\n comparison: number\n formattedMain: string\n formattedComparison: string\n [key: string]: string | number\n}\n\nexport interface DoubleBarChartProps {\n chartFor: 'spending_vs_income' | 'debt_payment_vs_income'\n data: FinancialData[]\n title: string\n buttonLabel?: string\n legendLabelMain: string\n legendLabelComparison: string\n onClick?: () => void\n totalMain?: string\n totalComparison?: string\n}\n\n/**\n * Formats a number as currency.\n * - Rounds small values.\n * - Abbreviates large values (e.g., 1.2k, 3.4M) above the threshold.\n *\n * @param amount - The number to format.\n * @param threshold - Value above which abbreviation is applied (default: 1000).\n * @returns Formatted currency string.\n */\nconst formatCurrencyCompact = (amount: number, threshold: number = 1000): string => {\n const format = Math.abs(amount) >= threshold ? '0.[0]a' : '0'\n return formatCurrency(amount, format)\n}\n\nconst DoubleBarChart: React.FC<DoubleBarChartProps> = ({\n chartFor,\n data,\n title,\n buttonLabel,\n onClick,\n legendLabelMain,\n legendLabelComparison,\n totalComparison,\n totalMain,\n}) => {\n const theme = useTheme()\n const isSmallMobile = useMediaQuery(theme.breakpoints.down('xs'))\n\n // Transform financial data to chart format\n const chartData: ChartDataPoint[] = React.useMemo(\n () =>\n data\n .sort((a, b) => {\n // Sort by year first, then by month\n if (a.year !== b.year) {\n return a.year - b.year\n }\n return a.month - b.month\n })\n .map((item) => {\n const monthName = getMonthName(item.month)\n\n const chartConfig = {\n spending_vs_income: {\n main: item.standard_spend,\n comparison: item.income,\n formattedMain: formatCurrencyCompact(item.standard_spend),\n formattedComparison: formatCurrencyCompact(item.income),\n },\n debt_payment_vs_income: {\n main: item.income,\n comparison: item.debt_spend,\n formattedMain: formatCurrencyCompact(item.income),\n formattedComparison: formatCurrencyCompact(item.debt_spend),\n },\n }\n\n return {\n label: monthName,\n ...chartConfig[chartFor],\n }\n }),\n [data, chartFor],\n )\n\n const xAxis = {\n dataKey: 'label',\n scaleType: 'band' as const,\n }\n\n // Dynamic Y-axis scaling\n const maxValue = Math.max(...chartData.map((item) => Math.max(item.main, item.comparison)))\n const minValue = Math.min(...chartData.map((item) => Math.min(item.main, item.comparison)))\n\n // If both min and max values are 0, set max to 100\n const yAxisMax =\n minValue === 0 && maxValue === 0 ? 100 : Math.ceil((maxValue * 1.2) / 1000) * 1000\n const tickStep = yAxisMax / 3\n\n const yAxis = {\n scaleType: 'linear' as const,\n min: 0,\n max: yAxisMax,\n tickNumber: 4,\n tickMinStep: tickStep,\n valueFormatter: (value: number) => {\n if (value === 0) return '$0'\n return formatCurrency(value, '0.[0]a')\n },\n }\n\n return (\n <Card>\n <Stack\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n gap: 12,\n justifyContent: 'space-between',\n pb: 8,\n pt: 16,\n px: 16,\n }}\n >\n <H3>{title}</H3>\n {buttonLabel && (\n <Button\n endIcon={<ChevronRight />}\n onClick={onClick}\n size=\"small\"\n sx={{\n pl: 8,\n height: 24,\n }}\n variant=\"text\"\n >\n {buttonLabel}\n </Button>\n )}\n </Stack>\n\n <Stack sx={{ pb: 24, pl: 16, pr: 24 }}>\n {/* Legend */}\n <Stack sx={{ alignItems: 'center', flexDirection: 'row', gap: 24, py: 4 }}>\n <Stack sx={{ gap: 8, alignItems: 'center', flexDirection: 'row' }}>\n <Box\n sx={{\n width: 10,\n height: 10,\n backgroundColor: 'chartMono.chartMono3',\n borderRadius: '2px',\n }}\n />\n <Stack sx={{ alignItems: 'center', flexDirection: 'row' }}>\n <Text variant=\"subtitle2\">{legendLabelMain}&nbsp;</Text>\n {!isSmallMobile && totalMain && (\n <Text sx={{ fontWeight: 700 }} variant=\"subtitle2\">\n {totalMain}\n </Text>\n )}\n </Stack>\n </Stack>\n\n <Stack alignItems=\"center\" direction=\"row\" spacing={8}>\n <Box\n sx={{\n width: 10,\n height: 10,\n backgroundColor: 'chartMono.chartMono5',\n borderRadius: '2px',\n }}\n />\n <Stack sx={{ alignItems: 'center', flexDirection: 'row' }}>\n <Text variant=\"subtitle2\">{legendLabelComparison}&nbsp;</Text>\n {!isSmallMobile && totalComparison && (\n <Text sx={{ fontWeight: 700 }} variant=\"subtitle2\">\n {totalComparison}\n </Text>\n )}\n </Stack>\n </Stack>\n </Stack>\n\n <ResponsiveChartContainer\n colors={[\n `${theme.palette.chartMono.chartMono3}`,\n `${theme.palette.chartMono.chartMono5}`,\n ]}\n dataset={chartData as DatasetType}\n height={240}\n margin={{ top: 14, bottom: 10, right: 2, left: -2 }}\n series={[\n { dataKey: 'main', type: 'bar' as const },\n { dataKey: 'comparison', type: 'bar' as const },\n ]}\n xAxis={[xAxis]}\n yAxis={[yAxis]}\n >\n <BarPlot\n slots={{\n bar: (props) => {\n const { ownerState, ...defaultProps } = props\n return (\n <CustomDoubleBarPlot\n {...defaultProps}\n color={ownerState.color}\n data={chartData as any}\n series={{\n index: ownerState.dataIndex,\n type: Number(ownerState.id.toString().split('-').pop()),\n }}\n style={{\n x: props.x,\n y: props.y,\n width: props.width,\n }}\n />\n )\n },\n }}\n />\n\n <ChartsXAxis\n sx={() => ({\n '.MuiChartsAxis-line': {\n stroke: theme.palette.divider,\n },\n '.MuiChartsAxis-tick': {\n stroke: theme.palette.divider,\n },\n '.MuiChartsAxis-tickLabel': {\n transform: 'translateY(10px)',\n },\n })}\n tickLabelStyle={{\n fontSize: 11,\n fill: 'text.secondary',\n }}\n />\n <ChartsYAxis\n sx={() => ({\n '.MuiChartsAxis-line': {\n stroke: theme.palette.divider,\n },\n '.MuiChartsAxis-tick': {\n stroke: theme.palette.divider,\n },\n '.MuiChartsAxis-tickLabel': {\n transform: 'translateX(-8px)',\n },\n })}\n tickLabelStyle={{\n fontSize: 11,\n fill: 'text.secondary',\n }}\n />\n </ResponsiveChartContainer>\n </Stack>\n </Card>\n )\n}\n\nexport default DoubleBarChart\n"],"mappings":"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"}
1
+ {"version":3,"file":"DoubleBarChart.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/DoubleBarChart.tsx"],"sourcesContent":["import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\nimport useMediaQuery from '@mui/material/useMediaQuery'\nimport { useTheme } from '@mui/material/styles'\n\nimport { BarPlot } from '@mui/x-charts/BarChart'\nimport { ChartContainer as ResponsiveChartContainer } from '@mui/x-charts/ChartContainer'\nimport { ChartsXAxis } from '@mui/x-charts/ChartsXAxis'\nimport { ChartsYAxis } from '@mui/x-charts/ChartsYAxis'\nimport type { DatasetType } from '@mui/x-charts/internals'\n\nimport { H3, Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { getMonthName } from '../../util/finstrongUtils'\n\nimport { CustomDoubleBarPlot } from './CustomDoubleBarPlot'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\nexport interface FinancialData {\n year: number\n month: number\n standard_spend: number\n income: number\n debt_spend: number\n}\n\nexport interface ChartDataPoint {\n label: string\n main: number\n comparison: number\n formattedMain: string\n formattedComparison: string\n [key: string]: string | number\n}\n\nexport interface DoubleBarChartProps {\n chartFor: 'spending_vs_income' | 'debt_payment_vs_income'\n data: FinancialData[]\n title: string\n buttonLabel?: string\n legendLabelMain: string\n legendLabelComparison: string\n onClick?: () => void\n totalMain?: string\n totalComparison?: string\n}\n\n/**\n * Formats a number as currency.\n * - Rounds small values.\n * - Abbreviates large values (e.g., 1.2k, 3.4M) above the threshold.\n *\n * @param amount - The number to format.\n * @param threshold - Value above which abbreviation is applied (default: 1000).\n * @returns Formatted currency string.\n */\nconst formatCurrencyCompact = (amount: number, threshold: number = 1000): string => {\n const format = Math.abs(amount) >= threshold ? '0.[0]a' : '0'\n return formatCurrency(amount, format)\n}\n\nconst DoubleBarChart: React.FC<DoubleBarChartProps> = ({\n chartFor,\n data,\n title,\n buttonLabel,\n onClick,\n legendLabelMain,\n legendLabelComparison,\n totalComparison,\n totalMain,\n}) => {\n const theme = useTheme()\n const isSmallMobile = useMediaQuery(theme.breakpoints.down('xs'))\n\n // Transform financial data to chart format\n const chartData: ChartDataPoint[] = React.useMemo(\n () =>\n data\n .sort((a, b) => {\n // Sort by year first, then by month\n if (a.year !== b.year) {\n return a.year - b.year\n }\n return a.month - b.month\n })\n .map((item) => {\n const monthName = getMonthName(item.month)\n\n const chartConfig = {\n spending_vs_income: {\n main: item.standard_spend,\n comparison: item.income,\n formattedMain: formatCurrencyCompact(item.standard_spend),\n formattedComparison: formatCurrencyCompact(item.income),\n },\n debt_payment_vs_income: {\n main: item.income,\n comparison: item.debt_spend,\n formattedMain: formatCurrencyCompact(item.income),\n formattedComparison: formatCurrencyCompact(item.debt_spend),\n },\n }\n\n return {\n label: monthName,\n ...chartConfig[chartFor],\n }\n }),\n [data, chartFor],\n )\n\n const xAxis = {\n dataKey: 'label',\n scaleType: 'band' as const,\n }\n\n // Dynamic Y-axis scaling\n const maxValue = Math.max(...chartData.map((item) => Math.max(item.main, item.comparison)))\n const minValue = Math.min(...chartData.map((item) => Math.min(item.main, item.comparison)))\n\n // If both min and max values are 0, set max to 100\n const yAxisMax =\n minValue === 0 && maxValue === 0 ? 100 : Math.ceil((maxValue * 1.2) / 1000) * 1000\n const tickStep = yAxisMax / 3\n\n const yAxis = {\n scaleType: 'linear' as const,\n min: 0,\n max: yAxisMax,\n tickNumber: 4,\n tickMinStep: tickStep,\n valueFormatter: (value: number) => {\n if (value === 0) return '$0'\n return formatCurrency(value, '0.[0]a')\n },\n }\n\n return (\n <Card>\n <Stack\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n gap: 12,\n justifyContent: 'space-between',\n pb: 8,\n pt: 16,\n px: 16,\n }}\n >\n <H3>{title}</H3>\n {buttonLabel && (\n <Button\n endIcon={<ChevronRight />}\n onClick={onClick}\n size=\"small\"\n sx={{\n pl: 8,\n height: 24,\n }}\n variant=\"text\"\n >\n {buttonLabel}\n </Button>\n )}\n </Stack>\n\n <Stack sx={{ pb: 24, pl: 16, pr: 24 }}>\n {/* Legend */}\n <Stack sx={{ alignItems: 'center', flexDirection: 'row', gap: 24, py: 4 }}>\n <Stack sx={{ gap: 8, alignItems: 'center', flexDirection: 'row' }}>\n <Box\n sx={{\n width: 10,\n height: 10,\n backgroundColor: 'chartMono.chartMono3',\n borderRadius: '2px',\n }}\n />\n <Stack sx={{ alignItems: 'center', flexDirection: 'row' }}>\n <Text variant=\"subtitle2\">{legendLabelMain}&nbsp;</Text>\n {!isSmallMobile && totalMain && (\n <Text sx={{ fontWeight: 700 }} variant=\"subtitle2\">\n {totalMain}\n </Text>\n )}\n </Stack>\n </Stack>\n\n <Stack alignItems=\"center\" direction=\"row\" spacing={8}>\n <Box\n sx={{\n width: 10,\n height: 10,\n backgroundColor: 'chartMono.chartMono5',\n borderRadius: '2px',\n }}\n />\n <Stack sx={{ alignItems: 'center', flexDirection: 'row' }}>\n <Text variant=\"subtitle2\">{legendLabelComparison}&nbsp;</Text>\n {!isSmallMobile && totalComparison && (\n <Text sx={{ fontWeight: 700 }} variant=\"subtitle2\">\n {totalComparison}\n </Text>\n )}\n </Stack>\n </Stack>\n </Stack>\n\n <ResponsiveChartContainer\n colors={[\n `${theme.palette.chartMono.chartMono3}`,\n `${theme.palette.chartMono.chartMono5}`,\n ]}\n dataset={chartData as DatasetType}\n height={240}\n margin={{ top: 14, bottom: 10, right: 2, left: -2 }}\n series={[\n { dataKey: 'main', type: 'bar' as const },\n { dataKey: 'comparison', type: 'bar' as const },\n ]}\n xAxis={[xAxis]}\n yAxis={[yAxis]}\n >\n <BarPlot\n slots={{\n bar: (props) => {\n const { ownerState, ...defaultProps } = props\n return (\n <CustomDoubleBarPlot\n {...defaultProps}\n color={ownerState.color}\n data={chartData as any}\n series={{\n index: ownerState.dataIndex,\n type: Number(ownerState.id.toString().split('-').pop()),\n }}\n style={{\n x: props.x,\n y: props.y,\n width: props.width,\n }}\n />\n )\n },\n }}\n />\n\n <ChartsXAxis\n sx={() => ({\n '.MuiChartsAxis-line': {\n stroke: theme.palette.divider,\n },\n '.MuiChartsAxis-tick': {\n stroke: theme.palette.divider,\n },\n '.MuiChartsAxis-tickLabel': {\n transform: 'translateY(10px)',\n },\n })}\n tickLabelStyle={{\n fontSize: 11,\n fill: 'text.secondary',\n }}\n />\n <ChartsYAxis\n sx={() => ({\n '.MuiChartsAxis-line': {\n stroke: theme.palette.divider,\n },\n '.MuiChartsAxis-tick': {\n stroke: theme.palette.divider,\n },\n '.MuiChartsAxis-tickLabel': {\n transform: 'translateX(-8px)',\n },\n })}\n tickLabelStyle={{\n fontSize: 11,\n fill: 'text.secondary',\n }}\n />\n </ResponsiveChartContainer>\n </Stack>\n </Card>\n )\n}\n\nexport default DoubleBarChart\n"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import { useFinstrongStore as k, useGlobalCopyStore as w, useUserStore as S } from "../../../common/context/hooks.es.js";
2
- import { useDimensions as C } from "../../../common/hooks/useDimensions.es.js";
3
- import { EmptyState as T } from "../../../common/components/EmptyState.es.js";
4
- import { LineChart as M } from "../../../common/components/charts/LineChart.es.js";
5
- import { getCreditScoreDetails as O, getSeriesGraphData as L } from "../../util/finstrongUtils.es.js";
1
+ import { useFinstrongStore as w, useGlobalCopyStore as S, useUserStore as C } from "../../../common/context/hooks.es.js";
2
+ import { useDimensions as T } from "../../../common/hooks/useDimensions.es.js";
3
+ import { EmptyState as M } from "../../../common/components/EmptyState.es.js";
4
+ import { LineChart as O } from "../../../common/components/charts/LineChart.es.js";
5
+ import { getCreditScoreDetails as L, getSeriesGraphData as z } from "../../util/finstrongUtils.es.js";
6
6
  import "react";
7
- import { observer as z } from "mobx-react-lite";
8
- import A from "@mui/material/Stack";
7
+ import { observer as A } from "mobx-react-lite";
8
+ import D from "@mui/material/Stack";
9
9
  import { P as K } from "@mxenabled/mxui";
10
10
  import { jsx as s, jsxs as R } from "react/jsx-runtime";
11
- import { useTheme as D } from "@mui/material/styles";
12
- import G from "@mui/material/Card";
13
- var X = ({ chartFor: a }) => {
14
- const i = D(), v = i.palette.mode === "dark", { monthlySummaries: c } = k(), { user: u } = S(), { finstrong: t } = w(), [b, { width: d }] = C(), n = {
11
+ import { useTheme as G } from "@mui/material/styles";
12
+ import X from "@mui/material/Card";
13
+ var j = ({ chartFor: a }) => {
14
+ const i = G(), v = i.palette.mode === "dark", { monthlySummaries: c } = w(), { user: u } = C(), { finstrong: t } = S(), [b, { width: d }] = T(), n = {
15
15
  savingsOverTime: {
16
16
  icon: "trending_up",
17
17
  title: t.key_indicators_save.zero_state_title,
@@ -40,7 +40,7 @@ var X = ({ chartFor: a }) => {
40
40
  title: t.credit_over_time_title,
41
41
  valueKey: "credit_score"
42
42
  }
43
- }[a], o = L(c, l.valueKey), _ = c.map((r) => r[l.valueKey]), p = Math.max(..._), f = Math.min(..._), h = () => p >= 1e6 ? {
43
+ }[a], o = z(c, l.valueKey), _ = c.map((r) => r[l.valueKey]), p = Math.max(..._), f = Math.min(..._), h = () => p >= 1e6 ? {
44
44
  formatter: "0.000a",
45
45
  leftMargin: -7
46
46
  } : p >= 1e3 ? {
@@ -52,13 +52,14 @@ var X = ({ chartFor: a }) => {
52
52
  }, { formatter: g, leftMargin: y } = h(), x = l.title, e = a === "creditOverTime";
53
53
  let m;
54
54
  if (e) {
55
- const { color: r } = O(u?.credit_score ?? 0, v, t.credit_score_status);
55
+ const { color: r } = L(u?.credit_score ?? 0, v, t.credit_score_status);
56
56
  m = r;
57
57
  }
58
- return /* @__PURE__ */ s(G, {
58
+ const k = o.some((r) => r.y !== 0);
59
+ return /* @__PURE__ */ s(X, {
59
60
  ref: b,
60
61
  sx: { backgroundColor: "background.paper" },
61
- children: o.some((r) => r.y !== 0) ? /* @__PURE__ */ R(A, {
62
+ children: k ? /* @__PURE__ */ R(D, {
62
63
  gap: 8,
63
64
  sx: { pl: 18 },
64
65
  children: [/* @__PURE__ */ s(K, {
@@ -68,7 +69,7 @@ var X = ({ chartFor: a }) => {
68
69
  },
69
70
  variant: "h3",
70
71
  children: x
71
- }), /* @__PURE__ */ s(M, {
72
+ }), /* @__PURE__ */ s(O, {
72
73
  areaColor: m,
73
74
  axisColor: i.palette.divider,
74
75
  baseline: "min",
@@ -110,7 +111,7 @@ var X = ({ chartFor: a }) => {
110
111
  valueFormatterString: e ? void 0 : g,
111
112
  width: d < 342 ? d - 48 : 342
112
113
  })]
113
- }) : /* @__PURE__ */ s(T, {
114
+ }) : /* @__PURE__ */ s(M, {
114
115
  header: n.title,
115
116
  icon: n.icon,
116
117
  subText: n.description,
@@ -128,9 +129,9 @@ var X = ({ chartFor: a }) => {
128
129
  }
129
130
  })
130
131
  });
131
- }, J = z(X);
132
+ }, N = A(j);
132
133
  export {
133
- J as default
134
+ N as default
134
135
  };
135
136
 
136
137
  //# sourceMappingURL=LineGraph.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LineGraph.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/LineGraph.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { P } from '@mxenabled/mxui'\n\nimport { EmptyState, useFinstrongStore, useGlobalCopyStore, useUserStore } from '../../../common'\nimport { type MonthlySummaries } from '../../../core'\nimport { LineChart } from '../../../common/components/charts/LineChart'\nimport { useDimensions } from '../../../common/hooks/useDimensions'\n\nimport { getSeriesGraphData, getCreditScoreDetails } from '../../util/finstrongUtils'\n\n// Define chart types\nexport type ChartType = 'savingsOverTime' | 'debtOverTime' | 'creditOverTime'\n\n// Configuration interface for chart properties\ninterface ChartConfig {\n title: string\n valueKey: keyof Pick<MonthlySummaries, 'available_cash' | 'debt_balance' | 'credit_score'>\n}\n\ninterface LineGraphProps {\n chartFor: ChartType\n}\n\nconst LineGraph: React.FC<LineGraphProps> = ({ chartFor }) => {\n const theme = useTheme()\n const isDarkMode = theme.palette.mode === 'dark'\n\n const { monthlySummaries } = useFinstrongStore()\n const { user } = useUserStore()\n\n const { finstrong: copy } = useGlobalCopyStore()\n const [containerRef, { width }] = useDimensions()\n\n const ZeroStateContent = {\n savingsOverTime: {\n icon: 'trending_up',\n title: copy.key_indicators_save.zero_state_title,\n description: copy.key_indicators_save.zero_state_description,\n },\n debtOverTime: {\n icon: 'multiline_chart',\n title:\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_line_chart_empty_state_header,\n description:\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_line_chart_empty_state_description,\n },\n creditOverTime: {\n icon: 'credit_card',\n title: copy.credit_over_time_title,\n description: copy.credit_over_time_zero_state_desc,\n },\n }[chartFor]\n\n const chartConfigurations: Record<ChartType, ChartConfig> = {\n savingsOverTime: {\n title: copy.key_indicators_save.savings_over_time,\n valueKey: 'available_cash',\n },\n debtOverTime: {\n title: copy.key_indicators_borrow.have_manageable_debt_drawer.debt_over_time,\n valueKey: 'debt_balance',\n },\n creditOverTime: {\n title: copy.credit_over_time_title,\n valueKey: 'credit_score',\n },\n }\n\n // Get configuration for the current chart type\n const config = chartConfigurations[chartFor]\n\n const dataSet = getSeriesGraphData(monthlySummaries, config.valueKey)\n\n const values = monthlySummaries.map((s) => s[config.valueKey])\n const maxValue = Math.max(...values)\n const minValue = Math.min(...values)\n\n // Determine appropriate formatter and margin based on data range\n const getFormatterConfig = () => {\n if (maxValue >= 1000000) {\n return { formatter: '0.000a', leftMargin: -7 } // For millions\n } else if (maxValue >= 1000) {\n return { formatter: '0a', leftMargin: -27 } // For thousands\n } else {\n return { formatter: '0a', leftMargin: -32 }\n }\n }\n\n const { formatter, leftMargin } = getFormatterConfig()\n\n const title = config.title\n\n const isCreditOverTime = chartFor === 'creditOverTime'\n\n let markerColor\n\n if (isCreditOverTime) {\n const { color } = getCreditScoreDetails(\n user?.credit_score ?? 0,\n isDarkMode,\n copy.credit_score_status,\n )\n markerColor = color\n }\n const hasData = dataSet.some((item) => item.y !== 0)\n return (\n <Card ref={containerRef} sx={{ backgroundColor: 'background.paper' }}>\n {hasData ? (\n <Stack gap={8} sx={{ pl: 18 }}>\n <P sx={{ pb: 8, pt: 16 }} variant=\"h3\">\n {title}\n </P>\n <LineChart\n areaColor={markerColor}\n axisColor={theme.palette.divider}\n baseline=\"min\"\n chartFor={chartFor}\n colors={[theme.palette.primary.main]}\n curveType={isCreditOverTime ? 'linear' : 'monotoneX'}\n datasets={dataSet ? [dataSet] : []}\n height={244}\n labelFontColor={isCreditOverTime ? 'text.primary' : ''}\n labelFontSize={isCreditOverTime ? 13 : undefined}\n labels={[copy.key_indicators_label]}\n margin={{ left: leftMargin, top: isCreditOverTime ? 25 : 15, right: 20 }}\n markStyles={(index) => {\n if (isCreditOverTime) {\n return {\n markLabelStyles: {\n marginLeft: 16,\n transform:\n index === dataSet.length - 1 ? 'translateX(-16px)' : 'translateX(16px)',\n fontWeight: 600,\n fill: theme.palette.text.primary,\n },\n stroke: markerColor!,\n }\n }\n return {}\n }}\n maxRange={isCreditOverTime ? 850 : undefined}\n minRange={(() => {\n if (!isCreditOverTime) return undefined\n return minValue < 300 ? 0 : 300\n })()}\n showArea={true}\n showAverage={!isCreditOverTime}\n showMark={!isCreditOverTime}\n showMarkLabel={isCreditOverTime}\n showXAxis={true}\n showYAxis={isCreditOverTime}\n showYAxisTicks={isCreditOverTime}\n useCustomMark={true}\n valueFormatterString={!isCreditOverTime ? formatter : undefined}\n width={width < 342 ? width - 48 : 342}\n />\n </Stack>\n ) : (\n <EmptyState\n header={ZeroStateContent.title}\n icon={ZeroStateContent.icon}\n subText={ZeroStateContent.description}\n sx={{\n backgroundColor: 'background.paper',\n borderRadius: '8px',\n boxShadow: 1,\n p: 24,\n pb: 48,\n '.empty-state-subtext': {\n fontSize: 15,\n lineHeight: '24px',\n mt: 8,\n },\n }}\n />\n )}\n </Card>\n )\n}\n\nexport default observer(LineGraph)\n"],"mappings":"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"}
1
+ {"version":3,"file":"LineGraph.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/LineGraph.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { P } from '@mxenabled/mxui'\n\nimport { EmptyState, useFinstrongStore, useGlobalCopyStore, useUserStore } from '../../../common'\nimport { type MonthlySummaries } from '../../../core'\nimport { LineChart } from '../../../common/components/charts/LineChart'\nimport { useDimensions } from '../../../common/hooks/useDimensions'\n\nimport { getSeriesGraphData, getCreditScoreDetails } from '../../util/finstrongUtils'\n\n// Define chart types\nexport type ChartType = 'savingsOverTime' | 'debtOverTime' | 'creditOverTime'\n\n// Configuration interface for chart properties\ninterface ChartConfig {\n title: string\n valueKey: keyof Pick<MonthlySummaries, 'available_cash' | 'debt_balance' | 'credit_score'>\n}\n\ninterface LineGraphProps {\n chartFor: ChartType\n}\n\nconst LineGraph: React.FC<LineGraphProps> = ({ chartFor }) => {\n const theme = useTheme()\n const isDarkMode = theme.palette.mode === 'dark'\n\n const { monthlySummaries } = useFinstrongStore()\n const { user } = useUserStore()\n\n const { finstrong: copy } = useGlobalCopyStore()\n const [containerRef, { width }] = useDimensions()\n\n const ZeroStateContent = {\n savingsOverTime: {\n icon: 'trending_up',\n title: copy.key_indicators_save.zero_state_title,\n description: copy.key_indicators_save.zero_state_description,\n },\n debtOverTime: {\n icon: 'multiline_chart',\n title:\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_line_chart_empty_state_header,\n description:\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_line_chart_empty_state_description,\n },\n creditOverTime: {\n icon: 'credit_card',\n title: copy.credit_over_time_title,\n description: copy.credit_over_time_zero_state_desc,\n },\n }[chartFor]\n\n const chartConfigurations: Record<ChartType, ChartConfig> = {\n savingsOverTime: {\n title: copy.key_indicators_save.savings_over_time,\n valueKey: 'available_cash',\n },\n debtOverTime: {\n title: copy.key_indicators_borrow.have_manageable_debt_drawer.debt_over_time,\n valueKey: 'debt_balance',\n },\n creditOverTime: {\n title: copy.credit_over_time_title,\n valueKey: 'credit_score',\n },\n }\n\n // Get configuration for the current chart type\n const config = chartConfigurations[chartFor]\n\n const dataSet = getSeriesGraphData(monthlySummaries, config.valueKey)\n\n const values = monthlySummaries.map((s) => s[config.valueKey])\n const maxValue = Math.max(...values)\n const minValue = Math.min(...values)\n\n // Determine appropriate formatter and margin based on data range\n const getFormatterConfig = () => {\n if (maxValue >= 1000000) {\n return { formatter: '0.000a', leftMargin: -7 } // For millions\n } else if (maxValue >= 1000) {\n return { formatter: '0a', leftMargin: -27 } // For thousands\n } else {\n return { formatter: '0a', leftMargin: -32 }\n }\n }\n\n const { formatter, leftMargin } = getFormatterConfig()\n\n const title = config.title\n\n const isCreditOverTime = chartFor === 'creditOverTime'\n\n let markerColor\n\n if (isCreditOverTime) {\n const { color } = getCreditScoreDetails(\n user?.credit_score ?? 0,\n isDarkMode,\n copy.credit_score_status,\n )\n markerColor = color\n }\n const hasData = dataSet.some((item) => item.y !== 0)\n return (\n <Card ref={containerRef} sx={{ backgroundColor: 'background.paper' }}>\n {hasData ? (\n <Stack gap={8} sx={{ pl: 18 }}>\n <P sx={{ pb: 8, pt: 16 }} variant=\"h3\">\n {title}\n </P>\n <LineChart\n areaColor={markerColor}\n axisColor={theme.palette.divider}\n baseline=\"min\"\n chartFor={chartFor}\n colors={[theme.palette.primary.main]}\n curveType={isCreditOverTime ? 'linear' : 'monotoneX'}\n datasets={dataSet ? [dataSet] : []}\n height={244}\n labelFontColor={isCreditOverTime ? 'text.primary' : ''}\n labelFontSize={isCreditOverTime ? 13 : undefined}\n labels={[copy.key_indicators_label]}\n margin={{ left: leftMargin, top: isCreditOverTime ? 25 : 15, right: 20 }}\n markStyles={(index) => {\n if (isCreditOverTime) {\n return {\n markLabelStyles: {\n marginLeft: 16,\n transform:\n index === dataSet.length - 1 ? 'translateX(-16px)' : 'translateX(16px)',\n fontWeight: 600,\n fill: theme.palette.text.primary,\n },\n stroke: markerColor!,\n }\n }\n return {}\n }}\n maxRange={isCreditOverTime ? 850 : undefined}\n minRange={(() => {\n if (!isCreditOverTime) return undefined\n return minValue < 300 ? 0 : 300\n })()}\n showArea={true}\n showAverage={!isCreditOverTime}\n showMark={!isCreditOverTime}\n showMarkLabel={isCreditOverTime}\n showXAxis={true}\n showYAxis={isCreditOverTime}\n showYAxisTicks={isCreditOverTime}\n useCustomMark={true}\n valueFormatterString={!isCreditOverTime ? formatter : undefined}\n width={width < 342 ? width - 48 : 342}\n />\n </Stack>\n ) : (\n <EmptyState\n header={ZeroStateContent.title}\n icon={ZeroStateContent.icon}\n subText={ZeroStateContent.description}\n sx={{\n backgroundColor: 'background.paper',\n borderRadius: '8px',\n boxShadow: 1,\n p: 24,\n pb: 48,\n '.empty-state-subtext': {\n fontSize: 15,\n lineHeight: '24px',\n mt: 8,\n },\n }}\n />\n )}\n </Card>\n )\n}\n\nexport default observer(LineGraph)\n"],"mappings":";;;;;;;;;;;;AA6BA,IAAM,IAAA,CAAuC,EAAE,UAAA,EAAA,MAAe;AAC5D,QAAM,IAAQ,EAAS,GACjB,IAAa,EAAM,QAAQ,SAAS,QAEpC,EAAE,kBAAA,EAAA,IAAqB,EAAkB,GACzC,EAAE,MAAA,EAAA,IAAS,EAAa,GAExB,EAAE,WAAW,EAAA,IAAS,EAAmB,GACzC,CAAC,GAAc,EAAE,OAAA,EAAA,CAAA,IAAW,EAAc,GAE1C,IAAmB;AAAA,IACvB,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,OAAO,EAAK,oBAAoB;AAAA,MAChC,aAAa,EAAK,oBAAoB;AAAA,IACxC;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,OACE,EAAK,sBAAsB,4BACxB;AAAA,MACL,aACE,EAAK,sBAAsB,4BACxB;AAAA,IACP;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,OAAO,EAAK;AAAA,MACZ,aAAa,EAAK;AAAA,IACpB;AAAA,EACF,EAAE,CAAA,GAkBI,IAAS;AAAA,IAfb,iBAAiB;AAAA,MACf,OAAO,EAAK,oBAAoB;AAAA,MAChC,UAAU;AAAA,IACZ;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,EAAK,sBAAsB,4BAA4B;AAAA,MAC9D,UAAU;AAAA,IACZ;AAAA,IACA,gBAAgB;AAAA,MACd,OAAO,EAAK;AAAA,MACZ,UAAU;AAAA,IACZ;AAAA,EAIa,EAAoB,CAAA,GAE7B,IAAU,EAAmB,GAAkB,EAAO,QAAQ,GAE9D,IAAS,EAAiB,IAAA,CAAK,MAAM,EAAE,EAAO,QAAA,CAAS,GACvD,IAAW,KAAK,IAAI,GAAG,CAAM,GAC7B,IAAW,KAAK,IAAI,GAAG,CAAM,GAG7B,IAAA,MACA,KAAY,MACP;AAAA,IAAE,WAAW;AAAA,IAAU,YAAY;AAAA,EAAG,IACpC,KAAY,MACd;AAAA,IAAE,WAAW;AAAA,IAAM,YAAY;AAAA,EAAI,IAEnC;AAAA,IAAE,WAAW;AAAA,IAAM,YAAY;AAAA,EAAI,GAIxC,EAAE,WAAA,GAAW,YAAA,EAAA,IAAe,EAAmB,GAE/C,IAAQ,EAAO,OAEf,IAAmB,MAAa;AAEtC,MAAI;AAEJ,MAAI,GAAkB;AACpB,UAAM,EAAE,OAAA,EAAA,IAAU,EAChB,GAAM,gBAAgB,GACtB,GACA,EAAK,mBACP;AACA,IAAA,IAAc;AAAA,EAChB;AACA,QAAM,IAAU,EAAQ,KAAA,CAAM,MAAS,EAAK,MAAM,CAAC;AACnD,SACE,gBAAA,EAAC,GAAD;AAAA,IAAM,KAAK;AAAA,IAAc,IAAI,EAAE,iBAAiB,mBAAmB;AAAA,IAChE,UAAA,IACC,gBAAA,EAAC,GAAD;AAAA,MAAO,KAAK;AAAA,MAAG,IAAI,EAAE,IAAI,GAAG;AAAA,MAA5B,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,QAAG,IAAI;AAAA,UAAE,IAAI;AAAA,UAAG,IAAI;AAAA,QAAG;AAAA,QAAG,SAAQ;AAAA,QAC/B,UAAA;AAAA,MACA,CAAA,GACH,gBAAA,EAAC,GAAD;AAAA,QACE,WAAW;AAAA,QACX,WAAW,EAAM,QAAQ;AAAA,QACzB,UAAS;AAAA,QACC,UAAA;AAAA,QACV,QAAQ,CAAC,EAAM,QAAQ,QAAQ,IAAI;AAAA,QACnC,WAAW,IAAmB,WAAW;AAAA,QACzC,UAAU,IAAU,CAAC,CAAO,IAAI,CAAC;AAAA,QACjC,QAAQ;AAAA,QACR,gBAAgB,IAAmB,iBAAiB;AAAA,QACpD,eAAe,IAAmB,KAAK;AAAA,QACvC,QAAQ,CAAC,EAAK,oBAAoB;AAAA,QAClC,QAAQ;AAAA,UAAE,MAAM;AAAA,UAAY,KAAK,IAAmB,KAAK;AAAA,UAAI,OAAO;AAAA,QAAG;AAAA,QACvE,YAAA,CAAa,MACP,IACK;AAAA,UACL,iBAAiB;AAAA,YACf,YAAY;AAAA,YACZ,WACE,MAAU,EAAQ,SAAS,IAAI,sBAAsB;AAAA,YACvD,YAAY;AAAA,YACZ,MAAM,EAAM,QAAQ,KAAK;AAAA,UAC3B;AAAA,UACA,QAAQ;AAAA,QACV,IAEK,CAAC;AAAA,QAEV,UAAU,IAAmB,MAAM;AAAA,QACnC,WAAA,MAAiB;AACf,cAAK;AACL,mBAAO,IAAW,MAAM,IAAI;AAAA,QAC9B,GAAG;AAAA,QACH,UAAU;AAAA,QACV,aAAa,CAAC;AAAA,QACd,UAAU,CAAC;AAAA,QACX,eAAe;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,sBAAuB,IAA+B,SAAZ;AAAA,QAC1C,OAAO,IAAQ,MAAM,IAAQ,KAAK;AAAA,MACnC,CAAA,CACI;AAAA,IAEP,CAAA,IAAA,gBAAA,EAAC,GAAD;AAAA,MACE,QAAQ,EAAiB;AAAA,MACzB,MAAM,EAAiB;AAAA,MACvB,SAAS,EAAiB;AAAA,MAC1B,IAAI;AAAA,QACF,iBAAiB;AAAA,QACjB,cAAc;AAAA,QACd,WAAW;AAAA,QACX,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,wBAAwB;AAAA,UACtB,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,IAAI;AAAA,QACN;AAAA,MACF;AAAA,IACD,CAAA;AAAA,EAEC,CAAA;AAEV,GAEA,IAAe,EAAS,CAAS"}
@@ -1,22 +1,22 @@
1
- import { buildDynamicCopy as i } from "../../../core/utils/Localization.es.js";
2
- import { useGlobalCopyStore as v } from "../../../common/context/hooks.es.js";
3
- import { getPercentFromRatio as d } from "../../util/finstrongUtils.es.js";
4
- import s from "./ScoreHistoryTimelineItem.es.js";
1
+ import { buildDynamicCopy as n } from "../../../core/utils/Localization.es.js";
2
+ import { useGlobalCopyStore as I } from "../../../common/context/hooks.es.js";
3
+ import { getPercentFromRatio as s } from "../../util/finstrongUtils.es.js";
4
+ import d from "./ScoreHistoryTimelineItem.es.js";
5
5
  import "react";
6
- import { observer as I } from "mobx-react-lite";
7
- import n from "@mui/material/Stack";
8
- import { Icon as T, P as B, Text as l } from "@mxenabled/mxui";
9
- import { format as H } from "date-fns/format";
10
- import { Fragment as R, jsx as r, jsxs as t } from "react/jsx-runtime";
6
+ import { observer as T } from "mobx-react-lite";
7
+ import i from "@mui/material/Stack";
8
+ import { Icon as B, P as H, Text as l } from "@mxenabled/mxui";
9
+ import { format as R } from "date-fns/format";
10
+ import { Fragment as D, jsx as r, jsxs as t } from "react/jsx-runtime";
11
11
  import m from "@mui/material/Box";
12
- import D from "@mui/material/Card";
13
- import M from "@mui/lab/Timeline";
14
- import { timelineItemClasses as j } from "@mui/lab/TimelineItem";
15
- var k = ({ report: a }) => {
16
- const { finstrong: p } = v(), { score_history_drawer_timeline: o } = p, { health_score_point_difference: e, newer_credit_score: _, older_credit_score: f, older_spend_to_income_ratio: h, newer_spend_to_income_ratio: u, older_health_score: c, newer_health_score: g, newer_score_calculated_at: x } = a, y = H(new Date(x), "MMM d"), w = () => e === 0 ? "info.lighter" : e > 0 ? "success.lighter" : "error.lighter", C = () => e === 0 ? i(o.stayed_at, c) : e > 0 ? o.less_spending : o.more_spending, S = () => {
12
+ import M from "@mui/material/Card";
13
+ import j from "@mui/lab/Timeline";
14
+ import { timelineItemClasses as k } from "@mui/lab/TimelineItem";
15
+ var W = ({ report: a }) => {
16
+ const { finstrong: p } = I(), { score_history_drawer_timeline: o } = p, { health_score_point_difference: e, newer_credit_score: _, older_credit_score: f, older_spend_to_income_ratio: h, newer_spend_to_income_ratio: u, older_health_score: c, newer_health_score: g, newer_score_calculated_at: x } = a, y = R(new Date(x), "MMM d"), w = () => e === 0 ? "info.lighter" : e > 0 ? "success.lighter" : "error.lighter", C = () => e === 0 ? n(o.stayed_at, c) : e > 0 ? o.less_spending : o.more_spending, S = () => {
17
17
  if (e === 0) return null;
18
- const b = i(e > 0 ? o.up_from : o.down_from, c, g);
19
- return /* @__PURE__ */ t(R, { children: [/* @__PURE__ */ r(T, {
18
+ const b = e > 0 ? o.up_from : o.down_from, v = n(b, c, g);
19
+ return /* @__PURE__ */ t(D, { children: [/* @__PURE__ */ r(B, {
20
20
  fill: !0,
21
21
  name: "circle",
22
22
  sx: {
@@ -25,16 +25,16 @@ var k = ({ report: a }) => {
25
25
  mx: 4,
26
26
  p: 1
27
27
  }
28
- }), b] });
28
+ }), v] });
29
29
  };
30
- return /* @__PURE__ */ t(D, { children: [/* @__PURE__ */ r(m, {
30
+ return /* @__PURE__ */ t(M, { children: [/* @__PURE__ */ r(m, {
31
31
  sx: {
32
32
  borderBottomColor: "divider",
33
33
  borderBottomStyle: "solid",
34
34
  borderBottomWidth: e !== 0 ? 1 : 0,
35
35
  p: 16
36
36
  },
37
- children: /* @__PURE__ */ t(n, {
37
+ children: /* @__PURE__ */ t(i, {
38
38
  flexDirection: "row",
39
39
  sx: {
40
40
  alignItems: "center",
@@ -42,7 +42,7 @@ var k = ({ report: a }) => {
42
42
  height: 48,
43
43
  width: "100%"
44
44
  },
45
- children: [/* @__PURE__ */ r(n, {
45
+ children: [/* @__PURE__ */ r(i, {
46
46
  sx: {
47
47
  alignItems: "center",
48
48
  backgroundColor: w(),
@@ -51,12 +51,12 @@ var k = ({ report: a }) => {
51
51
  justifyContent: "center",
52
52
  width: 48
53
53
  },
54
- children: /* @__PURE__ */ r(B, {
54
+ children: /* @__PURE__ */ r(H, {
55
55
  sx: { fontWeight: 600 },
56
56
  variant: "body1",
57
57
  children: e > 0 ? `+${e}` : e
58
58
  })
59
- }), /* @__PURE__ */ t(n, {
59
+ }), /* @__PURE__ */ t(i, {
60
60
  sx: {
61
61
  gap: 2,
62
62
  width: "80%"
@@ -84,24 +84,24 @@ var k = ({ report: a }) => {
84
84
  pr: 16,
85
85
  pt: 12
86
86
  },
87
- children: /* @__PURE__ */ t(M, {
87
+ children: /* @__PURE__ */ t(j, {
88
88
  sx: {
89
- [`& .${j.root}:before`]: {
89
+ [`& .${k.root}:before`]: {
90
90
  flex: 0,
91
91
  padding: 0
92
92
  },
93
93
  m: 0,
94
94
  p: 0
95
95
  },
96
- children: [/* @__PURE__ */ r(s, { content: i(o.spend_to_income_description, d(h), d(u)) }), /* @__PURE__ */ r(s, {
97
- content: i(o.credit_score_description, f, _),
96
+ children: [/* @__PURE__ */ r(d, { content: n(o.spend_to_income_description, s(h), s(u)) }), /* @__PURE__ */ r(d, {
97
+ content: n(o.credit_score_description, f, _),
98
98
  islast: !0
99
99
  })]
100
100
  })
101
101
  })] });
102
- }, U = I(k);
102
+ }, V = T(W);
103
103
  export {
104
- U as default
104
+ V as default
105
105
  };
106
106
 
107
107
  //# sourceMappingURL=ScoreHistoryTimeline.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScoreHistoryTimeline.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/ScoreHistoryTimeline.tsx"],"sourcesContent":["import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport { format } from 'date-fns/format'\n\nimport Box from '@mui/material/Box'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\n\nimport { Icon, P, Text } from '@mxenabled/mxui'\n\n// TODO : Import Timeline Components from core when they are available\nimport Timeline from '@mui/lab/Timeline'\nimport { timelineItemClasses } from '@mui/lab/TimelineItem'\n\nimport { useGlobalCopyStore } from '../../../common'\nimport { HealthScoreReport } from '../../../core'\n\nimport { getPercentFromRatio } from '../../util/finstrongUtils'\n\nimport ScoreHistoryTimelineItem from './ScoreHistoryTimelineItem'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface ScoreHistoryTimelineProps {\n report: HealthScoreReport\n}\n\nconst ScoreHistoryTimeline: React.FC<ScoreHistoryTimelineProps> = ({ report }) => {\n const { finstrong: copyContent } = useGlobalCopyStore()\n const { score_history_drawer_timeline: timelineCopy } = copyContent\n\n const {\n health_score_point_difference: score,\n newer_credit_score: newCreditScore,\n older_credit_score: oldCreditScore,\n older_spend_to_income_ratio: oldSpendToIncomeRatio,\n newer_spend_to_income_ratio: newSpendToIncomeRatio,\n older_health_score: oldHealthScore,\n newer_health_score: newHealthScore,\n newer_score_calculated_at: newScoreCalculatedAt,\n } = report\n\n const formattedDate = format(new Date(newScoreCalculatedAt), 'MMM d')\n\n const getBackgroundColor = () => {\n if (score === 0) return 'info.lighter'\n return score > 0 ? 'success.lighter' : 'error.lighter'\n }\n\n const getMainContent = () => {\n if (score === 0) {\n return buildDynamicCopy(timelineCopy.stayed_at, oldHealthScore) as string\n }\n return score > 0 ? timelineCopy.less_spending : timelineCopy.more_spending\n }\n\n const getSubContent = () => {\n if (score === 0) return null\n\n const copyKey = score > 0 ? timelineCopy.up_from : timelineCopy.down_from\n const text = buildDynamicCopy(copyKey, oldHealthScore, newHealthScore) as string\n\n return (\n <>\n <Icon\n fill={true}\n name=\"circle\"\n sx={{ color: 'text.secondary', fontSize: 8, mx: 4, p: 1 }}\n />\n {text}\n </>\n )\n }\n\n return (\n <Card>\n <Box\n sx={{\n borderBottomColor: 'divider',\n borderBottomStyle: 'solid',\n borderBottomWidth: score !== 0 ? 1 : 0,\n p: 16,\n }}\n >\n <Stack\n flexDirection=\"row\"\n sx={{ alignItems: 'center', gap: 16, height: 48, width: '100%' }}\n >\n <Stack\n sx={{\n alignItems: 'center',\n backgroundColor: getBackgroundColor(),\n borderRadius: 999,\n height: 48,\n justifyContent: 'center',\n width: 48,\n }}\n >\n <P sx={{ fontWeight: 600 }} variant=\"body1\">\n {score > 0 ? `+${score}` : score}\n </P>\n </Stack>\n <Stack sx={{ gap: 2, width: '80%' }}>\n <Text fontWeight={600} variant=\"body1\">\n {getMainContent()}\n </Text>\n <Text sx={{ color: 'text.secondary' }} variant=\"subtitle2\">\n {formattedDate} {getSubContent()}\n </Text>\n </Stack>\n </Stack>\n </Box>\n {score !== 0 && (\n <Box sx={{ color: 'text.secondary', pb: 8, pl: 32, pr: 16, pt: 12 }}>\n <Timeline\n sx={{\n [`& .${timelineItemClasses.root}:before`]: {\n flex: 0,\n padding: 0,\n },\n m: 0,\n p: 0,\n }}\n >\n <ScoreHistoryTimelineItem\n content={\n buildDynamicCopy(\n timelineCopy.spend_to_income_description,\n getPercentFromRatio(oldSpendToIncomeRatio),\n getPercentFromRatio(newSpendToIncomeRatio),\n ) as string\n }\n />\n <ScoreHistoryTimelineItem\n content={\n buildDynamicCopy(\n timelineCopy.credit_score_description,\n oldCreditScore,\n newCreditScore,\n ) as string\n }\n islast={true}\n />\n </Timeline>\n </Box>\n )}\n </Card>\n )\n}\n\nexport default observer(ScoreHistoryTimeline)\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScoreHistoryTimeline.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/ScoreHistoryTimeline.tsx"],"sourcesContent":["import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport { format } from 'date-fns/format'\n\nimport Box from '@mui/material/Box'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\n\nimport { Icon, P, Text } from '@mxenabled/mxui'\n\n// TODO : Import Timeline Components from core when they are available\nimport Timeline from '@mui/lab/Timeline'\nimport { timelineItemClasses } from '@mui/lab/TimelineItem'\n\nimport { useGlobalCopyStore } from '../../../common'\nimport { HealthScoreReport } from '../../../core'\n\nimport { getPercentFromRatio } from '../../util/finstrongUtils'\n\nimport ScoreHistoryTimelineItem from './ScoreHistoryTimelineItem'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface ScoreHistoryTimelineProps {\n report: HealthScoreReport\n}\n\nconst ScoreHistoryTimeline: React.FC<ScoreHistoryTimelineProps> = ({ report }) => {\n const { finstrong: copyContent } = useGlobalCopyStore()\n const { score_history_drawer_timeline: timelineCopy } = copyContent\n\n const {\n health_score_point_difference: score,\n newer_credit_score: newCreditScore,\n older_credit_score: oldCreditScore,\n older_spend_to_income_ratio: oldSpendToIncomeRatio,\n newer_spend_to_income_ratio: newSpendToIncomeRatio,\n older_health_score: oldHealthScore,\n newer_health_score: newHealthScore,\n newer_score_calculated_at: newScoreCalculatedAt,\n } = report\n\n const formattedDate = format(new Date(newScoreCalculatedAt), 'MMM d')\n\n const getBackgroundColor = () => {\n if (score === 0) return 'info.lighter'\n return score > 0 ? 'success.lighter' : 'error.lighter'\n }\n\n const getMainContent = () => {\n if (score === 0) {\n return buildDynamicCopy(timelineCopy.stayed_at, oldHealthScore) as string\n }\n return score > 0 ? timelineCopy.less_spending : timelineCopy.more_spending\n }\n\n const getSubContent = () => {\n if (score === 0) return null\n\n const copyKey = score > 0 ? timelineCopy.up_from : timelineCopy.down_from\n const text = buildDynamicCopy(copyKey, oldHealthScore, newHealthScore) as string\n\n return (\n <>\n <Icon\n fill={true}\n name=\"circle\"\n sx={{ color: 'text.secondary', fontSize: 8, mx: 4, p: 1 }}\n />\n {text}\n </>\n )\n }\n\n return (\n <Card>\n <Box\n sx={{\n borderBottomColor: 'divider',\n borderBottomStyle: 'solid',\n borderBottomWidth: score !== 0 ? 1 : 0,\n p: 16,\n }}\n >\n <Stack\n flexDirection=\"row\"\n sx={{ alignItems: 'center', gap: 16, height: 48, width: '100%' }}\n >\n <Stack\n sx={{\n alignItems: 'center',\n backgroundColor: getBackgroundColor(),\n borderRadius: 999,\n height: 48,\n justifyContent: 'center',\n width: 48,\n }}\n >\n <P sx={{ fontWeight: 600 }} variant=\"body1\">\n {score > 0 ? `+${score}` : score}\n </P>\n </Stack>\n <Stack sx={{ gap: 2, width: '80%' }}>\n <Text fontWeight={600} variant=\"body1\">\n {getMainContent()}\n </Text>\n <Text sx={{ color: 'text.secondary' }} variant=\"subtitle2\">\n {formattedDate} {getSubContent()}\n </Text>\n </Stack>\n </Stack>\n </Box>\n {score !== 0 && (\n <Box sx={{ color: 'text.secondary', pb: 8, pl: 32, pr: 16, pt: 12 }}>\n <Timeline\n sx={{\n [`& .${timelineItemClasses.root}:before`]: {\n flex: 0,\n padding: 0,\n },\n m: 0,\n p: 0,\n }}\n >\n <ScoreHistoryTimelineItem\n content={\n buildDynamicCopy(\n timelineCopy.spend_to_income_description,\n getPercentFromRatio(oldSpendToIncomeRatio),\n getPercentFromRatio(newSpendToIncomeRatio),\n ) as string\n }\n />\n <ScoreHistoryTimelineItem\n content={\n buildDynamicCopy(\n timelineCopy.credit_score_description,\n oldCreditScore,\n newCreditScore,\n ) as string\n }\n islast={true}\n />\n </Timeline>\n </Box>\n )}\n </Card>\n )\n}\n\nexport default observer(ScoreHistoryTimeline)\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScoreHistoryTimelineItem.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/ScoreHistoryTimelineItem.tsx"],"sourcesContent":["import React from 'react'\n\nimport { P } from '@mxenabled/mxui'\n\n// TODO : Import Timeline Components from core when they are available\nimport TimelineConnector from '@mui/lab/TimelineConnector'\nimport TimelineContent from '@mui/lab/TimelineContent'\nimport TimelineDot from '@mui/lab/TimelineDot'\nimport TimelineSeparator from '@mui/lab/TimelineSeparator'\nimport TimelineItem from '@mui/lab/TimelineItem'\n\ninterface ScoreHistoryTimelineItemProps {\n content?: string\n islast?: boolean\n}\n\nconst ScoreHistoryTimelineItem: React.FC<ScoreHistoryTimelineItemProps> = ({\n content,\n islast = false,\n}) => {\n return (\n <TimelineItem sx={{ minHeight: 0 }}>\n <TimelineSeparator>\n <TimelineDot sx={{ bgcolor: 'divider', boxShadow: 'none', p: 2 }} />\n {!islast && (\n <TimelineConnector\n sx={{\n bgcolor: 'background.paper',\n borderLeft: '1px solid',\n borderColor: 'divider',\n borderRadius: 1,\n m: -4,\n }}\n />\n )}\n </TimelineSeparator>\n <TimelineContent sx={{ pb: 16, pl: 12, pr: 0, pt: 5 }}>\n <P fontSize={13} fontWeight={400} variant=\"subtitle2\">\n {content}\n </P>\n </TimelineContent>\n </TimelineItem>\n )\n}\n\nexport default ScoreHistoryTimelineItem\n"],"mappings":";;;;;;;;AAgBA,IAAM,IAAA,CAAqE,EACzE,SAAA,GACA,QAAA,IAAS,GAAA,MAGP,gBAAA,EAAC,GAAD;AAAA,EAAc,IAAI,EAAE,WAAW,EAAE;AAAA,YAAjC,CACE,gBAAA,EAAC,GAAD,EAAA,UAAA,CACE,gBAAA,EAAC,GAAD,EAAa,IAAI;AAAA,IAAE,SAAS;AAAA,IAAW,WAAW;AAAA,IAAQ,GAAG;AAAA,EAAE,EAAI,CAAA,GAClE,CAAC,KACA,gBAAA,EAAC,GAAD,EACE,IAAI;AAAA,IACF,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,cAAc;AAAA,IACd,GAAG;AAAA,EACL,EACD,CAAA,CAEc,EAAA,CAAA,GACnB,gBAAA,EAAC,GAAD;AAAA,IAAiB,IAAI;AAAA,MAAE,IAAI;AAAA,MAAI,IAAI;AAAA,MAAI,IAAI;AAAA,MAAG,IAAI;AAAA,IAAE;AAAA,cAClD,gBAAA,EAAC,GAAD;AAAA,MAAG,UAAU;AAAA,MAAI,YAAY;AAAA,MAAK,SAAQ;AAAA,gBACvC;AAAA,IACA,CAAA;AAAA,EACY,CAAA,CACL"}
1
+ {"version":3,"file":"ScoreHistoryTimelineItem.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/ScoreHistoryTimelineItem.tsx"],"sourcesContent":["import React from 'react'\n\nimport { P } from '@mxenabled/mxui'\n\n// TODO : Import Timeline Components from core when they are available\nimport TimelineConnector from '@mui/lab/TimelineConnector'\nimport TimelineContent from '@mui/lab/TimelineContent'\nimport TimelineDot from '@mui/lab/TimelineDot'\nimport TimelineSeparator from '@mui/lab/TimelineSeparator'\nimport TimelineItem from '@mui/lab/TimelineItem'\n\ninterface ScoreHistoryTimelineItemProps {\n content?: string\n islast?: boolean\n}\n\nconst ScoreHistoryTimelineItem: React.FC<ScoreHistoryTimelineItemProps> = ({\n content,\n islast = false,\n}) => {\n return (\n <TimelineItem sx={{ minHeight: 0 }}>\n <TimelineSeparator>\n <TimelineDot sx={{ bgcolor: 'divider', boxShadow: 'none', p: 2 }} />\n {!islast && (\n <TimelineConnector\n sx={{\n bgcolor: 'background.paper',\n borderLeft: '1px solid',\n borderColor: 'divider',\n borderRadius: 1,\n m: -4,\n }}\n />\n )}\n </TimelineSeparator>\n <TimelineContent sx={{ pb: 16, pl: 12, pr: 0, pt: 5 }}>\n <P fontSize={13} fontWeight={400} variant=\"subtitle2\">\n {content}\n </P>\n </TimelineContent>\n </TimelineItem>\n )\n}\n\nexport default ScoreHistoryTimelineItem\n"],"mappings":";;;;;;;;AAgBA,IAAM,IAAA,CAAqE,EACzE,SAAA,GACA,QAAA,IAAS,GAAA,MAGP,gBAAA,EAAC,GAAD;AAAA,EAAc,IAAI,EAAE,WAAW,EAAE;AAAA,EAAjC,UAAA,CACE,gBAAA,EAAC,GAAD,EAAA,UAAA,CACE,gBAAA,EAAC,GAAD,EAAa,IAAI;AAAA,IAAE,SAAS;AAAA,IAAW,WAAW;AAAA,IAAQ,GAAG;AAAA,EAAE,EAAI,CAAA,GAClE,CAAC,KACA,gBAAA,EAAC,GAAD,EACE,IAAI;AAAA,IACF,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,cAAc;AAAA,IACd,GAAG;AAAA,EACL,EACD,CAAA,CAEc,EAAA,CAAA,GACnB,gBAAA,EAAC,GAAD;AAAA,IAAiB,IAAI;AAAA,MAAE,IAAI;AAAA,MAAI,IAAI;AAAA,MAAI,IAAI;AAAA,MAAG,IAAI;AAAA,IAAE;AAAA,IAClD,UAAA,gBAAA,EAAC,GAAD;AAAA,MAAG,UAAU;AAAA,MAAI,YAAY;AAAA,MAAK,SAAQ;AAAA,MACvC,UAAA;AAAA,IACA,CAAA;AAAA,EACY,CAAA,CACL"}
@@ -1 +1 @@
1
- {"version":3,"file":"TotalCard.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/TotalCard.tsx"],"sourcesContent":["import React from 'react'\n\nimport Stack from '@mui/material/Stack'\n\nimport { P } from '@mxenabled/mxui'\n\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface TotalCardProps {\n balance: number | React.ReactNode\n title: string\n sx?: object\n}\n\nconst TotalCard: React.FC<TotalCardProps> = ({ balance, title, sx }) => {\n return (\n <Stack\n sx={{\n alignItems: 'center',\n backgroundColor: 'background.default',\n borderRadius: 2,\n height: 72,\n justifyContent: 'center',\n p: 12,\n ...sx,\n }}\n >\n {typeof balance === 'number' ? (\n <P variant=\"h2\">{formatCurrency(balance, '0,0.00')}</P>\n ) : (\n balance\n )}\n\n <P color=\"text.secondary\" fontWeight=\"400\" variant=\"subtitle2\">\n {title}\n </P>\n </Stack>\n )\n}\n\nexport default TotalCard\n"],"mappings":";;;;;AAcA,IAAM,IAAA,CAAuC,EAAE,SAAA,GAAS,OAAA,GAAO,IAAA,EAAA,MAE3D,gBAAA,EAAC,GAAD;AAAA,EACE,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,YATF,CAWG,OAAO,KAAY,WAClB,gBAAA,EAAC,GAAD;AAAA,IAAG,SAAQ;AAAA,cAAM,EAAe,GAAS,QAAQ;AAAA,EAAK,CAAA,IAEtD,GAGF,gBAAA,EAAC,GAAD;AAAA,IAAG,OAAM;AAAA,IAAiB,YAAW;AAAA,IAAM,SAAQ;AAAA,cAChD;AAAA,EACA,CAAA,CACE"}
1
+ {"version":3,"file":"TotalCard.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/TotalCard.tsx"],"sourcesContent":["import React from 'react'\n\nimport Stack from '@mui/material/Stack'\n\nimport { P } from '@mxenabled/mxui'\n\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface TotalCardProps {\n balance: number | React.ReactNode\n title: string\n sx?: object\n}\n\nconst TotalCard: React.FC<TotalCardProps> = ({ balance, title, sx }) => {\n return (\n <Stack\n sx={{\n alignItems: 'center',\n backgroundColor: 'background.default',\n borderRadius: 2,\n height: 72,\n justifyContent: 'center',\n p: 12,\n ...sx,\n }}\n >\n {typeof balance === 'number' ? (\n <P variant=\"h2\">{formatCurrency(balance, '0,0.00')}</P>\n ) : (\n balance\n )}\n\n <P color=\"text.secondary\" fontWeight=\"400\" variant=\"subtitle2\">\n {title}\n </P>\n </Stack>\n )\n}\n\nexport default TotalCard\n"],"mappings":";;;;;AAcA,IAAM,IAAA,CAAuC,EAAE,SAAA,GAAS,OAAA,GAAO,IAAA,EAAA,MAE3D,gBAAA,EAAC,GAAD;AAAA,EACE,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EATF,UAAA,CAWG,OAAO,KAAY,WAClB,gBAAA,EAAC,GAAD;AAAA,IAAG,SAAQ;AAAA,IAAM,UAAA,EAAe,GAAS,QAAQ;AAAA,EAAK,CAAA,IAEtD,GAGF,gBAAA,EAAC,GAAD;AAAA,IAAG,OAAM;AAAA,IAAiB,YAAW;AAAA,IAAM,SAAQ;AAAA,IAChD,UAAA;AAAA,EACA,CAAA,CACE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Transactions.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/Transactions.tsx"],"sourcesContent":["import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { MerchantLogo, P, Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { ConnectDrawer, Drawer, useCategoryStore, useGlobalCopyStore } from '../../../common'\nimport { Transaction } from '../../../core'\nimport { fromUnixToDayOfWeekAndDate } from '../../../core/utils/DateUtil'\nimport { TransactionList } from '../../../transactions'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface TransactionsProps {\n transactions: Transaction[]\n amountColor?: string\n amountPosition?: 'flex-start' | 'center' | 'flex-end'\n formatDate?: (date: number) => string\n secondaryIcon?: React.ReactNode\n}\n\nconst Transactions: React.FC<TransactionsProps> = ({\n transactions = [],\n amountColor = 'success.main',\n amountPosition = 'center',\n formatDate = fromUnixToDayOfWeekAndDate,\n secondaryIcon,\n}) => {\n const theme = useTheme()\n const { connect: connectCopy, finstrong: copy, categories: categoryCopy } = useGlobalCopyStore()\n const [isOpen, setIsOpen] = React.useState(false)\n const [isConnectAccountsOpen, setIsConnectAccountsOpen] = React.useState(false)\n const { getCategoryName } = useCategoryStore()\n\n const maxVisible = 3\n const hasMoreTransactions = transactions.length > maxVisible\n const remainingCount = transactions.length - maxVisible\n\n let updatedTransactions = transactions\n if (hasMoreTransactions) {\n updatedTransactions = transactions\n .map((eachTransaction) => {\n return {\n ...eachTransaction,\n category:\n categoryCopy.default_categories[eachTransaction.top_level_category_guid!]?.replace(\n /&amp;/g,\n '&',\n ) ?? getCategoryName(eachTransaction.top_level_category_guid!),\n }\n })\n .sort((a, b) => b.date - a.date)\n }\n if (!transactions || transactions.length === 0) {\n return (\n <>\n <Box>\n <Button\n onClick={() => setIsConnectAccountsOpen(true)}\n size=\"small\"\n sx={{ my: 0, px: 16, py: 12, width: '100%' }}\n variant=\"contained\"\n >\n <Text bold={true} variant=\"body1\">\n {copy.connect_more_accounts_button}\n </Text>\n </Button>\n </Box>\n <ConnectDrawer\n onClose={() => setIsConnectAccountsOpen(false)}\n showConnectWidget={isConnectAccountsOpen}\n title={connectCopy.mini_title}\n />\n </>\n )\n }\n\n return (\n <Stack sx={{ gap: 16 }}>\n <Box sx={{ border: `1px solid ${theme.palette.divider}`, borderRadius: 2 }}>\n {transactions\n .slice(0, maxVisible)\n .sort((a, b) => b.date - a.date)\n .map((item, index) => (\n <Stack\n key={index}\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n gap: 16,\n pl: 24,\n pt: 14,\n }}\n >\n <Stack sx={{ pb: 14 }}>\n <MerchantLogo\n categoryGuid={item.top_level_category_guid || ''}\n merchantGuid={item.merchant_guid || ''}\n size={32}\n />\n </Stack>\n <Stack\n key={item.guid || index}\n sx={{\n alignItems: amountPosition,\n flexDirection: 'row',\n gap: 12,\n justifyContent: 'space-between',\n ...(index < Math.min(transactions.length, maxVisible) - 1 && {\n borderBottom: `1px solid ${theme.palette.divider}`,\n }),\n pb: 13,\n pr: 24,\n width: '100%',\n }}\n >\n <Stack>\n <P bold={true} variant=\"body1\">\n {item.description}\n </P>\n <Stack sx={{ flexDirection: 'row', alignItems: 'center', gap: 4 }}>\n {!!secondaryIcon && secondaryIcon}\n <Text variant=\"caption\">{formatDate(item.date)}</Text>\n </Stack>\n </Stack>\n\n <P bold={true} sx={{ color: amountColor, flexShrink: 0 }} variant=\"body1\">\n {formatCurrency(item.amount, '0,0.00')}\n </P>\n </Stack>\n </Stack>\n ))}\n </Box>\n\n {hasMoreTransactions && (\n <>\n <Box>\n <Button\n endIcon={<ChevronRight />}\n onClick={() => setIsOpen(true)}\n size=\"small\"\n sx={{ my: 0, px: 16, py: 12, width: '100%' }}\n >\n <Text bold={true} variant=\"body1\">\n {remainingCount}&nbsp;\n {\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_more_transactions\n }\n </Text>\n </Button>\n </Box>\n <Drawer\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n title={\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_transactions\n }\n >\n <TransactionList transaction={updatedTransactions} />\n </Drawer>\n </>\n )}\n </Stack>\n )\n}\n\nexport default Transactions\n"],"mappings":"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"}
1
+ {"version":3,"file":"Transactions.es.js","names":[],"sources":["../../../../src/finstrong/components/shared/Transactions.tsx"],"sourcesContent":["import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { MerchantLogo, P, Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { ConnectDrawer, Drawer, useCategoryStore, useGlobalCopyStore } from '../../../common'\nimport { Transaction } from '../../../core'\nimport { fromUnixToDayOfWeekAndDate } from '../../../core/utils/DateUtil'\nimport { TransactionList } from '../../../transactions'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface TransactionsProps {\n transactions: Transaction[]\n amountColor?: string\n amountPosition?: 'flex-start' | 'center' | 'flex-end'\n formatDate?: (date: number) => string\n secondaryIcon?: React.ReactNode\n}\n\nconst Transactions: React.FC<TransactionsProps> = ({\n transactions = [],\n amountColor = 'success.main',\n amountPosition = 'center',\n formatDate = fromUnixToDayOfWeekAndDate,\n secondaryIcon,\n}) => {\n const theme = useTheme()\n const { connect: connectCopy, finstrong: copy, categories: categoryCopy } = useGlobalCopyStore()\n const [isOpen, setIsOpen] = React.useState(false)\n const [isConnectAccountsOpen, setIsConnectAccountsOpen] = React.useState(false)\n const { getCategoryName } = useCategoryStore()\n\n const maxVisible = 3\n const hasMoreTransactions = transactions.length > maxVisible\n const remainingCount = transactions.length - maxVisible\n\n let updatedTransactions = transactions\n if (hasMoreTransactions) {\n updatedTransactions = transactions\n .map((eachTransaction) => {\n return {\n ...eachTransaction,\n category:\n categoryCopy.default_categories[eachTransaction.top_level_category_guid!]?.replace(\n /&amp;/g,\n '&',\n ) ?? getCategoryName(eachTransaction.top_level_category_guid!),\n }\n })\n .sort((a, b) => b.date - a.date)\n }\n if (!transactions || transactions.length === 0) {\n return (\n <>\n <Box>\n <Button\n onClick={() => setIsConnectAccountsOpen(true)}\n size=\"small\"\n sx={{ my: 0, px: 16, py: 12, width: '100%' }}\n variant=\"contained\"\n >\n <Text bold={true} variant=\"body1\">\n {copy.connect_more_accounts_button}\n </Text>\n </Button>\n </Box>\n <ConnectDrawer\n onClose={() => setIsConnectAccountsOpen(false)}\n showConnectWidget={isConnectAccountsOpen}\n title={connectCopy.mini_title}\n />\n </>\n )\n }\n\n return (\n <Stack sx={{ gap: 16 }}>\n <Box sx={{ border: `1px solid ${theme.palette.divider}`, borderRadius: 2 }}>\n {transactions\n .slice(0, maxVisible)\n .sort((a, b) => b.date - a.date)\n .map((item, index) => (\n <Stack\n key={index}\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n gap: 16,\n pl: 24,\n pt: 14,\n }}\n >\n <Stack sx={{ pb: 14 }}>\n <MerchantLogo\n categoryGuid={item.top_level_category_guid || ''}\n merchantGuid={item.merchant_guid || ''}\n size={32}\n />\n </Stack>\n <Stack\n key={item.guid || index}\n sx={{\n alignItems: amountPosition,\n flexDirection: 'row',\n gap: 12,\n justifyContent: 'space-between',\n ...(index < Math.min(transactions.length, maxVisible) - 1 && {\n borderBottom: `1px solid ${theme.palette.divider}`,\n }),\n pb: 13,\n pr: 24,\n width: '100%',\n }}\n >\n <Stack>\n <P bold={true} variant=\"body1\">\n {item.description}\n </P>\n <Stack sx={{ flexDirection: 'row', alignItems: 'center', gap: 4 }}>\n {!!secondaryIcon && secondaryIcon}\n <Text variant=\"caption\">{formatDate(item.date)}</Text>\n </Stack>\n </Stack>\n\n <P bold={true} sx={{ color: amountColor, flexShrink: 0 }} variant=\"body1\">\n {formatCurrency(item.amount, '0,0.00')}\n </P>\n </Stack>\n </Stack>\n ))}\n </Box>\n\n {hasMoreTransactions && (\n <>\n <Box>\n <Button\n endIcon={<ChevronRight />}\n onClick={() => setIsOpen(true)}\n size=\"small\"\n sx={{ my: 0, px: 16, py: 12, width: '100%' }}\n >\n <Text bold={true} variant=\"body1\">\n {remainingCount}&nbsp;\n {\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_more_transactions\n }\n </Text>\n </Button>\n </Box>\n <Drawer\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n title={\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_transactions\n }\n >\n <TransactionList transaction={updatedTransactions} />\n </Drawer>\n </>\n )}\n </Stack>\n )\n}\n\nexport default Transactions\n"],"mappings":"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"}
@@ -97,7 +97,10 @@ var Q = (t) => t * (180 / Math.PI), Z = (t, r) => [
97
97
  }, b = (t, r) => ({
98
98
  [O.DateOfBirth]: (e) => T(/* @__PURE__ */ new Date(Number(e) * 1e3), "MMM d, yyyy"),
99
99
  [O.MonthlyIncome]: (e) => S(Number(e), "0.00")
100
- })[t]?.(r) ?? String(r), it = (t) => t !== null ? Math.round(t * 100) : null, at = (t) => A(new Date((/* @__PURE__ */ new Date()).getFullYear(), t - 1, 1), I.MONTH_SHORT), ut = (t) => {
100
+ })[t]?.(r) ?? String(r), it = (t) => t !== null ? Math.round(t * 100) : null, at = (t) => {
101
+ const r = new Date((/* @__PURE__ */ new Date()).getFullYear(), t - 1, 1);
102
+ return A(r, I.MONTH_SHORT);
103
+ }, ut = (t) => {
101
104
  const { good: r, poor: e } = l.daysOfCashOnHand;
102
105
  return t === null ? "MISSING" : t >= r ? "GOOD" : t >= e ? "FAIR" : "OFF_TRACK";
103
106
  }, st = (t) => {