@mx-cartographer/experiences 9.2.4-alpha.al4 → 9.3.0-alph.bb2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accounts/AccountsMiniWidget.es.js +56 -0
- package/dist/accounts/AccountsMiniWidget.es.js.map +1 -0
- package/dist/accounts/AccountsWidget.es.js +75 -0
- package/dist/accounts/AccountsWidget.es.js.map +1 -0
- package/dist/accounts/ConnectMiniWidget.es.js +35 -0
- package/dist/accounts/ConnectMiniWidget.es.js.map +1 -0
- package/dist/accounts/components/AccountListItem.es.js +91 -0
- package/dist/accounts/components/AccountListItem.es.js.map +1 -0
- package/dist/accounts/components/AccountsList.es.js +129 -0
- package/dist/accounts/components/AccountsList.es.js.map +1 -0
- package/dist/accounts/components/AccountsListCompact.es.js +86 -0
- package/dist/accounts/components/AccountsListCompact.es.js.map +1 -0
- package/dist/accounts/components/ConnectImage.es.js +388 -0
- package/dist/accounts/components/ConnectImage.es.js.map +1 -0
- package/dist/accounts/components/ConnectMiniWidgetCard.es.js +27 -0
- package/dist/accounts/components/ConnectMiniWidgetCard.es.js.map +1 -0
- package/dist/accounts/components/ConnectionStatusIcons.es.js +23 -0
- package/dist/accounts/components/ConnectionStatusIcons.es.js.map +1 -0
- package/dist/accounts/components/ConnectionsDrawer.es.js +52 -0
- package/dist/accounts/components/ConnectionsDrawer.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountActions.es.js +134 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountActions.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountActionsRow.es.js +32 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountActionsRow.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountConnection.es.js +158 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountConnection.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailEdit.es.js +119 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailEdit.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetails.es.js +75 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetails.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsChart.es.js +38 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsChart.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.es.js +50 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.es.js +21 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsHeader.es.js +81 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsHeader.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsTab.es.js +22 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsTab.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.es.js +75 -0
- package/dist/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.es.js.map +1 -0
- package/dist/accounts/components/detailsdrawer/Transactions/TransactionsTab.es.js +37 -0
- package/dist/accounts/components/detailsdrawer/Transactions/TransactionsTab.es.js.map +1 -0
- package/dist/accounts/constants/Accounts.d.ts +1 -4
- package/dist/accounts/constants/Accounts.es.js +10 -0
- package/dist/accounts/constants/Accounts.es.js.map +1 -0
- package/dist/accounts/hooks/useGetMergeableAccounts.es.js +11 -0
- package/dist/accounts/hooks/useGetMergeableAccounts.es.js.map +1 -0
- package/dist/accounts/hooks/useUiStore.es.js +12 -0
- package/dist/accounts/hooks/useUiStore.es.js.map +1 -0
- package/dist/accounts/index.es.js +23 -784
- package/dist/accounts/utils/AccountDetails.es.js +28 -0
- package/dist/accounts/utils/AccountDetails.es.js.map +1 -0
- package/dist/accounts/utils/AccountFields.es.js +131 -0
- package/dist/accounts/utils/AccountFields.es.js.map +1 -0
- package/dist/accounts/utils/getConnectionMessages.es.js +131 -0
- package/dist/accounts/utils/getConnectionMessages.es.js.map +1 -0
- package/dist/analytics/SurveyMiniWidget.es.js +117 -0
- package/dist/analytics/SurveyMiniWidget.es.js.map +1 -0
- package/dist/analytics/components/OpenTextField.es.js +23 -0
- package/dist/analytics/components/OpenTextField.es.js.map +1 -0
- package/dist/analytics/components/RatingScale.es.js +56 -0
- package/dist/analytics/components/RatingScale.es.js.map +1 -0
- package/dist/analytics/index.es.js +2 -151
- package/dist/budgets/BubbleBudgetsMiniWidget.es.js +100 -0
- package/dist/budgets/BubbleBudgetsMiniWidget.es.js.map +1 -0
- package/dist/budgets/BubbleBudgetsWidget.es.js +143 -0
- package/dist/budgets/BubbleBudgetsWidget.es.js.map +1 -0
- package/dist/budgets/components/AddBudgets.es.js +31 -0
- package/dist/budgets/components/AddBudgets.es.js.map +1 -0
- package/dist/budgets/components/BubbleBudgets.es.js +47 -0
- package/dist/budgets/components/BubbleBudgets.es.js.map +1 -0
- package/dist/budgets/components/BubbleChart.es.js +59 -0
- package/dist/budgets/components/BubbleChart.es.js.map +1 -0
- package/dist/budgets/components/BudgetDetailsDrawer.es.js +106 -0
- package/dist/budgets/components/BudgetDetailsDrawer.es.js.map +1 -0
- package/dist/budgets/components/BudgetDetailsDrawerV2.es.js +126 -0
- package/dist/budgets/components/BudgetDetailsDrawerV2.es.js.map +1 -0
- package/dist/budgets/components/BudgetList.es.js +44 -0
- package/dist/budgets/components/BudgetList.es.js.map +1 -0
- package/dist/budgets/components/BudgetsEmptyState.es.js +109 -0
- package/dist/budgets/components/BudgetsEmptyState.es.js.map +1 -0
- package/dist/budgets/components/MerchantBudgetDetailsDrawer.es.js +54 -0
- package/dist/budgets/components/MerchantBudgetDetailsDrawer.es.js.map +1 -0
- package/dist/budgets/components/Overview.es.js +129 -0
- package/dist/budgets/components/Overview.es.js.map +1 -0
- package/dist/budgets/components/addbudget/Header.es.js +70 -0
- package/dist/budgets/components/addbudget/Header.es.js.map +1 -0
- package/dist/budgets/components/addbudget/RecalculateBudgetRow.es.js +30 -0
- package/dist/budgets/components/addbudget/RecalculateBudgetRow.es.js.map +1 -0
- package/dist/budgets/components/addbudget/RecalculateBudgets.es.js +62 -0
- package/dist/budgets/components/addbudget/RecalculateBudgets.es.js.map +1 -0
- package/dist/budgets/components/addbudget/UnbudgetedRow.es.js +50 -0
- package/dist/budgets/components/addbudget/UnbudgetedRow.es.js.map +1 -0
- package/dist/budgets/components/bubblechart/Bubble.es.js +128 -0
- package/dist/budgets/components/bubblechart/Bubble.es.js.map +1 -0
- package/dist/budgets/components/bubblechart/Mercury.es.js +29 -0
- package/dist/budgets/components/bubblechart/Mercury.es.js.map +1 -0
- package/dist/budgets/components/budgetdetails/AddSubBudget.es.js +98 -0
- package/dist/budgets/components/budgetdetails/AddSubBudget.es.js.map +1 -0
- package/dist/budgets/components/budgetdetails/BudgetDetails.es.js +66 -0
- package/dist/budgets/components/budgetdetails/BudgetDetails.es.js.map +1 -0
- package/dist/budgets/components/budgetdetails/Header.es.js +48 -0
- package/dist/budgets/components/budgetdetails/Header.es.js.map +1 -0
- package/dist/budgets/components/budgetdetails/SubBudgetList.es.js +98 -0
- package/dist/budgets/components/budgetdetails/SubBudgetList.es.js.map +1 -0
- package/dist/budgets/components/budgetlist/BudgetRow.es.js +71 -0
- package/dist/budgets/components/budgetlist/BudgetRow.es.js.map +1 -0
- package/dist/budgets/components/budgetlist/SubBudgetRow.es.js +62 -0
- package/dist/budgets/components/budgetlist/SubBudgetRow.es.js.map +1 -0
- package/dist/budgets/components/budgetlist/SubBudgetZeroState.es.js +38 -0
- package/dist/budgets/components/budgetlist/SubBudgetZeroState.es.js.map +1 -0
- package/dist/budgets/components/shared/BudgetAmount.es.js +27 -0
- package/dist/budgets/components/shared/BudgetAmount.es.js.map +1 -0
- package/dist/budgets/components/shared/BudgetDetailsTopSection.es.js +84 -0
- package/dist/budgets/components/shared/BudgetDetailsTopSection.es.js.map +1 -0
- package/dist/budgets/index.es.js +6 -1400
- package/dist/budgets/utils/BubblesSVG.es.js +73 -0
- package/dist/budgets/utils/BubblesSVG.es.js.map +1 -0
- package/dist/cashflow/CashflowMiniWidget.es.js +45 -0
- package/dist/cashflow/CashflowMiniWidget.es.js.map +1 -0
- package/dist/cashflow/CashflowOnboarding.es.js +224 -0
- package/dist/cashflow/CashflowOnboarding.es.js.map +1 -0
- package/dist/cashflow/CashflowWidget.es.js +101 -0
- package/dist/cashflow/CashflowWidget.es.js.map +1 -0
- package/dist/cashflow/components/CashflowAmountHeading.es.js +45 -0
- package/dist/cashflow/components/CashflowAmountHeading.es.js.map +1 -0
- package/dist/cashflow/components/CashflowContent.es.js +63 -0
- package/dist/cashflow/components/CashflowContent.es.js.map +1 -0
- package/dist/cashflow/components/CashflowHeading.es.js +101 -0
- package/dist/cashflow/components/CashflowHeading.es.js.map +1 -0
- package/dist/cashflow/components/CashflowWidgetContent.es.js +167 -0
- package/dist/cashflow/components/CashflowWidgetContent.es.js.map +1 -0
- package/dist/cashflow/components/DetailsExpenseHeader.es.js +37 -0
- package/dist/cashflow/components/DetailsExpenseHeader.es.js.map +1 -0
- package/dist/cashflow/components/DetailsExpenseRow.es.js +57 -0
- package/dist/cashflow/components/DetailsExpenseRow.es.js.map +1 -0
- package/dist/cashflow/components/DetailsFooter.es.js +21 -0
- package/dist/cashflow/components/DetailsFooter.es.js.map +1 -0
- package/dist/cashflow/components/DetailsTab.es.js +90 -0
- package/dist/cashflow/components/DetailsTab.es.js.map +1 -0
- package/dist/cashflow/components/RemainingCash.es.js +35 -0
- package/dist/cashflow/components/RemainingCash.es.js.map +1 -0
- package/dist/cashflow/components/SummaryTab.es.js +258 -0
- package/dist/cashflow/components/SummaryTab.es.js.map +1 -0
- package/dist/cashflow/components/onboarding/StepOne.es.js +128 -0
- package/dist/cashflow/components/onboarding/StepOne.es.js.map +1 -0
- package/dist/cashflow/components/onboarding/StepTwo.es.js +26 -0
- package/dist/cashflow/components/onboarding/StepTwo.es.js.map +1 -0
- package/dist/cashflow/constants/CashflowImages.es.js +9 -0
- package/dist/cashflow/constants/CashflowImages.es.js.map +1 -0
- package/dist/cashflow/context/hooks.d.ts +1 -1
- package/dist/cashflow/context/hooks.es.js +12 -0
- package/dist/cashflow/context/hooks.es.js.map +1 -0
- package/dist/cashflow/index.es.js +6 -1058
- package/dist/cashflow/util/Filters.es.js +9 -0
- package/dist/cashflow/util/Filters.es.js.map +1 -0
- package/dist/categories/components/CategoryList.es.js +38 -0
- package/dist/categories/components/CategoryList.es.js.map +1 -0
- package/dist/categories/components/CategoryRow.es.js +65 -0
- package/dist/categories/components/CategoryRow.es.js.map +1 -0
- package/dist/categories/components/CategorySelector.es.js +39 -0
- package/dist/categories/components/CategorySelector.es.js.map +1 -0
- package/dist/categories/components/CategorySelectorDrawer.es.js +24 -0
- package/dist/categories/components/CategorySelectorDrawer.es.js.map +1 -0
- package/dist/categories/components/CustomCategories/AddSubcategory.es.js +46 -0
- package/dist/categories/components/CustomCategories/AddSubcategory.es.js.map +1 -0
- package/dist/categories/components/CustomCategories/CustomCategoryModal.es.js +61 -0
- package/dist/categories/components/CustomCategories/CustomCategoryModal.es.js.map +1 -0
- package/dist/categories/components/CustomCategories/DeleteSubcategory.es.js +26 -0
- package/dist/categories/components/CustomCategories/DeleteSubcategory.es.js.map +1 -0
- package/dist/categories/components/CustomCategories/RenameSubcategory.es.js +29 -0
- package/dist/categories/components/CustomCategories/RenameSubcategory.es.js.map +1 -0
- package/dist/categories/components/SubcategoryList.es.js +41 -0
- package/dist/categories/components/SubcategoryList.es.js.map +1 -0
- package/dist/categories/components/SubcategoryRow.es.js +90 -0
- package/dist/categories/components/SubcategoryRow.es.js.map +1 -0
- package/dist/categories/constants/OnClickEvents.es.js +18 -0
- package/dist/categories/constants/OnClickEvents.es.js.map +1 -0
- package/dist/categories/context/hooks.es.js +12 -0
- package/dist/categories/context/hooks.es.js.map +1 -0
- package/dist/categories/index.es.js +8 -6
- package/dist/common/components/Banner.es.js +39 -0
- package/dist/common/components/Banner.es.js.map +1 -0
- package/dist/common/components/ConnectCard.es.js +58 -0
- package/dist/common/components/ConnectCard.es.js.map +1 -0
- package/dist/common/components/ConnectDrawer.es.js +53 -0
- package/dist/common/components/ConnectDrawer.es.js.map +1 -0
- package/dist/common/components/ConnectStatus.d.ts +6 -0
- package/dist/common/components/ConnectStatus.es.js +39 -0
- package/dist/common/components/ConnectStatus.es.js.map +1 -0
- package/dist/common/components/CurrencyDialog.es.js +119 -0
- package/dist/common/components/CurrencyDialog.es.js.map +1 -0
- package/dist/common/components/CurrencyInput.es.js +49 -0
- package/dist/common/components/CurrencyInput.es.js.map +1 -0
- package/dist/common/components/CurrencyText.es.js +17 -0
- package/dist/common/components/CurrencyText.es.js.map +1 -0
- package/dist/common/components/DataRow.es.js +53 -0
- package/dist/common/components/DataRow.es.js.map +1 -0
- package/dist/common/components/EmptyState.es.js +68 -0
- package/dist/common/components/EmptyState.es.js.map +1 -0
- package/dist/common/components/Error.es.js +86 -0
- package/dist/common/components/Error.es.js.map +1 -0
- package/dist/common/components/ErrorBoundary.es.js +26 -0
- package/dist/common/components/ErrorBoundary.es.js.map +1 -0
- package/dist/common/components/GlobalAccountFilter.es.js +97 -0
- package/dist/common/components/GlobalAccountFilter.es.js.map +1 -0
- package/dist/common/components/IconBacking.es.js +25 -0
- package/dist/common/components/IconBacking.es.js.map +1 -0
- package/dist/common/components/InformationTooltip.es.js +49 -0
- package/dist/common/components/InformationTooltip.es.js.map +1 -0
- package/dist/common/components/ListItemAction.es.js +55 -0
- package/dist/common/components/ListItemAction.es.js.map +1 -0
- package/dist/common/components/ListItemRow.es.js +65 -0
- package/dist/common/components/ListItemRow.es.js.map +1 -0
- package/dist/common/components/ListItemWrapper.es.js +37 -0
- package/dist/common/components/ListItemWrapper.es.js.map +1 -0
- package/dist/common/components/Loader.es.js +17 -0
- package/dist/common/components/Loader.es.js.map +1 -0
- package/dist/common/components/MicroWidgetContainer.es.js +60 -0
- package/dist/common/components/MicroWidgetContainer.es.js.map +1 -0
- package/dist/common/components/MiniWidgetContainer.es.js +77 -0
- package/dist/common/components/MiniWidgetContainer.es.js.map +1 -0
- package/dist/common/components/ResponsiveButton.es.js +37 -0
- package/dist/common/components/ResponsiveButton.es.js.map +1 -0
- package/dist/common/components/SearchBox.es.js +59 -0
- package/dist/common/components/SearchBox.es.js.map +1 -0
- package/dist/common/components/Select.d.ts +1 -1
- package/dist/common/components/Select.es.js +33 -0
- package/dist/common/components/Select.es.js.map +1 -0
- package/dist/common/components/SelectionBox.es.js +45 -0
- package/dist/common/components/SelectionBox.es.js.map +1 -0
- package/dist/common/components/SkeletonLoader.es.js +104 -0
- package/dist/common/components/SkeletonLoader.es.js.map +1 -0
- package/dist/common/components/SubheaderRow.es.js +23 -0
- package/dist/common/components/SubheaderRow.es.js.map +1 -0
- package/dist/common/components/TabContentContainer.es.js +14 -0
- package/dist/common/components/TabContentContainer.es.js.map +1 -0
- package/dist/common/components/TinyBarChart.d.ts +1 -1
- package/dist/common/components/TinyBarChart.es.js +81 -0
- package/dist/common/components/TinyBarChart.es.js.map +1 -0
- package/dist/common/components/WidgetContainer.es.js +146 -0
- package/dist/common/components/WidgetContainer.es.js.map +1 -0
- package/dist/common/components/WidgetDateRangeSelector.es.js +38 -0
- package/dist/common/components/WidgetDateRangeSelector.es.js.map +1 -0
- package/dist/common/components/addaccounts/AddAccounts.es.js +50 -0
- package/dist/common/components/addaccounts/AddAccounts.es.js.map +1 -0
- package/dist/common/components/calendar/Calendar.es.js +148 -0
- package/dist/common/components/calendar/Calendar.es.js.map +1 -0
- package/dist/common/components/calendar/Day.es.js +82 -0
- package/dist/common/components/calendar/Day.es.js.map +1 -0
- package/dist/common/components/calendar/Header.es.js +42 -0
- package/dist/common/components/calendar/Header.es.js.map +1 -0
- package/dist/common/components/charts/Donut.es.js +82 -0
- package/dist/common/components/charts/Donut.es.js.map +1 -0
- package/dist/common/components/charts/LineChart.es.js +195 -0
- package/dist/common/components/charts/LineChart.es.js.map +1 -0
- package/dist/common/components/charts/StackedLineChart.es.js +208 -0
- package/dist/common/components/charts/StackedLineChart.es.js.map +1 -0
- package/dist/common/components/charts/StatusBar.es.js +25 -0
- package/dist/common/components/charts/StatusBar.es.js.map +1 -0
- package/dist/common/components/charts/chartSlotProps.d.ts +16 -0
- package/dist/common/components/charts/chartSlotProps.es.js +16 -0
- package/dist/common/components/charts/chartSlotProps.es.js.map +1 -0
- package/dist/common/components/charts/linechart/CustomLegend.es.js +95 -0
- package/dist/common/components/charts/linechart/CustomLegend.es.js.map +1 -0
- package/dist/common/components/charts/linechart/CustomLine.es.js +27 -0
- package/dist/common/components/charts/linechart/CustomLine.es.js.map +1 -0
- package/dist/common/components/charts/linechart/CustomMark.es.js +56 -0
- package/dist/common/components/charts/linechart/CustomMark.es.js.map +1 -0
- package/dist/common/components/charts/linechart/CustomTooltip.es.js +138 -0
- package/dist/common/components/charts/linechart/CustomTooltip.es.js.map +1 -0
- package/dist/common/components/charts/linechart/utils/markerShapes.es.js +26 -0
- package/dist/common/components/charts/linechart/utils/markerShapes.es.js.map +1 -0
- package/dist/common/components/charts/stackedlinechart/CategoryIconLabel.es.js +31 -0
- package/dist/common/components/charts/stackedlinechart/CategoryIconLabel.es.js.map +1 -0
- package/dist/common/components/charts/stackedlinechart/CustomAreaTooltip.es.js +97 -0
- package/dist/common/components/charts/stackedlinechart/CustomAreaTooltip.es.js.map +1 -0
- package/dist/common/components/charts/stackedlinechart/CustomLegend.es.js +54 -0
- package/dist/common/components/charts/stackedlinechart/CustomLegend.es.js.map +1 -0
- package/dist/common/components/charts/stackedlinechart/CustomPointTooltip.es.js +51 -0
- package/dist/common/components/charts/stackedlinechart/CustomPointTooltip.es.js.map +1 -0
- package/dist/common/components/daterangeselector/DateRangeSelector.es.js +262 -0
- package/dist/common/components/daterangeselector/DateRangeSelector.es.js.map +1 -0
- package/dist/common/components/dialog/Dialog.es.js +58 -0
- package/dist/common/components/dialog/Dialog.es.js.map +1 -0
- package/dist/common/components/donuts/MultiSegmentDonut.es.js +53 -0
- package/dist/common/components/donuts/MultiSegmentDonut.es.js.map +1 -0
- package/dist/common/components/donuts/SingleSegmentDonut.es.js +50 -0
- package/dist/common/components/donuts/SingleSegmentDonut.es.js.map +1 -0
- package/dist/common/components/drawer/Drawer.es.js +57 -0
- package/dist/common/components/drawer/Drawer.es.js.map +1 -0
- package/dist/common/components/drawer/Footer.es.js +31 -0
- package/dist/common/components/drawer/Footer.es.js.map +1 -0
- package/dist/common/components/drawer/Header.es.js +52 -0
- package/dist/common/components/drawer/Header.es.js.map +1 -0
- package/dist/common/components/globalaccountfilter/GlobalAccountFilterList.es.js +133 -0
- package/dist/common/components/globalaccountfilter/GlobalAccountFilterList.es.js.map +1 -0
- package/dist/common/components/listitems/CollapseExpandListItem.es.js +41 -0
- package/dist/common/components/listitems/CollapseExpandListItem.es.js.map +1 -0
- package/dist/common/components/listitems/ToggleButtonListItem.es.js +54 -0
- package/dist/common/components/listitems/ToggleButtonListItem.es.js.map +1 -0
- package/dist/common/components/listitems/ToggleListItem.es.js +37 -0
- package/dist/common/components/listitems/ToggleListItem.es.js.map +1 -0
- package/dist/common/constants/Account.es.js +32 -0
- package/dist/common/constants/Account.es.js.map +1 -0
- package/dist/common/constants/Analytics.es.js +139 -0
- package/dist/common/constants/Analytics.es.js.map +1 -0
- package/dist/common/constants/Connect.d.ts +4 -0
- package/dist/common/constants/Connect.es.js +10 -0
- package/dist/common/constants/Connect.es.js.map +1 -0
- package/dist/common/constants/Donut.es.js +7 -0
- package/dist/common/constants/Donut.es.js.map +1 -0
- package/dist/common/constants/FinStrong.es.js +33 -0
- package/dist/common/constants/FinStrong.es.js.map +1 -0
- package/dist/common/constants/ScheduledPayment.es.js +40 -0
- package/dist/common/constants/ScheduledPayment.es.js.map +1 -0
- package/dist/common/constants/Sizes.es.js +9 -0
- package/dist/common/constants/Sizes.es.js.map +1 -0
- package/dist/common/constants/SpendingPlan.es.js +10 -0
- package/dist/common/constants/SpendingPlan.es.js.map +1 -0
- package/dist/common/constants/index.d.ts +1 -0
- package/dist/common/context/GlobalDataProvider.es.js +19 -0
- package/dist/common/context/GlobalDataProvider.es.js.map +1 -0
- package/dist/common/context/WidgetContainerProvider.es.js +16 -0
- package/dist/common/context/WidgetContainerProvider.es.js.map +1 -0
- package/dist/common/context/hooks.es.js +46 -0
- package/dist/common/context/hooks.es.js.map +1 -0
- package/dist/common/hooks/useAccountDisplayName.es.js +13 -0
- package/dist/common/hooks/useAccountDisplayName.es.js.map +1 -0
- package/dist/common/hooks/useAriaLive.es.js +34 -0
- package/dist/common/hooks/useAriaLive.es.js.map +1 -0
- package/dist/common/hooks/useCombineEvents.es.js +22 -0
- package/dist/common/hooks/useCombineEvents.es.js.map +1 -0
- package/dist/common/hooks/useDimensions.es.js +41 -0
- package/dist/common/hooks/useDimensions.es.js.map +1 -0
- package/dist/common/hooks/useInsightsEnabled.es.js +13 -0
- package/dist/common/hooks/useInsightsEnabled.es.js.map +1 -0
- package/dist/common/hooks/usePrevious.es.js +13 -0
- package/dist/common/hooks/usePrevious.es.js.map +1 -0
- package/dist/common/hooks/useScreenSize.es.js +26 -0
- package/dist/common/hooks/useScreenSize.es.js.map +1 -0
- package/dist/common/hooks/useWidgetHeaderStyles.es.js +46 -0
- package/dist/common/hooks/useWidgetHeaderStyles.es.js.map +1 -0
- package/dist/common/hooks/useWidgetLoadTimer.d.ts +1 -0
- package/dist/common/hooks/useWidgetLoadTimer.es.js +24 -0
- package/dist/common/hooks/useWidgetLoadTimer.es.js.map +1 -0
- package/dist/common/index.es.js +154 -310
- package/dist/common/types/Charts.d.ts +10 -0
- package/dist/common/utils/AccountDisplayName.es.js +14 -0
- package/dist/common/utils/AccountDisplayName.es.js.map +1 -0
- package/dist/common/utils/AccountFilter.es.js +31 -0
- package/dist/common/utils/AccountFilter.es.js.map +1 -0
- package/dist/common/utils/Analytics.es.js +31 -0
- package/dist/common/utils/Analytics.es.js.map +1 -0
- package/dist/common/utils/PostMessage.es.js +29 -0
- package/dist/common/utils/PostMessage.es.js.map +1 -0
- package/dist/common/utils/Theme.es.js +96 -0
- package/dist/common/utils/Theme.es.js.map +1 -0
- package/dist/core/api/AccountApi.es.js +22 -0
- package/dist/core/api/AccountApi.es.js.map +1 -0
- package/dist/core/api/AnalyticsApi.es.js +34 -0
- package/dist/core/api/AnalyticsApi.es.js.map +1 -0
- package/dist/core/api/AppDataApi.es.js +14 -0
- package/dist/core/api/AppDataApi.es.js.map +1 -0
- package/dist/core/api/BannerApi.es.js +23 -0
- package/dist/core/api/BannerApi.es.js.map +1 -0
- package/dist/core/api/BeatApi.es.js +24 -0
- package/dist/core/api/BeatApi.es.js.map +1 -0
- package/dist/core/api/BudgetsApi.es.js +28 -0
- package/dist/core/api/BudgetsApi.es.js.map +1 -0
- package/dist/core/api/CategoryApi.es.js +29 -0
- package/dist/core/api/CategoryApi.es.js.map +1 -0
- package/dist/core/api/FinstrongApi.es.js +22 -0
- package/dist/core/api/FinstrongApi.es.js.map +1 -0
- package/dist/core/api/GlobalCopyApi.es.js +14 -0
- package/dist/core/api/GlobalCopyApi.es.js.map +1 -0
- package/dist/core/api/GoalApi.es.js +28 -0
- package/dist/core/api/GoalApi.es.js.map +1 -0
- package/dist/core/api/HelpApi.es.js +14 -0
- package/dist/core/api/HelpApi.es.js.map +1 -0
- package/dist/core/api/HoldingApi.es.js +15 -0
- package/dist/core/api/HoldingApi.es.js.map +1 -0
- package/dist/core/api/MerchantApi.es.js +18 -0
- package/dist/core/api/MerchantApi.es.js.map +1 -0
- package/dist/core/api/NotificationApi.es.js +19 -0
- package/dist/core/api/NotificationApi.es.js.map +1 -0
- package/dist/core/api/RepeatingTransactionsApi.es.js +17 -0
- package/dist/core/api/RepeatingTransactionsApi.es.js.map +1 -0
- package/dist/core/api/ScheduledPaymentsApi.es.js +22 -0
- package/dist/core/api/ScheduledPaymentsApi.es.js.map +1 -0
- package/dist/core/api/SettingsApi.es.js +24 -0
- package/dist/core/api/SettingsApi.es.js.map +1 -0
- package/dist/core/api/TransactionApi.es.js +55 -0
- package/dist/core/api/TransactionApi.es.js.map +1 -0
- package/dist/core/api/UserApi.es.js +16 -0
- package/dist/core/api/UserApi.es.js.map +1 -0
- package/dist/core/api/WidgetApi.es.js +14 -0
- package/dist/core/api/WidgetApi.es.js.map +1 -0
- package/dist/core/constants/ApiEndpoints.es.js +51 -0
- package/dist/core/constants/ApiEndpoints.es.js.map +1 -0
- package/dist/core/constants/Category.es.js +299 -0
- package/dist/core/constants/Category.es.js.map +1 -0
- package/dist/core/constants/DateFormats.es.js +55 -0
- package/dist/core/constants/DateFormats.es.js.map +1 -0
- package/dist/core/constants/Debts.es.js +8 -0
- package/dist/core/constants/Debts.es.js.map +1 -0
- package/dist/core/constants/DefaultConfig.es.js +109 -0
- package/dist/core/constants/DefaultConfig.es.js.map +1 -0
- package/dist/core/constants/Help.es.js +183 -0
- package/dist/core/constants/Help.es.js.map +1 -0
- package/dist/core/constants/Investments.es.js +56 -0
- package/dist/core/constants/Investments.es.js.map +1 -0
- package/dist/core/constants/Numbers.es.js +9 -0
- package/dist/core/constants/Numbers.es.js.map +1 -0
- package/dist/core/constants/Table.es.js +18 -0
- package/dist/core/constants/Table.es.js.map +1 -0
- package/dist/core/constants/Transaction.es.js +43 -0
- package/dist/core/constants/Transaction.es.js.map +1 -0
- package/dist/core/constants/repeatingTransactions.es.js +8 -0
- package/dist/core/constants/repeatingTransactions.es.js.map +1 -0
- package/dist/core/index.es.js +134 -107
- package/dist/core/stores/AccountStore.es.js +247 -0
- package/dist/core/stores/AccountStore.es.js.map +1 -0
- package/dist/core/stores/AnalyticsStore.es.js +55 -0
- package/dist/core/stores/AnalyticsStore.es.js.map +1 -0
- package/dist/core/stores/AppDataStore.d.ts +2 -2
- package/dist/core/stores/AppDataStore.es.js +61 -0
- package/dist/core/stores/AppDataStore.es.js.map +1 -0
- package/dist/core/stores/BeatStore.es.js +43 -0
- package/dist/core/stores/BeatStore.es.js.map +1 -0
- package/dist/core/stores/BudgetsStore.es.js +155 -0
- package/dist/core/stores/BudgetsStore.es.js.map +1 -0
- package/dist/core/stores/CashflowStore.es.js +62 -0
- package/dist/core/stores/CashflowStore.es.js.map +1 -0
- package/dist/core/stores/CategoryStore.es.js +147 -0
- package/dist/core/stores/CategoryStore.es.js.map +1 -0
- package/dist/core/stores/ConnectStore.es.js +19 -0
- package/dist/core/stores/ConnectStore.es.js.map +1 -0
- package/dist/core/stores/DebtsStore.es.js +40 -0
- package/dist/core/stores/DebtsStore.es.js.map +1 -0
- package/dist/core/stores/FinstrongStore.es.js +156 -0
- package/dist/core/stores/FinstrongStore.es.js.map +1 -0
- package/dist/core/stores/GlobalCopyStore.es.js +32 -0
- package/dist/core/stores/GlobalCopyStore.es.js.map +1 -0
- package/dist/core/stores/GlobalStore.es.js +87 -0
- package/dist/core/stores/GlobalStore.es.js.map +1 -0
- package/dist/core/stores/GlobalUiStore.d.ts +2 -2
- package/dist/core/stores/GlobalUiStore.es.js +68 -0
- package/dist/core/stores/GlobalUiStore.es.js.map +1 -0
- package/dist/core/stores/GoalStore.es.js +233 -0
- package/dist/core/stores/GoalStore.es.js.map +1 -0
- package/dist/core/stores/HelpStore.d.ts +1 -1
- package/dist/core/stores/HelpStore.es.js +45 -0
- package/dist/core/stores/HelpStore.es.js.map +1 -0
- package/dist/core/stores/HoldingStore.es.js +60 -0
- package/dist/core/stores/HoldingStore.es.js.map +1 -0
- package/dist/core/stores/MerchantStore.es.js +28 -0
- package/dist/core/stores/MerchantStore.es.js.map +1 -0
- package/dist/core/stores/NetWorthStore.es.js +73 -0
- package/dist/core/stores/NetWorthStore.es.js.map +1 -0
- package/dist/core/stores/NotificationStore.es.js +46 -0
- package/dist/core/stores/NotificationStore.es.js.map +1 -0
- package/dist/core/stores/RecurringTransactionsStore.es.js +198 -0
- package/dist/core/stores/RecurringTransactionsStore.es.js.map +1 -0
- package/dist/core/stores/SettingsStore.d.ts +1 -1
- package/dist/core/stores/SettingsStore.es.js +184 -0
- package/dist/core/stores/SettingsStore.es.js.map +1 -0
- package/dist/core/stores/TransactionStore.es.js +372 -0
- package/dist/core/stores/TransactionStore.es.js.map +1 -0
- package/dist/core/stores/TrendsStore.es.js +51 -0
- package/dist/core/stores/TrendsStore.es.js.map +1 -0
- package/dist/core/stores/UserStore.es.js +49 -0
- package/dist/core/stores/UserStore.es.js.map +1 -0
- package/dist/core/types/Account.es.js +118 -0
- package/dist/core/types/Account.es.js.map +1 -0
- package/dist/core/types/Beat.es.js +8 -0
- package/dist/core/types/Beat.es.js.map +1 -0
- package/dist/core/types/Expense.es.js +11 -0
- package/dist/core/types/Expense.es.js.map +1 -0
- package/dist/core/types/Finstrong.es.js +14 -0
- package/dist/core/types/Finstrong.es.js.map +1 -0
- package/dist/core/types/Goal.es.js +14 -0
- package/dist/core/types/Goal.es.js.map +1 -0
- package/dist/core/types/Notification.es.js +17 -0
- package/dist/core/types/Notification.es.js.map +1 -0
- package/dist/core/types/RepeatingTransaction.es.js +17 -0
- package/dist/core/types/RepeatingTransaction.es.js.map +1 -0
- package/dist/core/types/ScreenSize.es.js +8 -0
- package/dist/core/types/ScreenSize.es.js.map +1 -0
- package/dist/core/types/Transaction.es.js +11 -0
- package/dist/core/types/Transaction.es.js.map +1 -0
- package/dist/core/utils/AccountUtils.es.js +27 -0
- package/dist/core/utils/AccountUtils.es.js.map +1 -0
- package/dist/core/utils/BeatUtils.es.js +50 -0
- package/dist/core/utils/BeatUtils.es.js.map +1 -0
- package/dist/core/utils/BudgetUtil.es.js +71 -0
- package/dist/core/utils/BudgetUtil.es.js.map +1 -0
- package/dist/core/utils/CategoryUtil.es.js +60 -0
- package/dist/core/utils/CategoryUtil.es.js.map +1 -0
- package/dist/core/utils/DateUtil.es.js +70 -0
- package/dist/core/utils/DateUtil.es.js.map +1 -0
- package/dist/core/utils/DebtUtils.es.js +144 -0
- package/dist/core/utils/DebtUtils.es.js.map +1 -0
- package/dist/core/utils/Fetch.es.js +74 -0
- package/dist/core/utils/Fetch.es.js.map +1 -0
- package/dist/core/utils/FinstrongUtils.es.js +11 -0
- package/dist/core/utils/FinstrongUtils.es.js.map +1 -0
- package/dist/core/utils/GoalsUtil.es.js +113 -0
- package/dist/core/utils/GoalsUtil.es.js.map +1 -0
- package/dist/core/utils/HelpUtil.es.js +23 -0
- package/dist/core/utils/HelpUtil.es.js.map +1 -0
- package/dist/core/utils/InvestmentUtil.es.js +77 -0
- package/dist/core/utils/InvestmentUtil.es.js.map +1 -0
- package/dist/core/utils/Localization.es.js +34 -0
- package/dist/core/utils/Localization.es.js.map +1 -0
- package/dist/core/utils/NetWorthUtils.es.js +115 -0
- package/dist/core/utils/NetWorthUtils.es.js.map +1 -0
- package/dist/core/utils/NotificationUtils.es.js +17 -0
- package/dist/core/utils/NotificationUtils.es.js.map +1 -0
- package/dist/core/utils/NumberFormatting.es.js +31 -0
- package/dist/core/utils/NumberFormatting.es.js.map +1 -0
- package/dist/core/utils/RecurringTransactionsUtil.es.js +285 -0
- package/dist/core/utils/RecurringTransactionsUtil.es.js.map +1 -0
- package/dist/core/utils/SettingsUtil.es.js +56 -0
- package/dist/core/utils/SettingsUtil.es.js.map +1 -0
- package/dist/core/utils/TransactionUtils.es.js +113 -0
- package/dist/core/utils/TransactionUtils.es.js.map +1 -0
- package/dist/core/utils/TrendsUtil.es.js +72 -0
- package/dist/core/utils/TrendsUtil.es.js.map +1 -0
- package/dist/core/utils/UserUtils.es.js +6 -0
- package/dist/core/utils/UserUtils.es.js.map +1 -0
- package/dist/dashboard/Dashboard.es.js +99 -0
- package/dist/dashboard/Dashboard.es.js.map +1 -0
- package/dist/dashboard/Greeting.es.js +49 -0
- package/dist/dashboard/Greeting.es.js.map +1 -0
- package/dist/dashboard/constants/Dashboard.es.js +8 -0
- package/dist/dashboard/constants/Dashboard.es.js.map +1 -0
- package/dist/dashboard/index.es.js +4 -153
- package/dist/debts/DebtsWidget.es.js +138 -0
- package/dist/debts/DebtsWidget.es.js.map +1 -0
- package/dist/debts/components/DebtDrawer.es.js +26 -0
- package/dist/debts/components/DebtDrawer.es.js.map +1 -0
- package/dist/debts/components/DebtsChart.es.js +135 -0
- package/dist/debts/components/DebtsChart.es.js.map +1 -0
- package/dist/debts/components/DebtsTable.es.js +193 -0
- package/dist/debts/components/DebtsTable.es.js.map +1 -0
- package/dist/debts/components/PaydownDrawer.es.js +19 -0
- package/dist/debts/components/PaydownDrawer.es.js.map +1 -0
- package/dist/debts/components/SnowballCard.es.js +87 -0
- package/dist/debts/components/SnowballCard.es.js.map +1 -0
- package/dist/debts/components/SnowballDrawer.es.js +457 -0
- package/dist/debts/components/SnowballDrawer.es.js.map +1 -0
- package/dist/debts/components/actions/DebtsPriorityAction.es.js +37 -0
- package/dist/debts/components/actions/DebtsPriorityAction.es.js.map +1 -0
- package/dist/debts/components/actions/ExtraPaymentAction.es.js +43 -0
- package/dist/debts/components/actions/ExtraPaymentAction.es.js.map +1 -0
- package/dist/debts/components/actions/InterestRateAction.es.js +41 -0
- package/dist/debts/components/actions/InterestRateAction.es.js.map +1 -0
- package/dist/debts/components/actions/MonthlyPaymentAction.es.js +43 -0
- package/dist/debts/components/actions/MonthlyPaymentAction.es.js.map +1 -0
- package/dist/debts/components/actions/OriginalBalanceAction.es.js +43 -0
- package/dist/debts/components/actions/OriginalBalanceAction.es.js.map +1 -0
- package/dist/debts/components/debtsdrawer/DebtDetailsChart.es.js +43 -0
- package/dist/debts/components/debtsdrawer/DebtDetailsChart.es.js.map +1 -0
- package/dist/debts/components/debtsdrawer/DebtDetailsContent.es.js +54 -0
- package/dist/debts/components/debtsdrawer/DebtDetailsContent.es.js.map +1 -0
- package/dist/debts/components/debtsdrawer/DebtDetailsTab.es.js +40 -0
- package/dist/debts/components/debtsdrawer/DebtDetailsTab.es.js.map +1 -0
- package/dist/debts/components/debtsdrawer/DebtScheduleTab.es.js +108 -0
- package/dist/debts/components/debtsdrawer/DebtScheduleTab.es.js.map +1 -0
- package/dist/debts/components/debtsdrawer/DebtStatusCard.es.js +86 -0
- package/dist/debts/components/debtsdrawer/DebtStatusCard.es.js.map +1 -0
- package/dist/debts/components/debtspaydown/PaydownButton.es.js +32 -0
- package/dist/debts/components/debtspaydown/PaydownButton.es.js.map +1 -0
- package/dist/debts/components/debtspaydown/PaydownContent.es.js +77 -0
- package/dist/debts/components/debtspaydown/PaydownContent.es.js.map +1 -0
- package/dist/debts/components/debtspriority/DebtsPriorityButton.es.js +32 -0
- package/dist/debts/components/debtspriority/DebtsPriorityButton.es.js.map +1 -0
- package/dist/debts/components/debtspriority/DebtsPrioriyPopover.es.js +78 -0
- package/dist/debts/components/debtspriority/DebtsPrioriyPopover.es.js.map +1 -0
- package/dist/debts/components/debtstable/AccountCell.es.js +30 -0
- package/dist/debts/components/debtstable/AccountCell.es.js.map +1 -0
- package/dist/debts/components/debtstable/PriorityCell.es.js +35 -0
- package/dist/debts/components/debtstable/PriorityCell.es.js.map +1 -0
- package/dist/debts/hooks/useDebtsUiStore.es.js +12 -0
- package/dist/debts/hooks/useDebtsUiStore.es.js.map +1 -0
- package/dist/debts/index.es.js +6 -1496
- package/dist/debts/utils/DebtsChart.es.js +15 -0
- package/dist/debts/utils/DebtsChart.es.js.map +1 -0
- package/dist/debts/utils/DebtsTable.es.js +17 -0
- package/dist/debts/utils/DebtsTable.es.js.map +1 -0
- package/dist/debts/utils/SnowballCard.es.js +40 -0
- package/dist/debts/utils/SnowballCard.es.js.map +1 -0
- package/dist/finstrong/FinancialStrengthCard.es.js +127 -0
- package/dist/finstrong/FinancialStrengthCard.es.js.map +1 -0
- package/dist/finstrong/FinstrongWidget.es.js +175 -0
- package/dist/finstrong/FinstrongWidget.es.js.map +1 -0
- package/dist/finstrong/components/ConnectMoreAccountsCard.es.js +80 -0
- package/dist/finstrong/components/ConnectMoreAccountsCard.es.js.map +1 -0
- package/dist/finstrong/components/CreditScore/CreditScoreContent.es.js +39 -0
- package/dist/finstrong/components/CreditScore/CreditScoreContent.es.js.map +1 -0
- package/dist/finstrong/components/CreditScore/CreditScoreHeader.es.js +22 -0
- package/dist/finstrong/components/CreditScore/CreditScoreHeader.es.js.map +1 -0
- package/dist/finstrong/components/CreditScoreGraph.es.js +61 -0
- package/dist/finstrong/components/CreditScoreGraph.es.js.map +1 -0
- package/dist/finstrong/components/FinancialStrengthGraph.es.js +44 -0
- package/dist/finstrong/components/FinancialStrengthGraph.es.js.map +1 -0
- package/dist/finstrong/components/HaveManageableDebt/DebtPaymentTabContent.es.js +43 -0
- package/dist/finstrong/components/HaveManageableDebt/DebtPaymentTabContent.es.js.map +1 -0
- package/dist/finstrong/components/HaveManageableDebt/HaveManageableDebtComponent.es.js +88 -0
- package/dist/finstrong/components/HaveManageableDebt/HaveManageableDebtComponent.es.js.map +1 -0
- package/dist/finstrong/components/HaveManageableDebt/HaveManageableDebtProgressBar.es.js +73 -0
- package/dist/finstrong/components/HaveManageableDebt/HaveManageableDebtProgressBar.es.js.map +1 -0
- package/dist/finstrong/components/HaveManageableDebt/IncomeTabContent.es.js +40 -0
- package/dist/finstrong/components/HaveManageableDebt/IncomeTabContent.es.js.map +1 -0
- package/dist/finstrong/components/HealthChart.es.js +117 -0
- package/dist/finstrong/components/HealthChart.es.js.map +1 -0
- package/dist/finstrong/components/KeyIndicatorsBorrowTab.es.js +71 -0
- package/dist/finstrong/components/KeyIndicatorsBorrowTab.es.js.map +1 -0
- package/dist/finstrong/components/KeyIndicatorsDrawer.es.js +92 -0
- package/dist/finstrong/components/KeyIndicatorsDrawer.es.js.map +1 -0
- package/dist/finstrong/components/KeyIndicatorsSaveTab.es.js +73 -0
- package/dist/finstrong/components/KeyIndicatorsSaveTab.es.js.map +1 -0
- package/dist/finstrong/components/KeyIndicatorsSpendTab.es.js +58 -0
- package/dist/finstrong/components/KeyIndicatorsSpendTab.es.js.map +1 -0
- package/dist/finstrong/components/KeyIndicatorsTabItem.es.js +65 -0
- package/dist/finstrong/components/KeyIndicatorsTabItem.es.js.map +1 -0
- package/dist/finstrong/components/KeyIndicatorsTabItemDrawer.es.js +93 -0
- package/dist/finstrong/components/KeyIndicatorsTabItemDrawer.es.js.map +1 -0
- package/dist/finstrong/components/KeyIndicatorsTabsWidget.es.js +78 -0
- package/dist/finstrong/components/KeyIndicatorsTabsWidget.es.js.map +1 -0
- package/dist/finstrong/components/MaintainingEmergencySavings/EstimatedContributionCalculator.es.js +170 -0
- package/dist/finstrong/components/MaintainingEmergencySavings/EstimatedContributionCalculator.es.js.map +1 -0
- package/dist/finstrong/components/MaintainingEmergencySavings/MaintainingEmergencySavingsContent.es.js +51 -0
- package/dist/finstrong/components/MaintainingEmergencySavings/MaintainingEmergencySavingsContent.es.js.map +1 -0
- package/dist/finstrong/components/MaintainingEmergencySavings/MaintainingEmergencySavingsSticky.es.js +53 -0
- package/dist/finstrong/components/MaintainingEmergencySavings/MaintainingEmergencySavingsSticky.es.js.map +1 -0
- package/dist/finstrong/components/ManageCreditScore.es.js +52 -0
- package/dist/finstrong/components/ManageCreditScore.es.js.map +1 -0
- package/dist/finstrong/components/ManageDOB.es.js +79 -0
- package/dist/finstrong/components/ManageDOB.es.js.map +1 -0
- package/dist/finstrong/components/MissingData.es.js +51 -0
- package/dist/finstrong/components/MissingData.es.js.map +1 -0
- package/dist/finstrong/components/ProfileDrawer.es.js +124 -0
- package/dist/finstrong/components/ProfileDrawer.es.js.map +1 -0
- package/dist/finstrong/components/ProfileList.es.js +65 -0
- package/dist/finstrong/components/ProfileList.es.js.map +1 -0
- package/dist/finstrong/components/ProfileProgressBar.es.js +32 -0
- package/dist/finstrong/components/ProfileProgressBar.es.js.map +1 -0
- package/dist/finstrong/components/ProgressBar.es.js +53 -0
- package/dist/finstrong/components/ProgressBar.es.js.map +1 -0
- package/dist/finstrong/components/SaveEnoughToLiveOn/AvailableTabContent.es.js +27 -0
- package/dist/finstrong/components/SaveEnoughToLiveOn/AvailableTabContent.es.js.map +1 -0
- package/dist/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnDrawerContent.es.js +51 -0
- package/dist/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnDrawerContent.es.js.map +1 -0
- package/dist/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnProgressBar.es.js +56 -0
- package/dist/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnProgressBar.es.js.map +1 -0
- package/dist/finstrong/components/SaveEnoughToLiveOn/SpendingTabContent.es.js +34 -0
- package/dist/finstrong/components/SaveEnoughToLiveOn/SpendingTabContent.es.js.map +1 -0
- package/dist/finstrong/components/ScoreHistoryDrawer.es.js +90 -0
- package/dist/finstrong/components/ScoreHistoryDrawer.es.js.map +1 -0
- package/dist/finstrong/components/ScoreRubricDrawer.es.js +118 -0
- package/dist/finstrong/components/ScoreRubricDrawer.es.js.map +1 -0
- package/dist/finstrong/components/SpendLessThanYouMake/SpendLessThanYouMakeComponent.es.js +130 -0
- package/dist/finstrong/components/SpendLessThanYouMake/SpendLessThanYouMakeComponent.es.js.map +1 -0
- package/dist/finstrong/components/SpendLessThanYouMake/SpendLessThanYouMakeProgressBar.es.js +50 -0
- package/dist/finstrong/components/SpendLessThanYouMake/SpendLessThanYouMakeProgressBar.es.js.map +1 -0
- package/dist/finstrong/components/StatusChip.es.js +37 -0
- package/dist/finstrong/components/StatusChip.es.js.map +1 -0
- package/dist/finstrong/components/onboarding/Onboarding.es.js +57 -0
- package/dist/finstrong/components/onboarding/Onboarding.es.js.map +1 -0
- package/dist/finstrong/components/onboarding/OnboardingAddMonthlyIncome.es.js +57 -0
- package/dist/finstrong/components/onboarding/OnboardingAddMonthlyIncome.es.js.map +1 -0
- package/dist/finstrong/components/onboarding/OnboardingBirthday.es.js +46 -0
- package/dist/finstrong/components/onboarding/OnboardingBirthday.es.js.map +1 -0
- package/dist/finstrong/components/onboarding/OnboardingCreditScore.es.js +28 -0
- package/dist/finstrong/components/onboarding/OnboardingCreditScore.es.js.map +1 -0
- package/dist/finstrong/components/onboarding/OnboardingStepsDrawer.es.js +313 -0
- package/dist/finstrong/components/onboarding/OnboardingStepsDrawer.es.js.map +1 -0
- package/dist/finstrong/components/onboarding/OnboardingStepsHeader.es.js +25 -0
- package/dist/finstrong/components/onboarding/OnboardingStepsHeader.es.js.map +1 -0
- package/dist/finstrong/components/paybillsontime/PayBillsOnTimeDrawerComponent.es.js +69 -0
- package/dist/finstrong/components/paybillsontime/PayBillsOnTimeDrawerComponent.es.js.map +1 -0
- package/dist/finstrong/components/paybillsontime/PayBillsOnTimeStickyComponent.es.js +38 -0
- package/dist/finstrong/components/paybillsontime/PayBillsOnTimeStickyComponent.es.js.map +1 -0
- package/dist/finstrong/components/shared/Accounts.es.js +102 -0
- package/dist/finstrong/components/shared/Accounts.es.js.map +1 -0
- package/dist/finstrong/components/shared/CustomDoubleBarPlot.es.js +49 -0
- package/dist/finstrong/components/shared/CustomDoubleBarPlot.es.js.map +1 -0
- package/dist/finstrong/components/shared/CustomPieArc.es.js +52 -0
- package/dist/finstrong/components/shared/CustomPieArc.es.js.map +1 -0
- package/dist/finstrong/components/shared/DialScoreCard.es.js +186 -0
- package/dist/finstrong/components/shared/DialScoreCard.es.js.map +1 -0
- package/dist/finstrong/components/shared/DoubleBarChart.es.js +196 -0
- package/dist/finstrong/components/shared/DoubleBarChart.es.js.map +1 -0
- package/dist/finstrong/components/shared/LineGraph.es.js +136 -0
- package/dist/finstrong/components/shared/LineGraph.es.js.map +1 -0
- package/dist/finstrong/components/shared/ScoreHistoryTimeline.es.js +107 -0
- package/dist/finstrong/components/shared/ScoreHistoryTimeline.es.js.map +1 -0
- package/dist/finstrong/components/shared/ScoreHistoryTimelineItem.es.js +40 -0
- package/dist/finstrong/components/shared/ScoreHistoryTimelineItem.es.js.map +1 -0
- package/dist/finstrong/components/shared/TotalCard.es.js +30 -0
- package/dist/finstrong/components/shared/TotalCard.es.js.map +1 -0
- package/dist/finstrong/components/shared/Transactions.es.js +129 -0
- package/dist/finstrong/components/shared/Transactions.es.js.map +1 -0
- package/dist/finstrong/constants/index.es.js +9 -0
- package/dist/finstrong/constants/index.es.js.map +1 -0
- package/dist/finstrong/index.es.js +8 -3912
- package/dist/finstrong/util/finstrongUtils.es.js +206 -0
- package/dist/finstrong/util/finstrongUtils.es.js.map +1 -0
- package/dist/goals/GoalsMicroWidget.es.js +44 -0
- package/dist/goals/GoalsMicroWidget.es.js.map +1 -0
- package/dist/goals/GoalsWidget.es.js +141 -0
- package/dist/goals/GoalsWidget.es.js.map +1 -0
- package/dist/goals/components/AccountSelectionDrawer.es.js +54 -0
- package/dist/goals/components/AccountSelectionDrawer.es.js.map +1 -0
- package/dist/goals/components/AddGoal.es.js +59 -0
- package/dist/goals/components/AddGoal.es.js.map +1 -0
- package/dist/goals/components/GoalDetails.es.js +115 -0
- package/dist/goals/components/GoalDetails.es.js.map +1 -0
- package/dist/goals/components/GoalDetailsDrawer.es.js +83 -0
- package/dist/goals/components/GoalDetailsDrawer.es.js.map +1 -0
- package/dist/goals/components/GoalList.es.js +135 -0
- package/dist/goals/components/GoalList.es.js.map +1 -0
- package/dist/goals/components/GoalStatusCard.es.js +95 -0
- package/dist/goals/components/GoalStatusCard.es.js.map +1 -0
- package/dist/goals/components/ManageGoals.es.js +89 -0
- package/dist/goals/components/ManageGoals.es.js.map +1 -0
- package/dist/goals/components/TabTitle.es.js +19 -0
- package/dist/goals/components/TabTitle.es.js.map +1 -0
- package/dist/goals/components/actions/AccountAction.es.js +28 -0
- package/dist/goals/components/actions/AccountAction.es.js.map +1 -0
- package/dist/goals/components/actions/AddRetirementAccountAction.es.js +56 -0
- package/dist/goals/components/actions/AddRetirementAccountAction.es.js.map +1 -0
- package/dist/goals/components/actions/AmountToSaveAction.es.js +45 -0
- package/dist/goals/components/actions/AmountToSaveAction.es.js.map +1 -0
- package/dist/goals/components/actions/BirthdayAction.es.js +44 -0
- package/dist/goals/components/actions/BirthdayAction.es.js.map +1 -0
- package/dist/goals/components/actions/ChangeAccountAction.es.js +127 -0
- package/dist/goals/components/actions/ChangeAccountAction.es.js.map +1 -0
- package/dist/goals/components/actions/ContributionAction.es.js +49 -0
- package/dist/goals/components/actions/ContributionAction.es.js.map +1 -0
- package/dist/goals/components/actions/GoalNameAction.es.js +41 -0
- package/dist/goals/components/actions/GoalNameAction.es.js.map +1 -0
- package/dist/goals/components/actions/InterestRateAction.es.js +42 -0
- package/dist/goals/components/actions/InterestRateAction.es.js.map +1 -0
- package/dist/goals/components/actions/MonthlyPaymentAction.es.js +47 -0
- package/dist/goals/components/actions/MonthlyPaymentAction.es.js.map +1 -0
- package/dist/goals/components/actions/OriginalBalanceAction.es.js +47 -0
- package/dist/goals/components/actions/OriginalBalanceAction.es.js.map +1 -0
- package/dist/goals/components/actions/RetirementAgeAction.es.js +42 -0
- package/dist/goals/components/actions/RetirementAgeAction.es.js.map +1 -0
- package/dist/goals/components/addgoal/AddGoalListItem.es.js +72 -0
- package/dist/goals/components/addgoal/AddGoalListItem.es.js.map +1 -0
- package/dist/goals/components/managegoals/CompleteListItem.es.js +59 -0
- package/dist/goals/components/managegoals/CompleteListItem.es.js.map +1 -0
- package/dist/goals/components/managegoals/OngoingListItem.es.js +83 -0
- package/dist/goals/components/managegoals/OngoingListItem.es.js.map +1 -0
- package/dist/goals/components/micro/GoalMicroStatusCard.es.js +64 -0
- package/dist/goals/components/micro/GoalMicroStatusCard.es.js.map +1 -0
- package/dist/goals/components/micro/GoalsMicroEmptyState.es.js +35 -0
- package/dist/goals/components/micro/GoalsMicroEmptyState.es.js.map +1 -0
- package/dist/goals/index.es.js +4 -1088
- package/dist/help/HelpWidget.es.js +25 -0
- package/dist/help/HelpWidget.es.js.map +1 -0
- package/dist/help/components/Help.es.js +48 -0
- package/dist/help/components/Help.es.js.map +1 -0
- package/dist/help/components/HelpContent.es.js +25 -0
- package/dist/help/components/HelpContent.es.js.map +1 -0
- package/dist/help/components/HelpList.es.js +142 -0
- package/dist/help/components/HelpList.es.js.map +1 -0
- package/dist/help/components/content/BottomImageContent.es.js +51 -0
- package/dist/help/components/content/BottomImageContent.es.js.map +1 -0
- package/dist/help/components/content/ContentItem.es.js +46 -0
- package/dist/help/components/content/ContentItem.es.js.map +1 -0
- package/dist/help/components/content/Header.es.js +83 -0
- package/dist/help/components/content/Header.es.js.map +1 -0
- package/dist/help/components/content/LeftImageContent.es.js +57 -0
- package/dist/help/components/content/LeftImageContent.es.js.map +1 -0
- package/dist/help/components/content/NoImageContent.es.js +15 -0
- package/dist/help/components/content/NoImageContent.es.js.map +1 -0
- package/dist/help/components/content/RightImageContent.es.js +55 -0
- package/dist/help/components/content/RightImageContent.es.js.map +1 -0
- package/dist/help/components/content/TopImageContent.es.js +51 -0
- package/dist/help/components/content/TopImageContent.es.js.map +1 -0
- package/dist/help/components/content/section/Accounts.es.js +159 -0
- package/dist/help/components/content/section/Accounts.es.js.map +1 -0
- package/dist/help/components/content/section/Budgets.es.js +66 -0
- package/dist/help/components/content/section/Budgets.es.js.map +1 -0
- package/dist/help/components/content/section/CashFlow.es.js +47 -0
- package/dist/help/components/content/section/CashFlow.es.js.map +1 -0
- package/dist/help/components/content/section/Debts.es.js +168 -0
- package/dist/help/components/content/section/Debts.es.js.map +1 -0
- package/dist/help/components/content/section/General.es.js +84 -0
- package/dist/help/components/content/section/General.es.js.map +1 -0
- package/dist/help/components/content/section/Goals.es.js +112 -0
- package/dist/help/components/content/section/Goals.es.js.map +1 -0
- package/dist/help/components/content/section/Insights.es.js +79 -0
- package/dist/help/components/content/section/Insights.es.js.map +1 -0
- package/dist/help/components/content/section/Investments.es.js +48 -0
- package/dist/help/components/content/section/Investments.es.js.map +1 -0
- package/dist/help/components/content/section/Mobile.es.js +48 -0
- package/dist/help/components/content/section/Mobile.es.js.map +1 -0
- package/dist/help/components/content/section/NetWorth.es.js +61 -0
- package/dist/help/components/content/section/NetWorth.es.js.map +1 -0
- package/dist/help/components/content/section/Notifications.es.js +53 -0
- package/dist/help/components/content/section/Notifications.es.js.map +1 -0
- package/dist/help/components/content/section/RecurringTransactions.es.js +72 -0
- package/dist/help/components/content/section/RecurringTransactions.es.js.map +1 -0
- package/dist/help/components/content/section/Spending.es.js +63 -0
- package/dist/help/components/content/section/Spending.es.js.map +1 -0
- package/dist/help/components/content/section/Transactions.es.js +209 -0
- package/dist/help/components/content/section/Transactions.es.js.map +1 -0
- package/dist/help/components/content/section/Trends.es.js +43 -0
- package/dist/help/components/content/section/Trends.es.js.map +1 -0
- package/dist/help/components/content/section/index.es.js +37 -0
- package/dist/help/components/content/section/index.es.js.map +1 -0
- package/dist/help/components/requestsupport/ContactSupport.es.js +90 -0
- package/dist/help/components/requestsupport/ContactSupport.es.js.map +1 -0
- package/dist/help/components/requestsupport/HelpByCategoryList.es.js +99 -0
- package/dist/help/components/requestsupport/HelpByCategoryList.es.js.map +1 -0
- package/dist/help/components/requestsupport/MissingInstitution.es.js +103 -0
- package/dist/help/components/requestsupport/MissingInstitution.es.js.map +1 -0
- package/dist/help/components/requestsupport/PopularTopicsDrawer.es.js +52 -0
- package/dist/help/components/requestsupport/PopularTopicsDrawer.es.js.map +1 -0
- package/dist/help/components/requestsupport/PopularTopicsList.es.js +24 -0
- package/dist/help/components/requestsupport/PopularTopicsList.es.js.map +1 -0
- package/dist/help/components/requestsupport/PopularTopicsRow.es.js +40 -0
- package/dist/help/components/requestsupport/PopularTopicsRow.es.js.map +1 -0
- package/dist/help/components/requestsupport/RequestSupport.es.js +172 -0
- package/dist/help/components/requestsupport/RequestSupport.es.js.map +1 -0
- package/dist/help/components/requestsupport/RequestSupportFooter.es.js +46 -0
- package/dist/help/components/requestsupport/RequestSupportFooter.es.js.map +1 -0
- package/dist/help/components/requestsupport/RequestSupportHeader.es.js +47 -0
- package/dist/help/components/requestsupport/RequestSupportHeader.es.js.map +1 -0
- package/dist/help/components/requestsupport/RequestSupportInstitution.es.js +68 -0
- package/dist/help/components/requestsupport/RequestSupportInstitution.es.js.map +1 -0
- package/dist/help/components/requestsupport/SupportSuccessMessage.es.js +71 -0
- package/dist/help/components/requestsupport/SupportSuccessMessage.es.js.map +1 -0
- package/dist/help/constants/HelpImages.es.js +49 -0
- package/dist/help/constants/HelpImages.es.js.map +1 -0
- package/dist/help/index.es.js +4 -26
- package/dist/help/utils/getInstitutionsBasedOnGuid.es.js +16 -0
- package/dist/help/utils/getInstitutionsBasedOnGuid.es.js.map +1 -0
- package/dist/insights/components/feed/Header.es.js +75 -0
- package/dist/insights/components/feed/Header.es.js.map +1 -0
- package/dist/insights/components/insights/AccountDiscoverability/AccountDiscoverability.es.js +12 -0
- package/dist/insights/components/insights/AccountDiscoverability/AccountDiscoverability.es.js.map +1 -0
- package/dist/insights/components/insights/AmericanUpcomingTaxDeadlineAlert/AmericanUpcomingTaxDeadlineAlert.es.js +22 -0
- package/dist/insights/components/insights/AmericanUpcomingTaxDeadlineAlert/AmericanUpcomingTaxDeadlineAlert.es.js.map +1 -0
- package/dist/insights/components/insights/AmericanUpcomingTaxDeadlineAlert/images/AmericanUpcomingTaxDeadlineAlert.es.js +274 -0
- package/dist/insights/components/insights/AmericanUpcomingTaxDeadlineAlert/images/AmericanUpcomingTaxDeadlineAlert.es.js.map +1 -0
- package/dist/insights/components/insights/AmericanUpcomingTaxDeadlineAlert/images/UpcomingTaxDeadlineAlertCIBC.es.js +56 -0
- package/dist/insights/components/insights/AmericanUpcomingTaxDeadlineAlert/images/UpcomingTaxDeadlineAlertCIBC.es.js.map +1 -0
- package/dist/insights/components/insights/BillAmountNotStandard/BillAmountNotStandard.es.js +35 -0
- package/dist/insights/components/insights/BillAmountNotStandard/BillAmountNotStandard.es.js.map +1 -0
- package/dist/insights/components/insights/BillAmountNotStandard/BillAmountNotStandardMUI.es.js +41 -0
- package/dist/insights/components/insights/BillAmountNotStandard/BillAmountNotStandardMUI.es.js.map +1 -0
- package/dist/insights/components/insights/CashBack/CashBack.es.js +45 -0
- package/dist/insights/components/insights/CashBack/CashBack.es.js.map +1 -0
- package/dist/insights/components/insights/CashBack/images/CashBack.es.js +6 -0
- package/dist/insights/components/insights/CashBack/images/CashBack.es.js.map +1 -0
- package/dist/insights/components/insights/CategoryBudget/CategoryBudget.es.js +55 -0
- package/dist/insights/components/insights/CategoryBudget/CategoryBudget.es.js.map +1 -0
- package/dist/insights/components/insights/CategorySpendingV2/CategorySpendingV2.es.js +46 -0
- package/dist/insights/components/insights/CategorySpendingV2/CategorySpendingV2.es.js.map +1 -0
- package/dist/insights/components/insights/CategorySpendingV2/CategorySpendingV2MUI.es.js +48 -0
- package/dist/insights/components/insights/CategorySpendingV2/CategorySpendingV2MUI.es.js.map +1 -0
- package/dist/insights/components/insights/CelebrateCreditCardPayoff/CelebrateCreditCardPayoff.es.js +66 -0
- package/dist/insights/components/insights/CelebrateCreditCardPayoff/CelebrateCreditCardPayoff.es.js.map +1 -0
- package/dist/insights/components/insights/CelebrateCreditCardPayoff/images/CelebrateCreditCardPayoffDark.es.js +85 -0
- package/dist/insights/components/insights/CelebrateCreditCardPayoff/images/CelebrateCreditCardPayoffDark.es.js.map +1 -0
- package/dist/insights/components/insights/CelebrateCreditCardPayoff/images/CelebrateCreditCardPayoffLight.es.js +85 -0
- package/dist/insights/components/insights/CelebrateCreditCardPayoff/images/CelebrateCreditCardPayoffLight.es.js.map +1 -0
- package/dist/insights/components/insights/CustomTransaction/CustomTransaction.es.js +24 -0
- package/dist/insights/components/insights/CustomTransaction/CustomTransaction.es.js.map +1 -0
- package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsBody.es.js +120 -0
- package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsBody.es.js.map +1 -0
- package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsLearnMoreDrawerContent.es.js +143 -0
- package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsLearnMoreDrawerContent.es.js.map +1 -0
- package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsMiniInsight.es.js +20 -0
- package/dist/insights/components/insights/DiscoveredAccounts/DiscoveredAccountsMiniInsight.es.js.map +1 -0
- package/dist/insights/components/insights/FederalBankHoliday/FederalBankHoliday.es.js +29 -0
- package/dist/insights/components/insights/FederalBankHoliday/FederalBankHoliday.es.js.map +1 -0
- package/dist/insights/components/insights/FederalBankHoliday/FederalBankHolidayMUI.es.js +20 -0
- package/dist/insights/components/insights/FederalBankHoliday/FederalBankHolidayMUI.es.js.map +1 -0
- package/dist/insights/components/insights/FederalBankHoliday/images/FederalBankHoliday.es.js +55 -0
- package/dist/insights/components/insights/FederalBankHoliday/images/FederalBankHoliday.es.js.map +1 -0
- package/dist/insights/components/insights/FederalBankHoliday/images/FederalBankHolidayMUI.es.js +494 -0
- package/dist/insights/components/insights/FederalBankHoliday/images/FederalBankHolidayMUI.es.js.map +1 -0
- package/dist/insights/components/insights/FederalBankHoliday/images/FederalHolidayCibc.es.js +88 -0
- package/dist/insights/components/insights/FederalBankHoliday/images/FederalHolidayCibc.es.js.map +1 -0
- package/dist/insights/components/insights/MarketingHub/Offer.es.js +44 -0
- package/dist/insights/components/insights/MarketingHub/Offer.es.js.map +1 -0
- package/dist/insights/components/insights/MonthlyDebtToIncomeComparisonV2/MonthlyDebtToIncomeComparisonV2.es.js +33 -0
- package/dist/insights/components/insights/MonthlyDebtToIncomeComparisonV2/MonthlyDebtToIncomeComparisonV2.es.js.map +1 -0
- package/dist/insights/components/insights/MonthlyEmergencyFundReview/LastMonthsContributionSection.es.js +29 -0
- package/dist/insights/components/insights/MonthlyEmergencyFundReview/LastMonthsContributionSection.es.js.map +1 -0
- package/dist/insights/components/insights/MonthlyEmergencyFundReview/MonthlyEmergencyFundReviewBody.es.js +42 -0
- package/dist/insights/components/insights/MonthlyEmergencyFundReview/MonthlyEmergencyFundReviewBody.es.js.map +1 -0
- package/dist/insights/components/insights/MonthlyEmergencyFundReview/ProjectedCompletionSection.es.js +27 -0
- package/dist/insights/components/insights/MonthlyEmergencyFundReview/ProjectedCompletionSection.es.js.map +1 -0
- package/dist/insights/components/insights/MonthlyEmergencyFundReview/TotalSection.es.js +28 -0
- package/dist/insights/components/insights/MonthlyEmergencyFundReview/TotalSection.es.js.map +1 -0
- package/dist/insights/components/insights/MonthlySavingsToIncomeComparison/MonthlySavingsToIncomeComparison.es.js +33 -0
- package/dist/insights/components/insights/MonthlySavingsToIncomeComparison/MonthlySavingsToIncomeComparison.es.js.map +1 -0
- package/dist/insights/components/insights/MonthlySpendToIncomeComparisonV2/MonthlySpendToIncomeComparisonV2.es.js +37 -0
- package/dist/insights/components/insights/MonthlySpendToIncomeComparisonV2/MonthlySpendToIncomeComparisonV2.es.js.map +1 -0
- package/dist/insights/components/insights/MonthlySpendingComparisonV2/MonthlySpendingComparisonV2.es.js +35 -0
- package/dist/insights/components/insights/MonthlySpendingComparisonV2/MonthlySpendingComparisonV2.es.js.map +1 -0
- package/dist/insights/components/insights/P2pCategorization/P2pCategorization.es.js +20 -0
- package/dist/insights/components/insights/P2pCategorization/P2pCategorization.es.js.map +1 -0
- package/dist/insights/components/insights/P2pCategorization/shared/P2pCategorizationMultipleTransactions.es.js +83 -0
- package/dist/insights/components/insights/P2pCategorization/shared/P2pCategorizationMultipleTransactions.es.js.map +1 -0
- package/dist/insights/components/insights/P2pCategorization/shared/P2pCategorizationSingleTransaction.es.js +42 -0
- package/dist/insights/components/insights/P2pCategorization/shared/P2pCategorizationSingleTransaction.es.js.map +1 -0
- package/dist/insights/components/insights/SavingsAccountBalancesSummary/SavingsAccountBalancesSummary.es.js +40 -0
- package/dist/insights/components/insights/SavingsAccountBalancesSummary/SavingsAccountBalancesSummary.es.js.map +1 -0
- package/dist/insights/components/insights/SetUpDirectDeposit/SetUpDirectDepositBody.es.js +19 -0
- package/dist/insights/components/insights/SetUpDirectDeposit/SetUpDirectDepositBody.es.js.map +1 -0
- package/dist/insights/components/insights/SharedDeposit/SharedDeposit.es.js +104 -0
- package/dist/insights/components/insights/SharedDeposit/SharedDeposit.es.js.map +1 -0
- package/dist/insights/components/insights/SwitchDirectDeposit/AccountBox.es.js +37 -0
- package/dist/insights/components/insights/SwitchDirectDeposit/AccountBox.es.js.map +1 -0
- package/dist/insights/components/insights/SwitchDirectDeposit/SwitchDirectDepositBody.es.js +25 -0
- package/dist/insights/components/insights/SwitchDirectDeposit/SwitchDirectDepositBody.es.js.map +1 -0
- package/dist/insights/components/insights/SwitchDirectDeposit/SwitchDirectDepositMainContainer.es.js +36 -0
- package/dist/insights/components/insights/SwitchDirectDeposit/SwitchDirectDepositMainContainer.es.js.map +1 -0
- package/dist/insights/components/insights/UnifiedDeposit/UnifiedDeposit.es.js +38 -0
- package/dist/insights/components/insights/UnifiedDeposit/UnifiedDeposit.es.js.map +1 -0
- package/dist/insights/components/insights/UnifiedDeposit/UnifiedDepositBody.es.js +86 -0
- package/dist/insights/components/insights/UnifiedDeposit/UnifiedDepositBody.es.js.map +1 -0
- package/dist/insights/components/insights/UserFeedback/StyledToggleButton.es.js +34 -0
- package/dist/insights/components/insights/UserFeedback/StyledToggleButton.es.js.map +1 -0
- package/dist/insights/components/insights/UserFeedback/UserFeedback.es.js +133 -0
- package/dist/insights/components/insights/UserFeedback/UserFeedback.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/BubbleWeek.es.js +59 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/BubbleWeek.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/NoSpendIcons.es.js +23 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/NoSpendIcons.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/WeeklyNoSpendDays.es.js +51 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/WeeklyNoSpendDays.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_0.es.js +6 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_0.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_1.es.js +6 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_1.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_2.es.js +6 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_2.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_3.es.js +6 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_3.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_4.es.js +6 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_4.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_5.es.js +6 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_5.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_6.es.js +6 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_6.es.js.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_7.es.js +6 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/images/no_spend_7.es.js.map +1 -0
- package/dist/insights/components/shared/BottomSheet.es.js +39 -0
- package/dist/insights/components/shared/BottomSheet.es.js.map +1 -0
- package/dist/insights/components/shared/ChartDrawerTemplate/ChartDrawerTemplate.es.js +66 -0
- package/dist/insights/components/shared/ChartDrawerTemplate/ChartDrawerTemplate.es.js.map +1 -0
- package/dist/insights/components/shared/ChartDrawerTemplate/TipSection.es.js +60 -0
- package/dist/insights/components/shared/ChartDrawerTemplate/TipSection.es.js.map +1 -0
- package/dist/insights/components/shared/ChartTransactionWithDrillDown.es.js +76 -0
- package/dist/insights/components/shared/ChartTransactionWithDrillDown.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/BarChart.es.js +147 -0
- package/dist/insights/components/shared/Charts/BarChart/BarChart.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/BarChartV2.es.js +148 -0
- package/dist/insights/components/shared/Charts/BarChart/BarChartV2.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/ChartLegend.es.js +75 -0
- package/dist/insights/components/shared/Charts/BarChart/ChartLegend.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/ChartLegendV2.es.js +80 -0
- package/dist/insights/components/shared/Charts/BarChart/ChartLegendV2.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/CustomBarPlot.es.js +73 -0
- package/dist/insights/components/shared/Charts/BarChart/CustomBarPlot.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/CustomBarPlotV2.d.ts +4 -1
- package/dist/insights/components/shared/Charts/BarChart/CustomBarPlotV2.es.js +32 -0
- package/dist/insights/components/shared/Charts/BarChart/CustomBarPlotV2.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/CustomDoubleBarPlot.es.js +52 -0
- package/dist/insights/components/shared/Charts/BarChart/CustomDoubleBarPlot.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/CustomDoubleBarPlotMXUI.es.js +46 -0
- package/dist/insights/components/shared/Charts/BarChart/CustomDoubleBarPlotMXUI.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/DoubleBarChart.es.js +118 -0
- package/dist/insights/components/shared/Charts/BarChart/DoubleBarChart.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartLegend.es.js +73 -0
- package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartLegend.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartLegendMXUI.es.js +73 -0
- package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartLegendMXUI.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartMXUI.es.js +116 -0
- package/dist/insights/components/shared/Charts/BarChart/DoubleBarChartMXUI.es.js.map +1 -0
- package/dist/insights/components/shared/Charts/EmptyBarChart.es.js +14 -0
- package/dist/insights/components/shared/Charts/EmptyBarChart.es.js.map +1 -0
- package/dist/insights/components/shared/Confetti.es.js +32 -0
- package/dist/insights/components/shared/Confetti.es.js.map +1 -0
- package/dist/insights/components/shared/ConnectionCard.es.js +90 -0
- package/dist/insights/components/shared/ConnectionCard.es.js.map +1 -0
- package/dist/insights/components/shared/Coupon.es.js +66 -0
- package/dist/insights/components/shared/Coupon.es.js.map +1 -0
- package/dist/insights/components/shared/DeepLinks/DeepLinkDialog.es.js +34 -0
- package/dist/insights/components/shared/DeepLinks/DeepLinkDialog.es.js.map +1 -0
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/Circle.es.js +20 -0
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/Circle.es.js.map +1 -0
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/DirectDepositDeepLink.es.js +163 -0
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/DirectDepositDeepLink.es.js.map +1 -0
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/Dot.es.js +19 -0
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/Dot.es.js.map +1 -0
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/Oval.es.js +16 -0
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/Oval.es.js.map +1 -0
- package/dist/insights/components/shared/DirectDeposit/DirectDeposit.es.js +85 -0
- package/dist/insights/components/shared/DirectDeposit/DirectDeposit.es.js.map +1 -0
- package/dist/insights/components/shared/DirectDeposit/DirectDepositSubHeader.es.js +20 -0
- package/dist/insights/components/shared/DirectDeposit/DirectDepositSubHeader.es.js.map +1 -0
- package/dist/insights/components/shared/DirectDeposit/FullFeedBodyHeader.es.js +33 -0
- package/dist/insights/components/shared/DirectDeposit/FullFeedBodyHeader.es.js.map +1 -0
- package/dist/insights/components/shared/DirectDeposit/LeftBox.es.js +29 -0
- package/dist/insights/components/shared/DirectDeposit/LeftBox.es.js.map +1 -0
- package/dist/insights/components/shared/DirectDeposit/MiniBodyHeader.es.js +29 -0
- package/dist/insights/components/shared/DirectDeposit/MiniBodyHeader.es.js.map +1 -0
- package/dist/insights/components/shared/DirectDeposit/RightBox.es.js +43 -0
- package/dist/insights/components/shared/DirectDeposit/RightBox.es.js.map +1 -0
- package/dist/insights/components/shared/DiscoveredAccountsConnect.es.js +82 -0
- package/dist/insights/components/shared/DiscoveredAccountsConnect.es.js.map +1 -0
- package/dist/insights/components/shared/DrillDownCalculation/BalanceStepper.es.js +58 -0
- package/dist/insights/components/shared/DrillDownCalculation/BalanceStepper.es.js.map +1 -0
- package/dist/insights/components/shared/DrillDownCalculation/DrillDownCalculation.es.js +264 -0
- package/dist/insights/components/shared/DrillDownCalculation/DrillDownCalculation.es.js.map +1 -0
- package/dist/insights/components/shared/ErrorCard/ErrorCard.es.js +76 -0
- package/dist/insights/components/shared/ErrorCard/ErrorCard.es.js.map +1 -0
- package/dist/insights/components/shared/ErrorCard/images/ErrorViewCibc.es.js +57 -0
- package/dist/insights/components/shared/ErrorCard/images/ErrorViewCibc.es.js.map +1 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackButtons.es.js +47 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackButtons.es.js.map +1 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackDescription.es.js +16 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackDescription.es.js.map +1 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackHeader.es.js +29 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackHeader.es.js.map +1 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackOptions.es.js +50 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackOptions.es.js.map +1 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackText.es.js +45 -0
- package/dist/insights/components/shared/GenericFeedback/FeedbackText.es.js.map +1 -0
- package/dist/insights/components/shared/GoalProgress.es.js +42 -0
- package/dist/insights/components/shared/GoalProgress.es.js.map +1 -0
- package/dist/insights/components/shared/GradientBox.es.js +33 -0
- package/dist/insights/components/shared/GradientBox.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/BeatCard.es.js +31 -0
- package/dist/insights/components/shared/InsightsCard/BeatCard.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/BeatCardMUI.es.js +32 -0
- package/dist/insights/components/shared/InsightsCard/BeatCardMUI.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/CardButtonSection.es.js +20 -0
- package/dist/insights/components/shared/InsightsCard/CardButtonSection.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/CardError.es.js +30 -0
- package/dist/insights/components/shared/InsightsCard/CardError.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/CardFooter.es.js +24 -0
- package/dist/insights/components/shared/InsightsCard/CardFooter.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/CardHeader.es.js +28 -0
- package/dist/insights/components/shared/InsightsCard/CardHeader.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/CardHeaderMUI.es.js +30 -0
- package/dist/insights/components/shared/InsightsCard/CardHeaderMUI.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/CardLoading.es.js +21 -0
- package/dist/insights/components/shared/InsightsCard/CardLoading.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/ClientConfigurableCta.es.js +38 -0
- package/dist/insights/components/shared/InsightsCard/ClientConfigurableCta.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/ContentAndDescription.es.js +43 -0
- package/dist/insights/components/shared/InsightsCard/ContentAndDescription.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/ContentAndDescriptionMUI.es.js +43 -0
- package/dist/insights/components/shared/InsightsCard/ContentAndDescriptionMUI.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/Description.es.js +31 -0
- package/dist/insights/components/shared/InsightsCard/Description.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/DescriptionMUI.es.js +30 -0
- package/dist/insights/components/shared/InsightsCard/DescriptionMUI.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/EmbeddedCard.es.js +69 -0
- package/dist/insights/components/shared/InsightsCard/EmbeddedCard.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/FeedbackCard.es.js +120 -0
- package/dist/insights/components/shared/InsightsCard/FeedbackCard.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/InsightButton.es.js +25 -0
- package/dist/insights/components/shared/InsightsCard/InsightButton.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/MiniDescription.es.js +44 -0
- package/dist/insights/components/shared/InsightsCard/MiniDescription.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/MiniDescriptionMUI.es.js +42 -0
- package/dist/insights/components/shared/InsightsCard/MiniDescriptionMUI.es.js.map +1 -0
- package/dist/insights/components/shared/InsightsCard/images/BeatErrorView.es.js +728 -0
- package/dist/insights/components/shared/InsightsCard/images/BeatErrorView.es.js.map +1 -0
- package/dist/insights/components/shared/MenuAction.es.js +68 -0
- package/dist/insights/components/shared/MenuAction.es.js.map +1 -0
- package/dist/insights/components/shared/MiniInsightCard.es.js +69 -0
- package/dist/insights/components/shared/MiniInsightCard.es.js.map +1 -0
- package/dist/insights/components/shared/P2P/P2PMultipleCategorization.es.js +107 -0
- package/dist/insights/components/shared/P2P/P2PMultipleCategorization.es.js.map +1 -0
- package/dist/insights/components/shared/P2PCategorizationSingleAccount/P2PCategorizationSingleAccount.es.js +75 -0
- package/dist/insights/components/shared/P2PCategorizationSingleAccount/P2PCategorizationSingleAccount.es.js.map +1 -0
- package/dist/insights/components/shared/ProgressBar.es.js +39 -0
- package/dist/insights/components/shared/ProgressBar.es.js.map +1 -0
- package/dist/insights/components/shared/SaveAnExtra100/SaveAnExtra100.es.js +55 -0
- package/dist/insights/components/shared/SaveAnExtra100/SaveAnExtra100.es.js.map +1 -0
- package/dist/insights/components/shared/SaveEnoughToLiveOnBottomSection.es.js +77 -0
- package/dist/insights/components/shared/SaveEnoughToLiveOnBottomSection.es.js.map +1 -0
- package/dist/insights/components/shared/SaveEnoughToLiveOnTopSection.es.js +12 -0
- package/dist/insights/components/shared/SaveEnoughToLiveOnTopSection.es.js.map +1 -0
- package/dist/insights/components/shared/StatusIndicator.es.js +69 -0
- package/dist/insights/components/shared/StatusIndicator.es.js.map +1 -0
- package/dist/insights/components/shared/ThemedSVGImage.es.js +49 -0
- package/dist/insights/components/shared/ThemedSVGImage.es.js.map +1 -0
- package/dist/insights/components/shared/TransactionCard.es.js +93 -0
- package/dist/insights/components/shared/TransactionCard.es.js.map +1 -0
- package/dist/insights/components/shared/ZeroState/LinedCardZeroState.es.js +23 -0
- package/dist/insights/components/shared/ZeroState/LinedCardZeroState.es.js.map +1 -0
- package/dist/insights/components/shared/images/BarChartEmptyState.es.js +101 -0
- package/dist/insights/components/shared/images/BarChartEmptyState.es.js.map +1 -0
- package/dist/insights/components/shared/images/CouponLeft.es.js +104 -0
- package/dist/insights/components/shared/images/CouponLeft.es.js.map +1 -0
- package/dist/insights/components/shared/images/CouponLeftDark.es.js +104 -0
- package/dist/insights/components/shared/images/CouponLeftDark.es.js.map +1 -0
- package/dist/insights/components/shared/images/CouponPerferation.es.js +38 -0
- package/dist/insights/components/shared/images/CouponPerferation.es.js.map +1 -0
- package/dist/insights/components/shared/images/EmptyBarChart.es.js +101 -0
- package/dist/insights/components/shared/images/EmptyBarChart.es.js.map +1 -0
- package/dist/insights/components/shared/images/LinedCardZeroState.es.js +91 -0
- package/dist/insights/components/shared/images/LinedCardZeroState.es.js.map +1 -0
- package/dist/insights/components/shared/images/SaveEnoughToLiveOnBottom.es.js +21 -0
- package/dist/insights/components/shared/images/SaveEnoughToLiveOnBottom.es.js.map +1 -0
- package/dist/insights/components/shared/images/SaveEnoughToLiveOnTop.es.js +815 -0
- package/dist/insights/components/shared/images/SaveEnoughToLiveOnTop.es.js.map +1 -0
- package/dist/insights/hooks/useContainerDimensions.es.js +26 -0
- package/dist/insights/hooks/useContainerDimensions.es.js.map +1 -0
- package/dist/insights/images/Loading.es.js +6 -0
- package/dist/insights/images/Loading.es.js.map +1 -0
- package/dist/insights/index.es.js +183 -4871
- package/dist/insights/types/Charts/BarChart.d.ts +2 -11
- package/dist/insights/types/CommonBeat.es.js +8 -0
- package/dist/insights/types/CommonBeat.es.js.map +1 -0
- package/dist/investments/InvestmentsWidget.es.js +98 -0
- package/dist/investments/InvestmentsWidget.es.js.map +1 -0
- package/dist/investments/components/Allocation.es.js +55 -0
- package/dist/investments/components/Allocation.es.js.map +1 -0
- package/dist/investments/components/Analysis.es.js +167 -0
- package/dist/investments/components/Analysis.es.js.map +1 -0
- package/dist/investments/components/AnalysisDetails.es.js +86 -0
- package/dist/investments/components/AnalysisDetails.es.js.map +1 -0
- package/dist/investments/components/EmptyStateFooterComponent.es.js +52 -0
- package/dist/investments/components/EmptyStateFooterComponent.es.js.map +1 -0
- package/dist/investments/components/HeaderCell.es.js +28 -0
- package/dist/investments/components/HeaderCell.es.js.map +1 -0
- package/dist/investments/components/HoldingDrawer.es.js +343 -0
- package/dist/investments/components/HoldingDrawer.es.js.map +1 -0
- package/dist/investments/components/HoldingTable.es.js +199 -0
- package/dist/investments/components/HoldingTable.es.js.map +1 -0
- package/dist/investments/components/InfoToolTip.es.js +45 -0
- package/dist/investments/components/InfoToolTip.es.js.map +1 -0
- package/dist/investments/components/Overview.es.js +456 -0
- package/dist/investments/components/Overview.es.js.map +1 -0
- package/dist/investments/components/TabTitle.es.js +12 -0
- package/dist/investments/components/TabTitle.es.js.map +1 -0
- package/dist/investments/components/allocation/InvestementAllocationList.es.js +136 -0
- package/dist/investments/components/allocation/InvestementAllocationList.es.js.map +1 -0
- package/dist/investments/components/allocation/InvestmentsAllocationChart.es.js +86 -0
- package/dist/investments/components/allocation/InvestmentsAllocationChart.es.js.map +1 -0
- package/dist/investments/components/allocation/util/createInvestementsAllocationData.es.js +103 -0
- package/dist/investments/components/allocation/util/createInvestementsAllocationData.es.js.map +1 -0
- package/dist/investments/index.es.js +2 -1675
- package/dist/merchants/components/MerchantLookup.es.js +91 -0
- package/dist/merchants/components/MerchantLookup.es.js.map +1 -0
- package/dist/merchants/index.es.js +2 -76
- package/dist/microinsights/InsightsMicroWidget.es.js +109 -0
- package/dist/microinsights/InsightsMicroWidget.es.js.map +1 -0
- package/dist/microinsights/MicroCardTemplate.es.js +159 -0
- package/dist/microinsights/MicroCardTemplate.es.js.map +1 -0
- package/dist/microinsights/MicroWidgetContainer.es.js +24 -0
- package/dist/microinsights/MicroWidgetContainer.es.js.map +1 -0
- package/dist/microinsights/Spinner.es.js +19 -0
- package/dist/microinsights/Spinner.es.js.map +1 -0
- package/dist/microinsights/analytics.es.js +12 -0
- package/dist/microinsights/analytics.es.js.map +1 -0
- package/dist/microinsights/beaticons/AreaChartIcon.es.js +18 -0
- package/dist/microinsights/beaticons/AreaChartIcon.es.js.map +1 -0
- package/dist/microinsights/beaticons/AverageSpendComparisonIcon.es.js +23 -0
- package/dist/microinsights/beaticons/AverageSpendComparisonIcon.es.js.map +1 -0
- package/dist/microinsights/beaticons/BeatCategoryIcon.es.js +16 -0
- package/dist/microinsights/beaticons/BeatCategoryIcon.es.js.map +1 -0
- package/dist/microinsights/beaticons/BeatIcon.es.js +162 -0
- package/dist/microinsights/beaticons/BeatIcon.es.js.map +1 -0
- package/dist/microinsights/beaticons/BeatMaterialIcon.es.js +25 -0
- package/dist/microinsights/beaticons/BeatMaterialIcon.es.js.map +1 -0
- package/dist/microinsights/beaticons/BeatMerchantLogo.es.js +20 -0
- package/dist/microinsights/beaticons/BeatMerchantLogo.es.js.map +1 -0
- package/dist/microinsights/beaticons/ChartFilledIcon.es.js +21 -0
- package/dist/microinsights/beaticons/ChartFilledIcon.es.js.map +1 -0
- package/dist/microinsights/beaticons/InstitutionLogoIcon.es.js +12 -0
- package/dist/microinsights/beaticons/InstitutionLogoIcon.es.js.map +1 -0
- package/dist/microinsights/beaticons/MonthlySpendComparisonIcon.es.js +17 -0
- package/dist/microinsights/beaticons/MonthlySpendComparisonIcon.es.js.map +1 -0
- package/dist/microinsights/beaticons/ZeroStateIcon.es.js +722 -0
- package/dist/microinsights/beaticons/ZeroStateIcon.es.js.map +1 -0
- package/dist/microinsights/cards/InsightCard.es.js +71 -0
- package/dist/microinsights/cards/InsightCard.es.js.map +1 -0
- package/dist/microinsights/cards/NoRelevantInsightsCard.es.js +38 -0
- package/dist/microinsights/cards/NoRelevantInsightsCard.es.js.map +1 -0
- package/dist/microinsights/cards/ViewMoreMicroCard.es.js +43 -0
- package/dist/microinsights/cards/ViewMoreMicroCard.es.js.map +1 -0
- package/dist/microinsights/cards/ZeroStateCard.es.js +32 -0
- package/dist/microinsights/cards/ZeroStateCard.es.js.map +1 -0
- package/dist/microinsights/carousel/BeatList.es.js +37 -0
- package/dist/microinsights/carousel/BeatList.es.js.map +1 -0
- package/dist/microinsights/carousel/CarouselControls.es.js +63 -0
- package/dist/microinsights/carousel/CarouselControls.es.js.map +1 -0
- package/dist/microinsights/carousel/CarouselHeader.es.js +39 -0
- package/dist/microinsights/carousel/CarouselHeader.es.js.map +1 -0
- package/dist/microinsights/carousel/MicroBeatCarousel.es.js +147 -0
- package/dist/microinsights/carousel/MicroBeatCarousel.es.js.map +1 -0
- package/dist/microinsights/constants/Analytics.es.js +148 -0
- package/dist/microinsights/constants/Analytics.es.js.map +1 -0
- package/dist/microinsights/constants/App.es.js +11 -0
- package/dist/microinsights/constants/App.es.js.map +1 -0
- package/dist/microinsights/context/InsightsMicroWidgetDataProvider.es.js +17 -0
- package/dist/microinsights/context/InsightsMicroWidgetDataProvider.es.js.map +1 -0
- package/dist/microinsights/context/hooks.es.js +27 -0
- package/dist/microinsights/context/hooks.es.js.map +1 -0
- package/dist/microinsights/index.es.js +28 -826
- package/dist/microinsights/stores/AppStore.es.js +27 -0
- package/dist/microinsights/stores/AppStore.es.js.map +1 -0
- package/dist/microinsights/stores/CopyStore.es.js +34 -0
- package/dist/microinsights/stores/CopyStore.es.js.map +1 -0
- package/dist/microinsights/stores/InsightsMicroWidgetStore.es.js +33 -0
- package/dist/microinsights/stores/InsightsMicroWidgetStore.es.js.map +1 -0
- package/dist/microinsights/utils/DataSeries.es.js +11 -0
- package/dist/microinsights/utils/DataSeries.es.js.map +1 -0
- package/dist/microinsights/utils/colorType.es.js +13 -0
- package/dist/microinsights/utils/colorType.es.js.map +1 -0
- package/dist/networth/NetWorthMicroWidget.es.js +40 -0
- package/dist/networth/NetWorthMicroWidget.es.js.map +1 -0
- package/dist/networth/NetWorthWidget.es.js +78 -0
- package/dist/networth/NetWorthWidget.es.js.map +1 -0
- package/dist/networth/components/AssetsLiabilitiesDetail.es.js +158 -0
- package/dist/networth/components/AssetsLiabilitiesDetail.es.js.map +1 -0
- package/dist/networth/components/GainsLossesDetail.es.js +137 -0
- package/dist/networth/components/GainsLossesDetail.es.js.map +1 -0
- package/dist/networth/components/NetWorthChange.es.js +34 -0
- package/dist/networth/components/NetWorthChange.es.js.map +1 -0
- package/dist/networth/components/NetWorthChart.es.js +58 -0
- package/dist/networth/components/NetWorthChart.es.js.map +1 -0
- package/dist/networth/components/NetWorthList.es.js +99 -0
- package/dist/networth/components/NetWorthList.es.js.map +1 -0
- package/dist/networth/components/NetWorthListItem.es.js +50 -0
- package/dist/networth/components/NetWorthListItem.es.js.map +1 -0
- package/dist/networth/components/NetWorthSummary.es.js +38 -0
- package/dist/networth/components/NetWorthSummary.es.js.map +1 -0
- package/dist/networth/components/micro/NetworthData.es.js +49 -0
- package/dist/networth/components/micro/NetworthData.es.js.map +1 -0
- package/dist/networth/components/micro/ZeroState.es.js +31 -0
- package/dist/networth/components/micro/ZeroState.es.js.map +1 -0
- package/dist/networth/index.es.js +4 -565
- package/dist/notifications/components/DateRow.es.js +23 -0
- package/dist/notifications/components/DateRow.es.js.map +1 -0
- package/dist/notifications/components/NotificationBadge.es.js +33 -0
- package/dist/notifications/components/NotificationBadge.es.js.map +1 -0
- package/dist/notifications/components/NotificationCard.es.js +56 -0
- package/dist/notifications/components/NotificationCard.es.js.map +1 -0
- package/dist/notifications/components/NotificationDrawer.es.js +47 -0
- package/dist/notifications/components/NotificationDrawer.es.js.map +1 -0
- package/dist/notifications/components/NotificationList.es.js +42 -0
- package/dist/notifications/components/NotificationList.es.js.map +1 -0
- package/dist/notifications/components/NotificationsEmptyState.es.js +49 -0
- package/dist/notifications/components/NotificationsEmptyState.es.js.map +1 -0
- package/dist/notifications/constants/NotificationConstants.es.js +24 -0
- package/dist/notifications/constants/NotificationConstants.es.js.map +1 -0
- package/dist/notifications/index.es.js +6 -198
- package/dist/recurringtransactions/RecurringTransactionsMicroWidget.es.js +54 -0
- package/dist/recurringtransactions/RecurringTransactionsMicroWidget.es.js.map +1 -0
- package/dist/recurringtransactions/RecurringTransactionsMiniWidget.es.js +47 -0
- package/dist/recurringtransactions/RecurringTransactionsMiniWidget.es.js.map +1 -0
- package/dist/recurringtransactions/RecurringTransactionsWidget.es.js +89 -0
- package/dist/recurringtransactions/RecurringTransactionsWidget.es.js.map +1 -0
- package/dist/recurringtransactions/ZeroStateMicroWidget.es.js +30 -0
- package/dist/recurringtransactions/ZeroStateMicroWidget.es.js.map +1 -0
- package/dist/recurringtransactions/components/MicroWidgetContent.es.js +103 -0
- package/dist/recurringtransactions/components/MicroWidgetContent.es.js.map +1 -0
- package/dist/recurringtransactions/components/MiniWidgetContent.es.js +45 -0
- package/dist/recurringtransactions/components/MiniWidgetContent.es.js.map +1 -0
- package/dist/recurringtransactions/components/PaymentSchedule.es.js +133 -0
- package/dist/recurringtransactions/components/PaymentSchedule.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurrenceBadges.es.js +64 -0
- package/dist/recurringtransactions/components/RecurrenceBadges.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurrenceList.es.js +87 -0
- package/dist/recurringtransactions/components/RecurrenceList.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurrenceRow.es.js +133 -0
- package/dist/recurringtransactions/components/RecurrenceRow.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringSettingsDrawer.es.js +20 -0
- package/dist/recurringtransactions/components/RecurringSettingsDrawer.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringStatus.es.js +114 -0
- package/dist/recurringtransactions/components/RecurringStatus.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringTransactionDetails.es.js +181 -0
- package/dist/recurringtransactions/components/RecurringTransactionDetails.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringTransactionDetailsDrawer.es.js +27 -0
- package/dist/recurringtransactions/components/RecurringTransactionDetailsDrawer.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringTransactionList.es.js +181 -0
- package/dist/recurringtransactions/components/RecurringTransactionList.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringTransactions.es.js +155 -0
- package/dist/recurringtransactions/components/RecurringTransactions.es.js.map +1 -0
- package/dist/recurringtransactions/components/UpcomingRecurrenceCard.es.js +63 -0
- package/dist/recurringtransactions/components/UpcomingRecurrenceCard.es.js.map +1 -0
- package/dist/recurringtransactions/components/actions/LinkTransactionDrawer.es.js +46 -0
- package/dist/recurringtransactions/components/actions/LinkTransactionDrawer.es.js.map +1 -0
- package/dist/recurringtransactions/components/actions/MarkAsPaidDialog.es.js +28 -0
- package/dist/recurringtransactions/components/actions/MarkAsPaidDialog.es.js.map +1 -0
- package/dist/recurringtransactions/components/actions/MarkAsUnpaidDialog.es.js +28 -0
- package/dist/recurringtransactions/components/actions/MarkAsUnpaidDialog.es.js.map +1 -0
- package/dist/recurringtransactions/components/actions/PaymentScheduleAction.es.js +47 -0
- package/dist/recurringtransactions/components/actions/PaymentScheduleAction.es.js.map +1 -0
- package/dist/recurringtransactions/components/micro/MerchantLogosRow.es.js +19 -0
- package/dist/recurringtransactions/components/micro/MerchantLogosRow.es.js.map +1 -0
- package/dist/recurringtransactions/components/micro/OverlappingMerchantLogos.es.js +33 -0
- package/dist/recurringtransactions/components/micro/OverlappingMerchantLogos.es.js.map +1 -0
- package/dist/recurringtransactions/components/micro/RecurrenceLegend.es.js +37 -0
- package/dist/recurringtransactions/components/micro/RecurrenceLegend.es.js.map +1 -0
- package/dist/recurringtransactions/components/recurrencecalendar/Legend.es.js +48 -0
- package/dist/recurringtransactions/components/recurrencecalendar/Legend.es.js.map +1 -0
- package/dist/recurringtransactions/components/recurrencecalendar/RecurrenceCalendar.es.js +111 -0
- package/dist/recurringtransactions/components/recurrencecalendar/RecurrenceCalendar.es.js.map +1 -0
- package/dist/recurringtransactions/components/recurrencecalendar/RecurrenceDay.es.js +48 -0
- package/dist/recurringtransactions/components/recurrencecalendar/RecurrenceDay.es.js.map +1 -0
- package/dist/recurringtransactions/components/shared/RecurringSettings.es.js +37 -0
- package/dist/recurringtransactions/components/shared/RecurringSettings.es.js.map +1 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/AddRecurringTransaction.es.js +93 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/AddRecurringTransaction.es.js.map +1 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/AddRecurringTransactionDetails.es.js +42 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/AddRecurringTransactionDetails.es.js.map +1 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/ManageExpenses.es.js +57 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/ManageExpenses.es.js.map +1 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/ManageIncome.es.js +72 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/ManageIncome.es.js.map +1 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/RecurringRow.es.js +96 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/RecurringRow.es.js.map +1 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/RecurringSettingsZeroState.es.js +47 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/RecurringSettingsZeroState.es.js.map +1 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/SelectTransaction.es.js +45 -0
- package/dist/recurringtransactions/components/shared/recurringsettings/SelectTransaction.es.js.map +1 -0
- package/dist/recurringtransactions/index.es.js +18 -1022
- package/dist/settings/NotificationSettingsWidget.es.js +32 -0
- package/dist/settings/NotificationSettingsWidget.es.js.map +1 -0
- package/dist/settings/SettingsWidget.es.js +82 -0
- package/dist/settings/SettingsWidget.es.js.map +1 -0
- package/dist/settings/TransactionRulesWidget.es.js +28 -0
- package/dist/settings/TransactionRulesWidget.es.js.map +1 -0
- package/dist/settings/components/SettingsWidgetContents.es.js +47 -0
- package/dist/settings/components/SettingsWidgetContents.es.js.map +1 -0
- package/dist/settings/components/devices/DeviceDialog.es.js +127 -0
- package/dist/settings/components/devices/DeviceDialog.es.js.map +1 -0
- package/dist/settings/components/devices/DeviceList.es.js +125 -0
- package/dist/settings/components/devices/DeviceList.es.js.map +1 -0
- package/dist/settings/components/devices/DeviceTab.es.js +107 -0
- package/dist/settings/components/devices/DeviceTab.es.js.map +1 -0
- package/dist/settings/components/devices/DeviceTable.es.js +120 -0
- package/dist/settings/components/devices/DeviceTable.es.js.map +1 -0
- package/dist/settings/components/notifications/AccountNotificationProfile.es.js +92 -0
- package/dist/settings/components/notifications/AccountNotificationProfile.es.js.map +1 -0
- package/dist/settings/components/notifications/AccountNotificationProfiles.es.js +44 -0
- package/dist/settings/components/notifications/AccountNotificationProfiles.es.js.map +1 -0
- package/dist/settings/components/notifications/AccountProfileListItem.es.js +84 -0
- package/dist/settings/components/notifications/AccountProfileListItem.es.js.map +1 -0
- package/dist/settings/components/notifications/BudgetNotificationProfiles.es.js +14 -0
- package/dist/settings/components/notifications/BudgetNotificationProfiles.es.js.map +1 -0
- package/dist/settings/components/notifications/DeliveryMethods.es.js +78 -0
- package/dist/settings/components/notifications/DeliveryMethods.es.js.map +1 -0
- package/dist/settings/components/notifications/InsightsNotificationProfiles.es.js +14 -0
- package/dist/settings/components/notifications/InsightsNotificationProfiles.es.js.map +1 -0
- package/dist/settings/components/notifications/NotificationProfile.es.js +80 -0
- package/dist/settings/components/notifications/NotificationProfile.es.js.map +1 -0
- package/dist/settings/components/notifications/NotificationSettings.es.js +94 -0
- package/dist/settings/components/notifications/NotificationSettings.es.js.map +1 -0
- package/dist/settings/components/notifications/PersonalDetails.es.js +111 -0
- package/dist/settings/components/notifications/PersonalDetails.es.js.map +1 -0
- package/dist/settings/components/profile/ProfileTab.es.js +178 -0
- package/dist/settings/components/profile/ProfileTab.es.js.map +1 -0
- package/dist/settings/components/profile/actions/VerifyEmailAction.es.js +88 -0
- package/dist/settings/components/profile/actions/VerifyEmailAction.es.js.map +1 -0
- package/dist/settings/components/profile/actions/VerifyPhoneAction.es.js +105 -0
- package/dist/settings/components/profile/actions/VerifyPhoneAction.es.js.map +1 -0
- package/dist/settings/components/profile/actions/VerifyTokenAction.es.js +40 -0
- package/dist/settings/components/profile/actions/VerifyTokenAction.es.js.map +1 -0
- package/dist/settings/components/transactionrules/TransactionRulesTab.es.js +35 -0
- package/dist/settings/components/transactionrules/TransactionRulesTab.es.js.map +1 -0
- package/dist/settings/components/transactionrules/actions/DeleteRuleAction.es.js +34 -0
- package/dist/settings/components/transactionrules/actions/DeleteRuleAction.es.js.map +1 -0
- package/dist/settings/components/transactionrules/actions/EditCategoryAction.es.js +31 -0
- package/dist/settings/components/transactionrules/actions/EditCategoryAction.es.js.map +1 -0
- package/dist/settings/components/transactionrules/actions/EditPayeeAction.es.js +45 -0
- package/dist/settings/components/transactionrules/actions/EditPayeeAction.es.js.map +1 -0
- package/dist/settings/components/transactionrules/actions/EditRuleAction.es.js +36 -0
- package/dist/settings/components/transactionrules/actions/EditRuleAction.es.js.map +1 -0
- package/dist/settings/components/transactionrules/components/EditRuleDetails.es.js +46 -0
- package/dist/settings/components/transactionrules/components/EditRuleDetails.es.js.map +1 -0
- package/dist/settings/components/transactionrules/components/RuleListItem.es.js +26 -0
- package/dist/settings/components/transactionrules/components/RuleListItem.es.js.map +1 -0
- package/dist/settings/constants/Settings.es.js +8 -0
- package/dist/settings/constants/Settings.es.js.map +1 -0
- package/dist/settings/index.es.js +23 -892
- package/dist/spending/SpendingMiniWidget.es.js +41 -0
- package/dist/spending/SpendingMiniWidget.es.js.map +1 -0
- package/dist/spending/SpendingWidget.es.js +51 -0
- package/dist/spending/SpendingWidget.es.js.map +1 -0
- package/dist/spending/components/MiniSpendingChart.es.js +112 -0
- package/dist/spending/components/MiniSpendingChart.es.js.map +1 -0
- package/dist/spending/components/Spending.es.js +123 -0
- package/dist/spending/components/Spending.es.js.map +1 -0
- package/dist/spending/components/SpendingChart.es.js +60 -0
- package/dist/spending/components/SpendingChart.es.js.map +1 -0
- package/dist/spending/components/SpendingDonut.es.js +132 -0
- package/dist/spending/components/SpendingDonut.es.js.map +1 -0
- package/dist/spending/components/SpendingLegend.es.js +46 -0
- package/dist/spending/components/SpendingLegend.es.js.map +1 -0
- package/dist/spending/components/SpendingList.es.js +124 -0
- package/dist/spending/components/SpendingList.es.js.map +1 -0
- package/dist/spending/components/SpendingTabLabel.es.js +22 -0
- package/dist/spending/components/SpendingTabLabel.es.js.map +1 -0
- package/dist/spending/index.es.js +4 -491
- package/dist/spending/utils/SpendingData.es.js +72 -0
- package/dist/spending/utils/SpendingData.es.js.map +1 -0
- package/dist/transactions/TransactionWidget.es.js +189 -0
- package/dist/transactions/TransactionWidget.es.js.map +1 -0
- package/dist/transactions/components/shared/TransactionDetails.es.js +255 -0
- package/dist/transactions/components/shared/TransactionDetails.es.js.map +1 -0
- package/dist/transactions/components/shared/TransactionList.es.js +92 -0
- package/dist/transactions/components/shared/TransactionList.es.js.map +1 -0
- package/dist/transactions/components/shared/TransactionTable.es.js +124 -0
- package/dist/transactions/components/shared/TransactionTable.es.js.map +1 -0
- package/dist/transactions/components/shared/getEmbeddedInstanceSlotByBeatTemplates.es.js +25 -0
- package/dist/transactions/components/shared/getEmbeddedInstanceSlotByBeatTemplates.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/Description.es.js +85 -0
- package/dist/transactions/components/shared/transactiondetails/Description.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/FlagTransaction.es.js +49 -0
- package/dist/transactions/components/shared/transactiondetails/FlagTransaction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/ManualTransactionDetails.es.js +151 -0
- package/dist/transactions/components/shared/transactiondetails/ManualTransactionDetails.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/TransactionAmountHeader.es.js +39 -0
- package/dist/transactions/components/shared/transactiondetails/TransactionAmountHeader.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/TransactionDetailsView.es.js +82 -0
- package/dist/transactions/components/shared/transactiondetails/TransactionDetailsView.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/AddMerchantBudgetAction.es.js +161 -0
- package/dist/transactions/components/shared/transactiondetails/actions/AddMerchantBudgetAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/CategoryAction.es.js +105 -0
- package/dist/transactions/components/shared/transactiondetails/actions/CategoryAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/DateAction.es.js +103 -0
- package/dist/transactions/components/shared/transactiondetails/actions/DateAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/DeleteAction.es.js +66 -0
- package/dist/transactions/components/shared/transactiondetails/actions/DeleteAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/DeleteLogoAction.es.js +77 -0
- package/dist/transactions/components/shared/transactiondetails/actions/DeleteLogoAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/ExcludeAction.es.js +90 -0
- package/dist/transactions/components/shared/transactiondetails/actions/ExcludeAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/MemoAction.es.js +101 -0
- package/dist/transactions/components/shared/transactiondetails/actions/MemoAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/SplitAction.es.js +150 -0
- package/dist/transactions/components/shared/transactiondetails/actions/SplitAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiondetails/actions/TagsAction.es.js +94 -0
- package/dist/transactions/components/shared/transactiondetails/actions/TagsAction.es.js.map +1 -0
- package/dist/transactions/components/shared/transactionlist/TransactionRow.es.js +92 -0
- package/dist/transactions/components/shared/transactionlist/TransactionRow.es.js.map +1 -0
- package/dist/transactions/components/shared/transactionlist/ZeroState.es.js +39 -0
- package/dist/transactions/components/shared/transactionlist/ZeroState.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiontable/cells/AccountCell.es.js +12 -0
- package/dist/transactions/components/shared/transactiontable/cells/AccountCell.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiontable/cells/AmountCell.es.js +30 -0
- package/dist/transactions/components/shared/transactiontable/cells/AmountCell.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiontable/cells/CategoryCell.es.js +38 -0
- package/dist/transactions/components/shared/transactiontable/cells/CategoryCell.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiontable/cells/DateCell.es.js +14 -0
- package/dist/transactions/components/shared/transactiontable/cells/DateCell.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiontable/cells/FlagCell.es.js +46 -0
- package/dist/transactions/components/shared/transactiontable/cells/FlagCell.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiontable/cells/HeaderCell.es.js +12 -0
- package/dist/transactions/components/shared/transactiontable/cells/HeaderCell.es.js.map +1 -0
- package/dist/transactions/components/shared/transactiontable/cells/PayeeCell.es.js +28 -0
- package/dist/transactions/components/shared/transactiontable/cells/PayeeCell.es.js.map +1 -0
- package/dist/transactions/components/splitmanager/SplitManager.es.js +68 -0
- package/dist/transactions/components/splitmanager/SplitManager.es.js.map +1 -0
- package/dist/transactions/components/splitmanager/SplitRow.es.js +119 -0
- package/dist/transactions/components/splitmanager/SplitRow.es.js.map +1 -0
- package/dist/transactions/components/tagmanager/Header.es.js +68 -0
- package/dist/transactions/components/tagmanager/Header.es.js.map +1 -0
- package/dist/transactions/components/tagmanager/SearchBox.es.js +48 -0
- package/dist/transactions/components/tagmanager/SearchBox.es.js.map +1 -0
- package/dist/transactions/components/tagmanager/TagManager.es.js +36 -0
- package/dist/transactions/components/tagmanager/TagManager.es.js.map +1 -0
- package/dist/transactions/components/tagmanager/TagRow.es.js +108 -0
- package/dist/transactions/components/tagmanager/TagRow.es.js.map +1 -0
- package/dist/transactions/components/transactionwidget/AddAccountModal.es.js +33 -0
- package/dist/transactions/components/transactionwidget/AddAccountModal.es.js.map +1 -0
- package/dist/transactions/components/transactionwidget/actions/EditCategoryAction.es.js +44 -0
- package/dist/transactions/components/transactionwidget/actions/EditCategoryAction.es.js.map +1 -0
- package/dist/transactions/components/transactionwidget/actions/ExportCsvAction.es.js +26 -0
- package/dist/transactions/components/transactionwidget/actions/ExportCsvAction.es.js.map +1 -0
- package/dist/transactions/constants/Actions.es.js +22 -0
- package/dist/transactions/constants/Actions.es.js.map +1 -0
- package/dist/transactions/constants/OnClickEvents.es.js +50 -0
- package/dist/transactions/constants/OnClickEvents.es.js.map +1 -0
- package/dist/transactions/context/hooks.es.js +12 -0
- package/dist/transactions/context/hooks.es.js.map +1 -0
- package/dist/transactions/index.es.js +17 -604
- package/dist/transactions/utils/Filters.es.js +11 -0
- package/dist/transactions/utils/Filters.es.js.map +1 -0
- package/dist/transactions/utils/Transactions.es.js +24 -0
- package/dist/transactions/utils/Transactions.es.js.map +1 -0
- package/dist/trends/TrendsFullWidget.es.js +154 -0
- package/dist/trends/TrendsFullWidget.es.js.map +1 -0
- package/dist/trends/TrendsMicroWidget.es.js +72 -0
- package/dist/trends/TrendsMicroWidget.es.js.map +1 -0
- package/dist/trends/TrendsMiniWidget.es.js +43 -0
- package/dist/trends/TrendsMiniWidget.es.js.map +1 -0
- package/dist/trends/TrendsWidget.es.js +207 -0
- package/dist/trends/TrendsWidget.es.js.map +1 -0
- package/dist/trends/ZeroStateMicroWidget.es.js +30 -0
- package/dist/trends/ZeroStateMicroWidget.es.js.map +1 -0
- package/dist/trends/components/CategoriesList.es.js +64 -0
- package/dist/trends/components/CategoriesList.es.js.map +1 -0
- package/dist/trends/components/CategoriesListItem.es.js +44 -0
- package/dist/trends/components/CategoriesListItem.es.js.map +1 -0
- package/dist/trends/components/CategoryDetailChart.es.js +45 -0
- package/dist/trends/components/CategoryDetailChart.es.js.map +1 -0
- package/dist/trends/components/CategoryDetails.es.js +104 -0
- package/dist/trends/components/CategoryDetails.es.js.map +1 -0
- package/dist/trends/components/DateRangeText.es.js +26 -0
- package/dist/trends/components/DateRangeText.es.js.map +1 -0
- package/dist/trends/components/SpendingChart.es.js +28 -0
- package/dist/trends/components/SpendingChart.es.js.map +1 -0
- package/dist/trends/components/TrendsChart.es.js +63 -0
- package/dist/trends/components/TrendsChart.es.js.map +1 -0
- package/dist/trends/components/TrendsChartTotals.es.js +58 -0
- package/dist/trends/components/TrendsChartTotals.es.js.map +1 -0
- package/dist/trends/components/TrendsDrawer.es.js +38 -0
- package/dist/trends/components/TrendsDrawer.es.js.map +1 -0
- package/dist/trends/components/TrendsInsights.es.js +38 -0
- package/dist/trends/components/TrendsInsights.es.js.map +1 -0
- package/dist/trends/components/TrendsMicroSpendingIncomeBox.es.js +82 -0
- package/dist/trends/components/TrendsMicroSpendingIncomeBox.es.js.map +1 -0
- package/dist/trends/components/TrendsTableContainer.es.js +56 -0
- package/dist/trends/components/TrendsTableContainer.es.js.map +1 -0
- package/dist/trends/components/TrendsViewToggle.es.js +28 -0
- package/dist/trends/components/TrendsViewToggle.es.js.map +1 -0
- package/dist/trends/components/trendstable/AccessibleSortIcon.es.js +49 -0
- package/dist/trends/components/trendstable/AccessibleSortIcon.es.js.map +1 -0
- package/dist/trends/components/trendstable/AmountCell.es.js +24 -0
- package/dist/trends/components/trendstable/AmountCell.es.js.map +1 -0
- package/dist/trends/components/trendstable/CategoryCell.es.js +30 -0
- package/dist/trends/components/trendstable/CategoryCell.es.js.map +1 -0
- package/dist/trends/components/trendstable/HeaderCell.es.js +12 -0
- package/dist/trends/components/trendstable/HeaderCell.es.js.map +1 -0
- package/dist/trends/components/trendstable/TrendsTable.es.js +53 -0
- package/dist/trends/components/trendstable/TrendsTable.es.js.map +1 -0
- package/dist/trends/constants/TrendsInsights.es.js +40 -0
- package/dist/trends/constants/TrendsInsights.es.js.map +1 -0
- package/dist/trends/constants/TrendsWidget.es.js +6 -0
- package/dist/trends/constants/TrendsWidget.es.js.map +1 -0
- package/dist/trends/index.es.js +8 -1612
- package/dist/trends/utils/SpendingData.es.js +53 -0
- package/dist/trends/utils/SpendingData.es.js.map +1 -0
- package/dist/trends/utils/TrendsTable.es.js +101 -0
- package/dist/trends/utils/TrendsTable.es.js.map +1 -0
- package/dist/trends/utils/TrendsWidget.es.js +11 -0
- package/dist/trends/utils/TrendsWidget.es.js.map +1 -0
- package/dist/trends/utils/shared.es.js +18 -0
- package/dist/trends/utils/shared.es.js.map +1 -0
- package/package.json +34 -39
- package/dist/Account-DR7Plrqy.mjs +0 -119
- package/dist/Account-DR7Plrqy.mjs.map +0 -1
- package/dist/AccountDetailsDrawer-BcwBkxIE.mjs +0 -922
- package/dist/AccountDetailsDrawer-BcwBkxIE.mjs.map +0 -1
- package/dist/AccountDetailsHeader-C84CSN2K.mjs +0 -230
- package/dist/AccountDetailsHeader-C84CSN2K.mjs.map +0 -1
- package/dist/AccountUtils-Cbh8r9cP.mjs +0 -29
- package/dist/AccountUtils-Cbh8r9cP.mjs.map +0 -1
- package/dist/Analytics-B8AaC22u.mjs +0 -54
- package/dist/Analytics-B8AaC22u.mjs.map +0 -1
- package/dist/Analytics-D-jdcL72.mjs +0 -140
- package/dist/Analytics-D-jdcL72.mjs.map +0 -1
- package/dist/ApiEndpoints-DXwIYNUV.mjs +0 -50
- package/dist/ApiEndpoints-DXwIYNUV.mjs.map +0 -1
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs +0 -27
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs.map +0 -1
- package/dist/BudgetUtil-Bg2AQJpQ.mjs +0 -75
- package/dist/BudgetUtil-Bg2AQJpQ.mjs.map +0 -1
- package/dist/Category-DEKZGLYe.mjs +0 -302
- package/dist/Category-DEKZGLYe.mjs.map +0 -1
- package/dist/CategorySelectorDrawer-BIsncOhX.mjs +0 -431
- package/dist/CategorySelectorDrawer-BIsncOhX.mjs.map +0 -1
- package/dist/Connect-BH0Pt6zc.mjs +0 -43
- package/dist/Connect-BH0Pt6zc.mjs.map +0 -1
- package/dist/ConnectCard-BdxyIUkW.mjs +0 -55
- package/dist/ConnectCard-BdxyIUkW.mjs.map +0 -1
- package/dist/ConnectDrawer-CYP3sd5f.mjs +0 -58
- package/dist/ConnectDrawer-CYP3sd5f.mjs.map +0 -1
- package/dist/ConnectionsDrawer-Pjc0E6uI.mjs +0 -54
- package/dist/ConnectionsDrawer-Pjc0E6uI.mjs.map +0 -1
- package/dist/CurrencyDialog-DumQCTPO.mjs +0 -374
- package/dist/CurrencyDialog-DumQCTPO.mjs.map +0 -1
- package/dist/CurrencyInput-DaGEQaLW.mjs +0 -88
- package/dist/CurrencyInput-DaGEQaLW.mjs.map +0 -1
- package/dist/CurrencyText-CCbE6MmF.mjs +0 -21
- package/dist/CurrencyText-CCbE6MmF.mjs.map +0 -1
- package/dist/DateFormats-HudZ3Bjs.mjs +0 -65
- package/dist/DateFormats-HudZ3Bjs.mjs.map +0 -1
- package/dist/DateUtil-Bl7d7C1W.mjs +0 -76
- package/dist/DateUtil-Bl7d7C1W.mjs.map +0 -1
- package/dist/DebtUtils-i4pI2Uoe.mjs +0 -154
- package/dist/DebtUtils-i4pI2Uoe.mjs.map +0 -1
- package/dist/Dialog-Bvd2n8hz.mjs +0 -67
- package/dist/Dialog-Bvd2n8hz.mjs.map +0 -1
- package/dist/Donut-SzzfZDHF.mjs +0 -89
- package/dist/Donut-SzzfZDHF.mjs.map +0 -1
- package/dist/Drawer-DLUMdk6P.mjs +0 -201
- package/dist/Drawer-DLUMdk6P.mjs.map +0 -1
- package/dist/EmbeddedCard-DCR-ziFE.mjs +0 -860
- package/dist/EmbeddedCard-DCR-ziFE.mjs.map +0 -1
- package/dist/EmptyState-CJUDc3kD.mjs +0 -85
- package/dist/EmptyState-CJUDc3kD.mjs.map +0 -1
- package/dist/Error-Dtw6yxkf.mjs +0 -85
- package/dist/Error-Dtw6yxkf.mjs.map +0 -1
- package/dist/ErrorBoundary-C7BlHx04.mjs +0 -27
- package/dist/ErrorBoundary-C7BlHx04.mjs.map +0 -1
- package/dist/ExportCsvAction-C2Y4D7Kn.mjs +0 -25
- package/dist/ExportCsvAction-C2Y4D7Kn.mjs.map +0 -1
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs +0 -230
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs.map +0 -1
- package/dist/GlobalCopyApi-CLhyon-B.mjs +0 -145
- package/dist/GlobalCopyApi-CLhyon-B.mjs.map +0 -1
- package/dist/GoalsUtil-C9EnLWvC.mjs +0 -108
- package/dist/GoalsUtil-C9EnLWvC.mjs.map +0 -1
- package/dist/HeaderCell-P8w6CmfO.mjs +0 -7
- package/dist/HeaderCell-P8w6CmfO.mjs.map +0 -1
- package/dist/Help-CTmDMtG2.mjs +0 -3210
- package/dist/Help-CTmDMtG2.mjs.map +0 -1
- package/dist/Help-CkQTjORd.mjs +0 -300
- package/dist/Help-CkQTjORd.mjs.map +0 -1
- package/dist/IconBacking-DgT8DCeh.mjs +0 -40
- package/dist/IconBacking-DgT8DCeh.mjs.map +0 -1
- package/dist/InformationTooltip-4su8bn1e.mjs +0 -42
- package/dist/InformationTooltip-4su8bn1e.mjs.map +0 -1
- package/dist/InvestmentUtil-BItV7uEs.mjs +0 -135
- package/dist/InvestmentUtil-BItV7uEs.mjs.map +0 -1
- package/dist/LineChart-CUfiH86G.mjs +0 -613
- package/dist/LineChart-CUfiH86G.mjs.map +0 -1
- package/dist/ListItemAction-BqUCLj_w.mjs +0 -70
- package/dist/ListItemAction-BqUCLj_w.mjs.map +0 -1
- package/dist/ListItemRow-kH1rn8Xu.mjs +0 -68
- package/dist/ListItemRow-kH1rn8Xu.mjs.map +0 -1
- package/dist/ListItemWrapper-DRse79Iu.mjs +0 -44
- package/dist/ListItemWrapper-DRse79Iu.mjs.map +0 -1
- package/dist/Loader-CxeBwuPG.mjs +0 -22
- package/dist/Loader-CxeBwuPG.mjs.map +0 -1
- package/dist/Localization-DnoVyBNK.mjs +0 -39
- package/dist/Localization-DnoVyBNK.mjs.map +0 -1
- package/dist/ManageIncome-CRSMKFWt.mjs +0 -906
- package/dist/ManageIncome-CRSMKFWt.mjs.map +0 -1
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs +0 -46
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs.map +0 -1
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs +0 -67
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs.map +0 -1
- package/dist/NetWorthUtils-Dj7CgAg2.mjs +0 -96
- package/dist/NetWorthUtils-Dj7CgAg2.mjs.map +0 -1
- package/dist/Notification-DTNYSd8P.mjs +0 -8
- package/dist/Notification-DTNYSd8P.mjs.map +0 -1
- package/dist/NotificationSettings-BXpzPNjH.mjs +0 -678
- package/dist/NotificationSettings-BXpzPNjH.mjs.map +0 -1
- package/dist/NotificationUtils-BRGFTePr.mjs +0 -24
- package/dist/NotificationUtils-BRGFTePr.mjs.map +0 -1
- package/dist/NumberFormatting--XMeeBfr.mjs +0 -50
- package/dist/NumberFormatting--XMeeBfr.mjs.map +0 -1
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs +0 -115
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs.map +0 -1
- package/dist/RecurringSettings-7zGNq-fh.mjs +0 -89
- package/dist/RecurringSettings-7zGNq-fh.mjs.map +0 -1
- package/dist/RecurringTransactionsUtil-CfWviBh1.mjs +0 -299
- package/dist/RecurringTransactionsUtil-CfWviBh1.mjs.map +0 -1
- package/dist/ResponsiveButton-CC9F_Ezk.mjs +0 -46
- package/dist/ResponsiveButton-CC9F_Ezk.mjs.map +0 -1
- package/dist/SearchBox-Cpgu_gdO.mjs +0 -51
- package/dist/SearchBox-Cpgu_gdO.mjs.map +0 -1
- package/dist/Select-CSpkK5cR.mjs +0 -62
- package/dist/Select-CSpkK5cR.mjs.map +0 -1
- package/dist/SelectionBox-B4xELRgp.mjs +0 -49
- package/dist/SelectionBox-B4xELRgp.mjs.map +0 -1
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs +0 -70
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs.map +0 -1
- package/dist/Sizes-DISGrlUg.mjs +0 -7
- package/dist/Sizes-DISGrlUg.mjs.map +0 -1
- package/dist/SkeletonLoader-BaNboJjD.mjs +0 -39
- package/dist/SkeletonLoader-BaNboJjD.mjs.map +0 -1
- package/dist/SpendingData-Fii_xATx.mjs +0 -54
- package/dist/SpendingData-Fii_xATx.mjs.map +0 -1
- package/dist/SpendingLegend-CxvNOg3c.mjs +0 -204
- package/dist/SpendingLegend-CxvNOg3c.mjs.map +0 -1
- package/dist/StatusBar-CPfSXe80.mjs +0 -31
- package/dist/StatusBar-CPfSXe80.mjs.map +0 -1
- package/dist/TabContentContainer-B0eYJP5p.mjs +0 -49
- package/dist/TabContentContainer-B0eYJP5p.mjs.map +0 -1
- package/dist/ToggleListItem-Dl1lXNwj.mjs +0 -92
- package/dist/ToggleListItem-Dl1lXNwj.mjs.map +0 -1
- package/dist/TransactionDetails-C5JAB8SL.mjs +0 -1710
- package/dist/TransactionDetails-C5JAB8SL.mjs.map +0 -1
- package/dist/TransactionUtils-BphBJBbU.mjs +0 -235
- package/dist/TransactionUtils-BphBJBbU.mjs.map +0 -1
- package/dist/TrendsUtil-D9z3kIj_.mjs +0 -70
- package/dist/TrendsUtil-D9z3kIj_.mjs.map +0 -1
- package/dist/UserStore-Cp-2Jtnw.mjs +0 -3210
- package/dist/UserStore-Cp-2Jtnw.mjs.map +0 -1
- package/dist/ViewMoreMicroCard-B4oeGrbE.mjs +0 -1280
- package/dist/ViewMoreMicroCard-B4oeGrbE.mjs.map +0 -1
- package/dist/WidgetContainer-DKRs7nIV.mjs +0 -487
- package/dist/WidgetContainer-DKRs7nIV.mjs.map +0 -1
- package/dist/accounts/components/ConnectStatus.d.ts +0 -7
- package/dist/accounts/index.es.js.map +0 -1
- package/dist/analytics/index.es.js.map +0 -1
- package/dist/budgets/index.es.js.map +0 -1
- package/dist/cashflow/index.es.js.map +0 -1
- package/dist/categories/index.es.js.map +0 -1
- package/dist/common/index.es.js.map +0 -1
- package/dist/core/index.es.js.map +0 -1
- package/dist/dashboard/index.es.js.map +0 -1
- package/dist/debts/index.es.js.map +0 -1
- package/dist/finstrong/index.es.js.map +0 -1
- package/dist/goals/index.es.js.map +0 -1
- package/dist/help/index.es.js.map +0 -1
- package/dist/hooks-97sNJ_lf.mjs +0 -78
- package/dist/hooks-97sNJ_lf.mjs.map +0 -1
- package/dist/insights/index.es.js.map +0 -1
- package/dist/investments/index.es.js.map +0 -1
- package/dist/merchants/index.es.js.map +0 -1
- package/dist/microinsights/index.es.js.map +0 -1
- package/dist/networth/index.es.js.map +0 -1
- package/dist/notifications/index.es.js.map +0 -1
- package/dist/recurringtransactions/index.es.js.map +0 -1
- package/dist/settings/index.es.js.map +0 -1
- package/dist/spending/index.es.js.map +0 -1
- package/dist/transactions/index.es.js.map +0 -1
- package/dist/trends/index.es.js.map +0 -1
- package/dist/useAccountDisplayName-BsiXA0qf.mjs +0 -24
- package/dist/useAccountDisplayName-BsiXA0qf.mjs.map +0 -1
- package/dist/useAriaLive-MkYebyUR.mjs +0 -36
- package/dist/useAriaLive-MkYebyUR.mjs.map +0 -1
- package/dist/useDimensions-CeDR9V8N.mjs +0 -37
- package/dist/useDimensions-CeDR9V8N.mjs.map +0 -1
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs +0 -12
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs.map +0 -1
- package/dist/useScreenSize-mWpmnh5w.mjs +0 -37
- package/dist/useScreenSize-mWpmnh5w.mjs.map +0 -1
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs +0 -20
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/common/constants/FinStrong.ts","../../src/finstrong/components/ProfileList.tsx","../../src/finstrong/util/finstrongUtils.tsx","../../src/finstrong/components/shared/CustomPieArc.tsx","../../src/finstrong/components/shared/DialScoreCard.tsx","../../src/finstrong/components/FinancialStrengthGraph.tsx","../../src/finstrong/components/CreditScoreGraph.tsx","../../src/finstrong/components/ConnectMoreAccountsCard.tsx","../../src/finstrong/constants/index.ts","../../src/finstrong/components/ManageCreditScore.tsx","../../src/finstrong/components/shared/LineGraph.tsx","../../src/finstrong/components/CreditScore/CreditScoreContent.tsx","../../src/finstrong/components/StatusChip.tsx","../../src/finstrong/components/CreditScore/CreditScoreHeader.tsx","../../src/finstrong/components/KeyIndicatorsDrawer.tsx","../../src/accounts/components/AccountsListCompact.tsx","../../src/finstrong/components/shared/Accounts.tsx","../../src/finstrong/components/shared/TotalCard.tsx","../../src/core/types/Finstrong.ts","../../src/finstrong/components/MaintainingEmergencySavings/EstimatedContributionCalculator.tsx","../../src/finstrong/components/MaintainingEmergencySavings/MaintainingEmergencySavingsContent.tsx","../../src/finstrong/components/ProgressBar.tsx","../../src/finstrong/components/MaintainingEmergencySavings/MaintainingEmergencySavingsSticky.tsx","../../src/finstrong/components/shared/Transactions.tsx","../../src/finstrong/components/paybillsontime/PayBillsOnTimeDrawerComponent.tsx","../../src/finstrong/components/paybillsontime/PayBillsOnTimeStickyComponent.tsx","../../src/finstrong/components/SaveEnoughToLiveOn/AvailableTabContent.tsx","../../src/finstrong/components/SaveEnoughToLiveOn/SpendingTabContent.tsx","../../src/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnDrawerContent.tsx","../../src/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnProgressBar.tsx","../../src/finstrong/components/HaveManageableDebt/HaveManageableDebtProgressBar.tsx","../../src/finstrong/components/HaveManageableDebt/IncomeTabContent.tsx","../../src/finstrong/components/HaveManageableDebt/DebtPaymentTabContent.tsx","../../src/finstrong/components/shared/CustomDoubleBarPlot.tsx","../../src/finstrong/components/shared/DoubleBarChart.tsx","../../src/finstrong/components/HaveManageableDebt/HaveManageableDebtComponent.tsx","../../src/finstrong/components/SpendLessThanYouMake/SpendLessThanYouMakeProgressBar.tsx","../../src/finstrong/components/SpendLessThanYouMake/SpendLessThanYouMakeComponent.tsx","../../src/finstrong/components/KeyIndicatorsTabItemDrawer.tsx","../../src/finstrong/components/KeyIndicatorsTabItem.tsx","../../src/finstrong/components/KeyIndicatorsSpendTab.tsx","../../src/finstrong/components/KeyIndicatorsSaveTab.tsx","../../src/finstrong/components/KeyIndicatorsBorrowTab.tsx","../../src/finstrong/components/KeyIndicatorsTabsWidget.tsx","../../src/finstrong/components/MissingData.tsx","../../src/finstrong/components/onboarding/OnboardingAddMonthlyIncome.tsx","../../src/finstrong/components/onboarding/OnboardingBirthday.tsx","../../src/finstrong/components/onboarding/OnboardingCreditScore.tsx","../../src/finstrong/components/ProfileProgressBar.tsx","../../src/finstrong/components/onboarding/OnboardingStepsHeader.tsx","../../src/finstrong/components/onboarding/OnboardingStepsDrawer.tsx","../../src/finstrong/components/onboarding/Onboarding.tsx","../../src/finstrong/components/ManageDOB.tsx","../../src/finstrong/components/ProfileDrawer.tsx","../../src/finstrong/components/shared/ScoreHistoryTimelineItem.tsx","../../src/finstrong/components/shared/ScoreHistoryTimeline.tsx","../../src/finstrong/components/ScoreHistoryDrawer.tsx","../../src/finstrong/components/HealthChart.tsx","../../src/finstrong/components/ScoreRubricDrawer.tsx","../../src/finstrong/FinancialStrengthCard.tsx","../../src/finstrong/FinstrongWidget.tsx"],"sourcesContent":["export const FinstrongThresholds = {\n creditScore: {\n poor: 600,\n good: 720,\n },\n daysOfCashOnHand: {\n poor: 30,\n good: 90,\n },\n debtToIncomeRatio: {\n poor: 40,\n good: 30,\n },\n emergencySavings: {\n poor: 750,\n good: 1000,\n },\n spendToIncomeRatio: {\n poor: 110,\n good: 100,\n },\n}\n\nexport const CardStatus = {\n GOOD: 'GOOD',\n FAIR: 'FAIR',\n OFF_TRACK: 'OFF TRACK',\n MISSING: 'MISSING DATA',\n}\n","import React from 'react'\n\nimport Avatar from '@mui/material/Avatar'\nimport Box from '@mui/material/Box'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nexport enum Action {\n Connections = 'connections',\n CreditScore = 'credit_score',\n DateOfBirth = 'date_of_birth',\n MonthlyIncome = 'monthly_income',\n}\n\ninterface ProfileListItem {\n icon: React.ReactNode\n isComplete: boolean\n key: Action\n primaryText: string\n secondaryText: string\n}\n\ninterface ProfileListProps {\n list: ProfileListItem[]\n onClickItem: (action: Action) => void\n}\n\nconst ProfileList = ({ list, onClickItem }: ProfileListProps) => (\n <Box sx={{ bgcolor: 'background.paper' }}>\n <List\n sx={{\n '& .MuiListItemSecondaryAction-root': {\n color: 'text.primary',\n pr: 24,\n },\n }}\n >\n {list.map((item, i) => (\n <React.Fragment key={item.key}>\n <ListItem secondaryAction={<ChevronRight />}>\n <ListItemButton onClick={() => onClickItem(item.key)}>\n <ListItemAvatar>\n <Avatar\n sx={{\n bgcolor: 'primary.main',\n ...(!item.isComplete && {\n bgcolor: 'transparent',\n borderColor: 'action.active',\n borderStyle: 'solid',\n borderWidth: 1,\n color: 'action.active',\n }),\n }}\n >\n {item.icon}\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary={\n <Text sx={{ color: 'text.secondary' }} variant=\"caption\">\n {item.primaryText}\n </Text>\n }\n secondary={\n <Text sx={{ color: 'text.primary', fontWeight: 600 }} variant=\"body1\">\n {item.secondaryText}\n </Text>\n }\n />\n </ListItemButton>\n </ListItem>\n <Divider sx={{ color: 'divider', ml: i === list.length - 1 ? 0 : 68 }} />\n </React.Fragment>\n ))}\n </List>\n </Box>\n)\n\nexport default ProfileList\n","import { addDays } from 'date-fns/addDays'\nimport { addMonths } from 'date-fns/addMonths'\nimport { addYears } from 'date-fns/addYears'\nimport { differenceInDays } from 'date-fns/differenceInDays'\nimport { differenceInMonths } from 'date-fns/differenceInMonths'\nimport { differenceInWeeks } from 'date-fns/differenceInWeeks'\nimport { format } from 'date-fns/format'\nimport { startOfToday } from 'date-fns/startOfToday'\n\nimport type { PieValueType } from '@mui/x-charts'\n\nimport { Check } from '@mxenabled/mx-icons'\n\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { type MonthlySummaries } from '../../core'\nimport type {\n CreditScoreStatusCopy,\n FinstrongCopy,\n KeyIndicatorSpend,\n} from '../../core/types/localization/FinstrongCopy'\nimport { CardStatus, FinstrongThresholds } from '../../common/constants/FinStrong'\n\nimport { Action } from '../components/ProfileList'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nexport const radiansToDegrees = (radians: number): number => {\n return radians * (180 / Math.PI)\n}\n\nexport const calculateFinstrongScoreStatus = (healthScore: number, copy: FinstrongCopy) => {\n const scoreRanges = [\n {\n description: copy.vulnerable_description,\n max: 25,\n scoreContent: copy.accordion_details_text.vulnerable,\n status: copy.vulnerable,\n },\n {\n description: copy.building_description,\n max: 50,\n scoreContent: copy.accordion_details_text.building,\n status: copy.building,\n },\n {\n description: copy.stable_description,\n max: 75,\n scoreContent: copy.accordion_details_text.stable,\n status: copy.stable,\n },\n {\n description: copy.strong_description,\n max: 100,\n scoreContent: copy.accordion_details_text.strong,\n status: copy.strong,\n },\n ]\n\n const foundRange = scoreRanges.find((range) => healthScore > 0 && healthScore <= range.max)\n\n return foundRange || { status: copy.insufficient_data, description: '', scoreContent: '' }\n}\n\nexport const CreditScoreLightColors = {\n POOR: '#8C0E0E',\n FAIR: '#E32727',\n GOOD: '#FFB70D',\n VERY_GOOD: '#0EA26C',\n EXCEPTIONAL: '#005C3D',\n}\n\nexport const CreditScoreDarkColors = {\n POOR: '#B21C1C',\n FAIR: '#FF3232',\n GOOD: '#FFC02C',\n VERY_GOOD: '#29C76B',\n EXCEPTIONAL: '#008A5A',\n}\n\nexport const getCreditScoreDetails = (\n healthScore: number,\n isDarkMode: boolean,\n copy: CreditScoreStatusCopy,\n) => {\n if (healthScore >= 300 && healthScore < 580) {\n return {\n status: copy.poor,\n color: isDarkMode ? CreditScoreDarkColors.POOR : CreditScoreLightColors.POOR,\n }\n } else if (healthScore >= 580 && healthScore < 670) {\n return {\n status: copy.fair,\n color: isDarkMode ? CreditScoreDarkColors.FAIR : CreditScoreLightColors.FAIR,\n }\n } else if (healthScore >= 670 && healthScore < 740) {\n return {\n status: copy.good,\n color: isDarkMode ? CreditScoreDarkColors.GOOD : CreditScoreLightColors.GOOD,\n }\n } else if (healthScore >= 740 && healthScore < 800) {\n return {\n status: copy.very_good,\n color: isDarkMode ? CreditScoreDarkColors.VERY_GOOD : CreditScoreLightColors.VERY_GOOD,\n }\n } else if (healthScore >= 800 && healthScore <= 850) {\n return {\n status: copy.exceptional,\n color: isDarkMode ? CreditScoreDarkColors.EXCEPTIONAL : CreditScoreLightColors.EXCEPTIONAL,\n }\n }\n return { status: copy.missing_data }\n}\n\nexport const getOutterArcStartEndAngle = (\n healthScoreData: PieValueType[],\n totalAngularSpan: number,\n arcStartAngle: number,\n dataIndex: number,\n) => {\n const total = healthScoreData.reduce((sum, item) => sum + item.value, 0)\n\n let cumulativeAngle = 0\n\n const arcs = healthScoreData.map((item) => {\n const anglePortion = (item.value / total) * totalAngularSpan\n\n const sliceStart = arcStartAngle + cumulativeAngle\n const sliceEnd = sliceStart + anglePortion\n\n cumulativeAngle += anglePortion\n\n return {\n ...item,\n startAngle: sliceStart,\n endAngle: sliceEnd,\n }\n })\n return [arcs[dataIndex].startAngle, arcs[dataIndex].endAngle]\n}\n\nexport const getFilledArcStartEndAngle = (\n outterArcStartAngle: number,\n outterArcEndAngle: number,\n dataIndex: number,\n unitsPerSegment: number,\n progressEndAngle: number,\n) => {\n let filledArcStartAngle = 0\n let filledArcEndAngle = 0\n const wholeSegments = Math.floor(unitsPerSegment)\n const partialSegment = unitsPerSegment - wholeSegments\n if (wholeSegments > dataIndex) {\n filledArcStartAngle = outterArcStartAngle\n filledArcEndAngle = outterArcEndAngle\n } else if (wholeSegments === dataIndex && partialSegment > 0) {\n filledArcStartAngle = outterArcStartAngle\n filledArcEndAngle = progressEndAngle\n }\n return [filledArcStartAngle, filledArcEndAngle]\n}\n\nexport const getMarkerXYCoordinates = (\n markerRadius: number,\n progressEndAngle: number,\n angleOffset: number = 0,\n) => {\n const markerX = markerRadius * Math.sin(progressEndAngle - angleOffset)\n const markerY = -markerRadius * Math.cos(progressEndAngle - angleOffset)\n return [markerX, markerY]\n}\n\nexport const buildProfileItem = ({\n dynamicCopy,\n fallbackLabel,\n icon,\n key,\n label,\n value,\n}: {\n dynamicCopy?: string\n fallbackLabel: string\n icon: React.JSX.Element\n key: Action\n label: string\n value: string | number | undefined | null\n}) => {\n const isComplete = Boolean(value)\n\n const secondaryText = isComplete\n ? getFormattedValue(key, value!)\n : (dynamicCopy && (buildDynamicCopy(dynamicCopy, fallbackLabel) as string)) || fallbackLabel\n\n return {\n icon: isComplete ? <Check /> : icon,\n isComplete,\n key,\n primaryText: label,\n secondaryText,\n }\n}\n\nconst getFormattedValue = (key: Action, value: string | number) => {\n const formatters: Partial<Record<Action, (value: string | number) => string>> = {\n [Action.DateOfBirth]: (v) => format(new Date(Number(v) * 1000), 'MMM d, yyyy'),\n [Action.MonthlyIncome]: (v) => formatCurrency(Number(v), '0.00'),\n }\n\n return formatters[key]?.(value) ?? String(value)\n}\n\nexport const getPercentFromRatio = (ratio: number | null) => {\n return ratio !== null ? Math.round(ratio * 100) : null\n}\n\nexport const getMonthName = (month: number): string => {\n const date = new Date(new Date().getFullYear(), month - 1, 1)\n return formatDate(date, DATE_FORMATS_INTL.MONTH_SHORT)\n}\n\nexport const getDaysOfCashOnHandState = (days: number | null): keyof typeof CardStatus => {\n const { good, poor } = FinstrongThresholds.daysOfCashOnHand\n\n if (days === null) return 'MISSING'\n if (days >= good) return 'GOOD'\n if (days >= poor) return 'FAIR'\n\n return 'OFF_TRACK'\n}\n\nexport const getEmergencySavingsState = (dollars: number | null): keyof typeof CardStatus => {\n const { good, poor } = FinstrongThresholds.emergencySavings\n\n if (dollars === null) return 'MISSING'\n if (dollars >= good) return 'GOOD'\n if (dollars >= poor) return 'FAIR'\n return 'OFF_TRACK'\n}\n\nexport const getSpendToIncomeRatioState = (ratio: number | null): keyof typeof CardStatus => {\n const { good, poor } = FinstrongThresholds.spendToIncomeRatio\n\n if (ratio === null) return 'MISSING'\n if (ratio < good) return 'GOOD'\n if (ratio < poor) return 'FAIR'\n return 'OFF_TRACK'\n}\n\nexport const getManageDebtRatioState = (ratio: number | null): keyof typeof CardStatus => {\n const { good, poor } = FinstrongThresholds.debtToIncomeRatio\n\n if (ratio === null) return 'MISSING'\n if (ratio <= good) return 'GOOD'\n if (ratio <= poor) return 'FAIR'\n return 'OFF_TRACK'\n}\n\nexport const getCreditScoreState = (score: number | null): keyof typeof CardStatus => {\n const { good, poor } = FinstrongThresholds.creditScore\n\n if (score === null) return 'MISSING'\n if (score >= good) return 'GOOD'\n if (score >= poor) return 'FAIR'\n return 'OFF_TRACK'\n}\n\nexport const getSpendingFeeCountState = (count: number | null) => {\n if (count === null) return 'MISSING'\n if (count === 0) return 'GOOD'\n return 'OFF_TRACK'\n}\n\nexport const getSpendingFeeCountStatus = (\n count: number | null,\n spendCopy: KeyIndicatorSpend,\n): {\n cardState: keyof typeof CardStatus\n description: string\n title: string\n} => {\n const state = getSpendingFeeCountState(count)\n\n const cardStatusMapping = {\n GOOD: spendCopy.count_good_description,\n OFF_TRACK: spendCopy.count_off_track_description,\n MISSING: spendCopy.count_missing_description,\n }\n\n return {\n cardState: state,\n description: cardStatusMapping[state],\n title: spendCopy.count_card_title,\n }\n}\n\nexport const getCardStateStyles = (cardState: string) => {\n return {\n [CardStatus.GOOD]: { backgroundColor: 'success.lighter', color: 'success.dark' },\n [CardStatus.FAIR]: { backgroundColor: 'warning.lighter', color: 'warning.dark' },\n [CardStatus.OFF_TRACK]: { backgroundColor: 'error.lighter', color: 'error.dark' },\n [CardStatus.MISSING]: { backgroundColor: 'divider', color: 'text.secondary' },\n }[cardState]\n}\n\nconst DEFAULT_CONTRIBUTION_PERIOD_INDEX = 1\nconst DEFAULT_TARGET_AMOUNT = 1\n\nconst getFutureDate = {\n 1: addMonths,\n 2: addYears,\n 3: addDays,\n} as const\n\nconst getNumberOfPayments = {\n 1: differenceInMonths,\n 2: (end: Date, start: Date) => differenceInWeeks(end, start) / 2,\n 3: differenceInWeeks,\n 4: differenceInDays,\n} as const\n\nconst SAVINGS_BUCKETS = [\n { contributionPeriodIndex: 3, targetAmount: 6, upperLimit: 500 },\n { contributionPeriodIndex: 3, targetAmount: 3, upperLimit: 900 },\n { contributionPeriodIndex: 2, targetAmount: 1, upperLimit: 1000 },\n]\n\ninterface CalculateContributionParams {\n contribution: keyof typeof getNumberOfPayments\n goalAmount: number\n goalPeriod: number\n targetPeriod: keyof typeof getFutureDate\n totalSaved: number\n}\n\nexport const calculateContribution = ({\n contribution,\n goalAmount,\n goalPeriod,\n targetPeriod,\n totalSaved,\n}: CalculateContributionParams) => {\n const amountRemaining = goalAmount - totalSaved\n\n if (amountRemaining <= 0) return 0\n\n const today = startOfToday()\n const futureDateFn = getFutureDate[targetPeriod]\n const paymentFn = getNumberOfPayments[contribution]\n\n if (!futureDateFn || !paymentFn) return amountRemaining\n\n const futureDate = futureDateFn(today, goalPeriod)\n const payments = paymentFn(futureDate, today)\n\n return Math.max(amountRemaining / (payments || 1), 1)\n}\n\nexport const calculatePercentage = (amount: number | null): string => {\n if (!amount || amount <= 0) return '0%'\n if (amount >= 1000) return '100%'\n\n return `${Math.round(amount / 10)}%`\n}\n\nexport const getInitialTargetPeriodAmount = (totalSaved: number) => {\n const bucket = SAVINGS_BUCKETS.find((bucket) => totalSaved < bucket.upperLimit)\n\n return bucket?.targetAmount ?? DEFAULT_TARGET_AMOUNT\n}\n\nexport const getInitialContributionPeriod = (totalSaved: number) => {\n const bucket = SAVINGS_BUCKETS.find((bucket) => totalSaved < bucket.upperLimit)\n const periodIndex = bucket?.contributionPeriodIndex ?? DEFAULT_CONTRIBUTION_PERIOD_INDEX\n\n return periodIndex\n}\n\nexport const getSeriesGraphData = (\n monthlySummaries: MonthlySummaries[],\n valueKey: keyof Pick<MonthlySummaries, 'available_cash' | 'debt_balance' | 'credit_score'>,\n) => {\n const dataSet = [...monthlySummaries]\n .sort((a, b) => {\n return a.year === b.year ? a.month - b.month : a.year - b.year\n })\n .map((summary) => ({\n x: formatDate(new Date(0, summary.month - 1, 1), DATE_FORMATS_INTL.MONTH_SHORT),\n y: summary[valueKey],\n }))\n\n return dataSet\n}\n","import * as d3 from 'd3'\n\nimport { useTheme } from '@mui/material/styles'\n\nimport type { PieValueType } from '@mui/x-charts'\n\nimport { getFilledArcStartEndAngle, getOutterArcStartEndAngle } from '../../util/finstrongUtils'\n\ninterface CustomPieArcProps {\n dialScoreData: PieValueType[]\n dataIndex: number\n arcStartAngle: number\n totalAngularSpan: number\n centerX: number\n centerY: number\n arcRadius: number\n arcColor?: string\n innerArcRadius: number\n outterArcRadius: number\n unitsPerSegment: number\n progressEndAngle: number\n isFinacialStrengthGraph?: boolean\n}\nexport const CustomPieArc = ({\n dialScoreData,\n dataIndex,\n arcColor,\n arcStartAngle,\n totalAngularSpan,\n centerX,\n centerY,\n arcRadius,\n innerArcRadius,\n outterArcRadius,\n progressEndAngle,\n unitsPerSegment,\n isFinacialStrengthGraph,\n}: CustomPieArcProps) => {\n const theme = useTheme()\n const gradientSteps = [\n { offset: '13.62%', color: theme.palette.chartMono.chartMono2 },\n { offset: '36.67%', color: theme.palette.chartMono.chartMono3 },\n { offset: '59.72%', color: theme.palette.chartMono.chartMono4 },\n { offset: '83.46%', color: theme.palette.chartMono.chartMono5 },\n ]\n\n const [outterArcStartAngle, outterArcEndAngle] = getOutterArcStartEndAngle(\n dialScoreData,\n totalAngularSpan,\n arcStartAngle,\n dataIndex,\n )\n\n const [filledArcStartAngle, filledArcEndAngle] = getFilledArcStartEndAngle(\n outterArcStartAngle,\n outterArcEndAngle,\n dataIndex,\n unitsPerSegment,\n progressEndAngle,\n )\n\n const outerArcGenerator = d3\n .arc()\n .innerRadius(innerArcRadius)\n .outerRadius(outterArcRadius)\n .startAngle(outterArcStartAngle)\n .endAngle(outterArcEndAngle)\n .padAngle(0.02)\n .cornerRadius(8)\n\n const fillArcGenerator = d3\n .arc()\n .innerRadius(innerArcRadius)\n .outerRadius(outterArcRadius)\n .startAngle(filledArcStartAngle)\n .endAngle(filledArcEndAngle)\n .padAngle(0.02)\n .cornerRadius(8)\n\n return (\n <>\n {/* Background segment */}\n <path\n d={outerArcGenerator({} as d3.DefaultArcObject)!}\n fill={isFinacialStrengthGraph ? theme.palette.divider : arcColor}\n />\n\n {/* Progress segment */}\n {isFinacialStrengthGraph && (\n <path d={fillArcGenerator({} as d3.DefaultArcObject)!} fill=\"url(#arcGradient)\" />\n )}\n\n <defs>\n <linearGradient\n gradientTransform={`rotate(5, ${centerX}, ${centerY})`}\n gradientUnits=\"userSpaceOnUse\"\n id=\"arcGradient\"\n x1={centerX + arcRadius * 0.8 * Math.cos(Math.PI / 1.35)}\n x2={centerX - arcRadius * 0.8 * Math.cos(Math.PI / 1.35)}\n y1={centerY + arcRadius * 0.8 * Math.sin(Math.PI / 1.35)}\n y2={centerY - arcRadius * 0.8 * Math.sin(Math.PI / 1.35)}\n >\n {gradientSteps.map((eachStep, index) => (\n <stop key={index} offset={eachStep.offset} stopColor={eachStep.color} />\n ))}\n </linearGradient>\n </defs>\n </>\n )\n}\n","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","import { observer } from 'mobx-react-lite'\n\nimport { useGlobalCopyStore } from '../../common'\n\nimport { calculateFinstrongScoreStatus } from '../util/finstrongUtils'\n\nimport { DialScoreCard } from './shared/DialScoreCard'\n\nexport interface FinacialStrengthGraphProps {\n arcRadius: number\n size?: 'L' | 'M' | 'SM'\n healthScore: number\n footerCenterContent?: string | number\n margin?: { top?: number; right?: number; left?: number; bottom?: number }\n}\nexport const FinancialStrengthGraph = observer(\n ({\n arcRadius,\n size = 'L',\n healthScore,\n footerCenterContent,\n margin,\n }: FinacialStrengthGraphProps) => {\n const healthScoreData = [\n { id: 1, label: 'Group A', value: 25 },\n { id: 2, label: 'Group B', value: 25 },\n { id: 3, label: 'Group C', value: 25 },\n { id: 4, label: 'Group D', value: 25 },\n ]\n const { finstrong: copy } = useGlobalCopyStore()\n\n const healthScoreStatus = calculateFinstrongScoreStatus(healthScore, copy)\n\n return (\n <DialScoreCard\n arcRadius={arcRadius}\n dialScoreData={healthScoreData}\n footerCenterContent={\n size === 'L' ? copy.footer_center_content_updated_just_now : footerCenterContent\n }\n healthScore={healthScore}\n healthScoreStatus={healthScoreStatus.status}\n isFinacialStrengthGraph={true}\n margin={margin}\n size={size}\n />\n )\n },\n)\n","import { useTheme } from '@mui/material/styles'\n\nimport { observer } from 'mobx-react-lite'\n\nimport {\n CreditScoreDarkColors,\n CreditScoreLightColors,\n getCreditScoreDetails,\n} from '../util/finstrongUtils'\n\nimport { DialScoreCard } from './shared/DialScoreCard'\nimport { Loader, useGlobalCopyStore, useGlobalUiStore } from '../../common'\n\nexport interface CreditScoreGraphProps {\n arcRadius: number\n size?: 'L' | 'M' | 'SM'\n healthScore: number\n maxValue?: number\n minValue?: number\n footerCenterContent?: string | number\n}\nexport const CreditScoreGraph = observer(\n ({\n arcRadius,\n size = 'L',\n healthScore,\n maxValue = 850,\n minValue = 300,\n footerCenterContent,\n }: CreditScoreGraphProps) => {\n const theme = useTheme()\n\n const isDarkMode = theme.palette.mode === 'dark'\n const creditScoreData = [\n {\n id: 1,\n label: 'Poor',\n value: 29,\n color: isDarkMode ? CreditScoreDarkColors.POOR : CreditScoreLightColors.POOR,\n },\n {\n id: 2,\n label: 'Fair',\n value: 25,\n color: isDarkMode ? CreditScoreDarkColors.FAIR : CreditScoreLightColors.FAIR,\n },\n {\n id: 3,\n label: 'Good',\n value: 17,\n color: isDarkMode ? CreditScoreDarkColors.GOOD : CreditScoreLightColors.GOOD,\n },\n {\n id: 4,\n label: 'Very Good',\n value: 17,\n color: isDarkMode ? CreditScoreDarkColors.VERY_GOOD : CreditScoreLightColors.VERY_GOOD,\n },\n {\n id: 5,\n label: 'Exceptional',\n value: 12,\n color: isDarkMode ? CreditScoreDarkColors.EXCEPTIONAL : CreditScoreLightColors.EXCEPTIONAL,\n },\n ]\n const { finstrong: copy } = useGlobalCopyStore()\n\n const { isCopyLoaded } = useGlobalUiStore()\n\n if (!isCopyLoaded) return <Loader />\n\n const { status: creditScoreStatus, color: markerColor = 'none' } = getCreditScoreDetails(\n healthScore,\n isDarkMode,\n copy.credit_score_status,\n )\n return (\n <DialScoreCard\n arcRadius={arcRadius}\n dialScoreData={creditScoreData}\n footerCenterContent={footerCenterContent}\n footerLeftContent={minValue}\n footerRightContent={maxValue}\n healthScore={healthScore}\n healthScoreStatus={creditScoreStatus}\n markerColor={markerColor}\n maxValue={maxValue}\n minValue={minValue}\n size={size}\n />\n )\n },\n)\n","import React from 'react'\n\nimport { type SxProps } from '@mui/material/styles'\nimport { AccountBalance, ChevronRight } from '@mxenabled/mx-icons'\n\nimport { P, H3, Text } from '@mxenabled/mxui'\nimport Stack from '@mui/material/Stack'\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\n\nimport { ConnectDrawer, useAppConfig, useGlobalCopyStore } from '../../common'\nimport ConnectionsDrawer from '../../accounts/components/ConnectionsDrawer'\n\ninterface ConnectMoreAccountsCardProps {\n drawerType?: 'connectDrawer' | 'connectionsDrawer'\n isDashboard?: boolean\n hasIcon?: boolean\n buttonText?: string\n title?: string\n titleDrawer?: string\n description?: string\n sx?: SxProps\n}\n\nexport const ConnectMoreAccountsCard = ({\n drawerType,\n isDashboard = false,\n hasIcon = true,\n buttonText,\n title,\n titleDrawer,\n description,\n sx,\n}: ConnectMoreAccountsCardProps) => {\n const [showConnectWidget, setShowConnectWidget] = React.useState(false)\n const { connect: connectCopy, finstrong: copy } = useGlobalCopyStore()\n const { config } = useAppConfig()\n return drawerType && config.show_connections_widget_in_master ? (\n <Card\n sx={{\n pb: 24,\n pt: 18,\n px: 24,\n width: '100%',\n ...sx,\n }}\n >\n <Stack\n sx={{\n gap: 8,\n ...(isDashboard && { flexDirection: 'row', alignItems: 'center' }),\n }}\n >\n {hasIcon && <AccountBalance sx={{ height: 20, width: 20 }} />}\n <H3 className=\"connect-more-accounts-title\" sx={{ ...(isDashboard && { fontSize: 15 }) }}>\n {title ? title : copy.connect_more_accounts_title}\n </H3>\n </Stack>\n <P\n className=\"connect-more-accounts-description\"\n sx={{ color: 'text.secondary', mt: 8 }}\n variant=\"subtitle1\"\n >\n {description ? description : copy.connect_more_accounts_description}\n </P>\n\n <Button\n endIcon={<ChevronRight />}\n onClick={() => setShowConnectWidget(true)}\n size=\"small\"\n sx={{ p: 0, mt: 8, '&:hover': { backgroundColor: 'transparent' } }}\n >\n <Text sx={{ fontWeight: 600 }} variant=\"body2\">\n {buttonText ? buttonText : copy.connect_more_accounts_button}\n </Text>\n </Button>\n\n {drawerType === 'connectDrawer' && (\n <ConnectDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectWidget={showConnectWidget}\n title={titleDrawer ? titleDrawer : connectCopy.mini_title}\n />\n )}\n {drawerType === 'connectionsDrawer' && (\n <ConnectionsDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectionsWidget={showConnectWidget}\n title={titleDrawer ? titleDrawer : connectCopy.mini_title}\n />\n )}\n </Card>\n ) : null\n}\n","export enum KeyIndicatorsTabItemType {\n SpendLessThanYouMake = 'spendLessThanYouMake',\n PayBillsOnTime = 'payBillsOnTime',\n SaveEnoughToLiveOn = 'saveEnoughToLiveOn',\n MaintainEmergencySavings = 'maintainEmergencySavings',\n HaveManageableDebt = 'haveManageableDebt',\n HaveAGoodCreditScore = 'haveAGoodCreditScore',\n}\n\nexport const CALCULATING_ANIMATION_URL =\n 'https://content.moneydesktop.com/storage/MD_Assets/serenity/loading_animation_final.gif'\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport TextField from '@mui/material/TextField'\n\nimport { Dialog, useGlobalCopyStore, useScreenSize, useUserStore } from '../../common'\n\ninterface ManageCreditScoreProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst ManageCreditScore = ({ isOpen, onClose }: ManageCreditScoreProps) => {\n const { common: commonCopy, finstrong: finstrongCopy } = useGlobalCopyStore()\n const { isMobile } = useScreenSize()\n const { updateUser, user } = useUserStore()\n\n const [creditScore, setCreditScore] = React.useState<number>(user.credit_score || 0)\n\n const isValid = !isNaN(creditScore)\n\n const handleClose = () => {\n onClose()\n setTimeout(() => setCreditScore(user.credit_score || 0), 300)\n }\n\n const handlePrimaryAction = () => {\n if (!creditScore || creditScore === user.credit_score) return\n updateUser({ ...user, credit_score: creditScore })\n }\n\n return (\n <Dialog\n copy={{ close_aria: commonCopy.close_aria, title: finstrongCopy.edit_credit_score }}\n disablePrimaryButton={!creditScore || !isValid}\n isOpen={isOpen}\n maxWidth=\"xs\"\n onClose={handleClose}\n onPrimaryAction={handlePrimaryAction}\n primaryColor=\"primary\"\n primaryText={commonCopy.save_button}\n sx={{\n '& .MuiDialog-paper': {\n minWidth: isMobile ? '100%' : 400,\n },\n }}\n >\n <form\n onSubmit={(e) => {\n e.preventDefault()\n handlePrimaryAction()\n handleClose()\n }}\n >\n <TextField\n error={!isValid}\n fullWidth={true}\n inputMode=\"numeric\"\n onChange={(e) => setCreditScore(Number(e.target.value))}\n slotProps={{\n htmlInput: {\n noValidate: true,\n pattern: '[0-9]*',\n },\n }}\n value={isValid ? creditScore : ''}\n />\n </form>\n </Dialog>\n )\n}\n\nexport default observer(ManageCreditScore)\n","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","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\n\nimport {\n useFinstrongStore,\n useGlobalCopyStore,\n useScreenSize,\n useUserStore,\n useWidgetContainerProvider,\n} from '../../../common'\n\nimport { CreditScoreGraph } from '../CreditScoreGraph'\nimport ManageCreditScore from '../ManageCreditScore'\nimport LineGraph from '../shared/LineGraph'\n\nconst CreditScoreContent = () => {\n const { healthScoreChangeReports } = useFinstrongStore()\n const { finstrong: copy } = useGlobalCopyStore()\n const { user } = useUserStore()\n const { availableWidth } = useWidgetContainerProvider()\n const { isSmallMobile } = useScreenSize(availableWidth)\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n const lastReport = healthScoreChangeReports.at(-1)\n\n return (\n <Box>\n <Stack sx={{ gap: 28 }}>\n <CreditScoreGraph\n arcRadius={isSmallMobile ? 124 : 154}\n footerCenterContent={\n lastReport ? lastReport.newer_credit_score - lastReport.older_credit_score : 0\n }\n healthScore={user.credit_score ?? 0}\n size={isSmallMobile ? 'M' : 'L'}\n />\n <Button onClick={() => setIsOpen(true)} variant=\"contained\">\n {copy.credit_score_updated_score}\n </Button>\n <LineGraph chartFor=\"creditOverTime\" />\n </Stack>\n <ManageCreditScore isOpen={isOpen} onClose={() => setIsOpen(false)} />\n </Box>\n )\n}\n\nexport default observer(CreditScoreContent)\n","import Chip from '@mui/material/Chip'\n\nimport { P } from '@mxenabled/mxui'\n\nimport { CardStatus } from '../../common/constants/FinStrong'\n\nimport { getCardStateStyles } from '../util/finstrongUtils'\nimport { useGlobalCopyStore } from '../../common'\n\nconst StatusChip = ({ status }: { status: keyof typeof CardStatus }) => {\n const { finstrong: copy } = useGlobalCopyStore()\n\n const chipStyles = getCardStateStyles(CardStatus[status])\n const statusCopy = {\n GOOD: copy.key_indicators_good,\n FAIR: copy.key_indicators_fair,\n OFF_TRACK: copy.key_indicators_off_track,\n MISSING: copy.key_indicators_missing,\n }[status]\n\n return (\n <Chip\n label={\n <P\n fontWeight={700}\n sx={{ color: chipStyles.color, minHeight: 12 }}\n uppercase={true}\n variant=\"tiny\"\n >\n {statusCopy}\n </P>\n }\n size=\"small\"\n sx={{\n bgcolor: chipStyles.backgroundColor,\n height: 16,\n }}\n variant=\"filled\"\n />\n )\n}\n\nexport default StatusChip\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { H3 } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore, useUserStore } from '../../../common'\n\nimport { getCreditScoreState } from '../../util/finstrongUtils'\n\nimport StatusChip from '../StatusChip'\n\nconst CreditScoreHeader = () => {\n const { finstrong: copy } = useGlobalCopyStore()\n const { user } = useUserStore()\n\n const status = getCreditScoreState(user.credit_score ?? null)\n\n return (\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <H3>{copy.credit_score_keep_strong_credit_score}</H3>\n <StatusChip status={status} />\n </Stack>\n )\n}\n\nexport default observer(CreditScoreHeader)\n","import React, { useState, useEffect, useRef, useCallback } from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { P, H3 } from '@mxenabled/mxui'\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\n\nimport { Drawer, Loader, useGlobalCopyStore, useGlobalUiStore } from '../../common'\nimport { ConnectMoreAccountsCard } from './ConnectMoreAccountsCard'\n\ninterface KeyIndicatorsDrawerProps {\n additionalContent?: React.ReactNode\n connectTitle?: string\n connectDescription?: string\n children?: React.ReactNode\n description?: string\n drawerTitle?: string\n isOpen: boolean\n loadConnectAccountsCard?: boolean\n onClose: () => void\n stickyComponent?: React.ReactNode\n title?: string | React.ReactNode\n drawerType?: 'connectDrawer' | 'connectionsDrawer'\n}\n\nconst KeyIndicatorsDrawer: React.FC<React.PropsWithChildren<KeyIndicatorsDrawerProps>> = ({\n additionalContent,\n connectTitle,\n connectDescription,\n children,\n description,\n drawerTitle,\n isOpen,\n loadConnectAccountsCard = true,\n onClose,\n stickyComponent,\n title,\n drawerType,\n}: KeyIndicatorsDrawerProps) => {\n const { finstrong: copy } = useGlobalCopyStore()\n\n const { isCopyLoaded } = useGlobalUiStore()\n const [isScrolled, setIsScrolled] = useState(false)\n const scrollContainerRef = useRef<HTMLElement | null>(null)\n\n const handleScroll = useCallback(() => {\n if (scrollContainerRef.current) {\n const hasScrolled = scrollContainerRef.current.scrollTop > 0\n setIsScrolled((prev) => (prev !== hasScrolled ? hasScrolled : prev))\n }\n }, [])\n\n const contentCallbackRef = useCallback(\n (node: HTMLDivElement | null) => {\n // Clean up previous listener\n if (scrollContainerRef.current) {\n scrollContainerRef.current.removeEventListener('scroll', handleScroll)\n }\n\n if (node) {\n // Find the scrollable parent\n let parent = node.parentElement\n while (parent) {\n const { overflow, overflowY } = window.getComputedStyle(parent)\n if (\n overflow === 'auto' ||\n overflowY === 'auto' ||\n overflow === 'scroll' ||\n overflowY === 'scroll'\n ) {\n scrollContainerRef.current = parent\n parent.addEventListener('scroll', handleScroll, { passive: true })\n break\n }\n parent = parent.parentElement\n }\n }\n },\n [handleScroll],\n )\n\n useEffect(() => {\n if (!isOpen) {\n setIsScrolled(false)\n }\n }, [isOpen])\n\n useEffect(() => {\n return () => {\n if (scrollContainerRef.current) {\n scrollContainerRef.current.removeEventListener('scroll', handleScroll)\n }\n }\n }, [handleScroll])\n\n if (!isCopyLoaded) return <Loader />\n\n return (\n <Drawer isOpen={isOpen} onClose={onClose} title={drawerTitle || copy.key_indicators}>\n <Stack\n ref={contentCallbackRef}\n sx={{ backgroundColor: 'background.default', height: '100%' }}\n >\n {(title || description) && (\n <Stack\n sx={{\n backgroundColor: 'background.paper',\n gap: 8,\n p: 24,\n pb: stickyComponent ? 0 : 24,\n }}\n >\n {title && typeof title === 'string' ? <H3>{title}</H3> : title}\n {description && <P sx={{ lineHeight: '24px' }}>{description}</P>}\n </Stack>\n )}\n\n {stickyComponent && (\n <Box\n sx={{\n position: 'sticky',\n top: 0,\n zIndex: 1,\n '& > *': {\n borderBottom: isScrolled ? '1px solid' : 'none',\n borderColor: isScrolled ? 'divider' : 'transparent',\n },\n }}\n >\n {stickyComponent}\n </Box>\n )}\n {additionalContent && <Box>{additionalContent}</Box>}\n <Stack sx={{ bgcolor: 'background.default', gap: 24, p: 24 }}>\n {children}\n {loadConnectAccountsCard && (\n <ConnectMoreAccountsCard\n description={connectDescription}\n drawerType={drawerType}\n isDashboard={true}\n sx={{ backgroundColor: 'background.paper' }}\n title={connectTitle}\n />\n )}\n </Stack>\n </Stack>\n </Drawer>\n )\n}\nexport default observer(KeyIndicatorsDrawer)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\n\nimport { InstitutionLogo, P, Text } from '@mxenabled/mxui'\n\nimport { useAppConfig, useGlobalCopyStore, useGlobalUiStore } from '../../common'\nimport { type Account, AccountType } from '../../core'\nimport getAccountDisplayName from '../../common/utils/AccountDisplayName'\n\nimport { getAccountBalanceDetails } from '../utils/AccountFields'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface AccountsListCompactProps {\n onClick?: (account: Account) => void\n shouldShowBalance?: boolean\n loadAccounts?: AccountType[]\n}\n\nconst AccountsListCompact = ({\n onClick,\n shouldShowBalance = true,\n loadAccounts,\n}: AccountsListCompactProps) => {\n const { config } = useAppConfig()\n const { accounts: accountsData } = useGlobalCopyStore()\n const { selectedAccounts } = useGlobalUiStore()\n\n const handleAccountClick = React.useCallback(\n (account: Account) => {\n onClick?.(account)\n },\n [onClick],\n )\n\n const uniqueAccountTypes = React.useMemo(\n () =>\n Array.from(new Set(selectedAccounts.map((account) => account.account_type))).filter(\n (accountType) => (loadAccounts ? loadAccounts.includes(accountType) : true),\n ),\n [selectedAccounts, loadAccounts],\n )\n\n if (!selectedAccounts.length) return null\n\n return (\n <React.Fragment>\n {uniqueAccountTypes.map((accountType) => {\n const { accountsForType, totalBalanceForType } = selectedAccounts.reduce(\n (acc, account) => {\n if (account.account_type === accountType) {\n acc.accountsForType.push(account)\n acc.totalBalanceForType += account.balance || 0\n }\n\n return acc\n },\n { accountsForType: [] as Account[], totalBalanceForType: 0 },\n )\n\n return (\n <List\n key={accountType}\n subheader={\n <ListSubheader sx={{ pb: 4, position: 'static', pt: 12, px: 24 }}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Text bold={true} variant=\"caption\">\n {accountsData.account_types[accountType]}\n </Text>\n {shouldShowBalance && (\n <Text bold={true} variant=\"caption\">\n {formatCurrency(totalBalanceForType, '0,0.00')}\n </Text>\n )}\n </Stack>\n </ListSubheader>\n }\n sx={{ bgcolor: 'background.paper' }}\n >\n {accountsForType.map((account, index) => {\n const { firstValue: accountBalance } = getAccountBalanceDetails(\n account,\n accountsData,\n config.display_available_balance_in_accounts,\n )\n const displayName = getAccountDisplayName(account, {\n allowNickname: config?.show_account_nicknames_in_master,\n })\n\n const listItemContent = (\n <>\n <ListItemAvatar>\n <InstitutionLogo alt=\"MX\" institutionGuid={account.institution_guid ?? ''} />\n </ListItemAvatar>\n <ListItemText\n primary={`${displayName}${account.account_number ? ` *${account.account_number}` : ''}`}\n slotProps={{ primary: { noWrap: true, pr: 4, variant: 'body1' } }}\n />\n {shouldShowBalance && (\n <P bold={true} variant=\"body2\">\n {formatCurrency(accountBalance ?? 0, '0,0.00')}\n </P>\n )}\n </>\n )\n\n return (\n <React.Fragment key={account.guid}>\n <ListItem sx={{ px: onClick ? 0 : 24 }}>\n {onClick ? (\n <ListItemButton onClick={() => handleAccountClick(account)}>\n {listItemContent}\n </ListItemButton>\n ) : (\n listItemContent\n )}\n </ListItem>\n {index !== accountsForType.length - 1 && <Divider variant=\"inset\" />}\n </React.Fragment>\n )\n })}\n <Divider />\n </List>\n )\n })}\n </React.Fragment>\n )\n}\n\nexport default observer(AccountsListCompact)\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { InstitutionLogo, P, Text } from '@mxenabled/mxui'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { useTheme } from '@mui/material/styles'\n\nimport {\n ConnectDrawer,\n Drawer,\n useAppConfig,\n useGlobalCopyStore,\n useGlobalUiStore,\n} from '../../../common'\nimport { type Account, type AccountType } from '../../../core'\n\nimport { getAccountDisplayName } from '../../../common/utils/AccountDisplayName'\nimport { getAccountBalanceDetails } from '../../../accounts'\nimport AccountsListCompact from '../../../accounts/components/AccountsListCompact'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface AccountsProps {\n loadAccounts: AccountType[]\n loadMoreLabel: string\n}\n\nconst Accounts: React.FC<AccountsProps> = ({ loadAccounts, loadMoreLabel }) => {\n const theme = useTheme()\n const { config } = useAppConfig()\n const { connect: connectCopy, finstrong: copy } = useGlobalCopyStore()\n const { accounts: accountsData } = useGlobalCopyStore()\n const { selectedAccounts } = useGlobalUiStore()\n const [isOpen, setIsOpen] = React.useState(false)\n const [isConnectAccountsOpen, setIsConnectAccountsOpen] = React.useState(false)\n\n const accounts = React.useMemo(\n () =>\n selectedAccounts.filter((account) =>\n loadAccounts ? loadAccounts.includes(account.account_type) : true,\n ),\n [selectedAccounts, loadAccounts],\n )\n\n const displayedAccounts = React.useMemo(() => accounts.slice(0, 3), [accounts])\n\n const getAccountBalance = (account: Account) => {\n const { firstValue: accountBalance } = getAccountBalanceDetails(\n account,\n accountsData,\n config.display_available_balance_in_accounts,\n )\n return accountBalance\n }\n\n return accounts.length >= 1 ? (\n <>\n <Box sx={{ border: `1px solid ${theme.palette.divider}`, borderRadius: 2 }}>\n {displayedAccounts.map((account, index) => (\n <React.Fragment key={account.guid}>\n <ListItem sx={{ px: 24 }}>\n <ListItemAvatar>\n <InstitutionLogo alt=\"MX\" institutionGuid={account.institution_guid ?? ''} />\n </ListItemAvatar>\n <ListItemText\n primary={`${getAccountDisplayName(account, {\n allowNickname: config?.show_account_nicknames_in_master,\n })}\n ${account.account_number ? ` *${account.account_number}` : ''}`}\n slotProps={{ primary: { noWrap: true, pr: 4, variant: 'body1' } }}\n />\n <P bold={true} variant=\"body2\">\n {formatCurrency(getAccountBalance(account), '0,0.00')}\n </P>\n </ListItem>\n {index < displayedAccounts.length - 1 && <Divider variant=\"inset\" />}\n </React.Fragment>\n ))}\n </Box>\n {accounts.length > 3 && (\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 {accounts.length - 3} {loadMoreLabel}\n </Text>\n </Button>\n </Box>\n <Drawer isOpen={isOpen} onClose={() => setIsOpen(false)} title={copy.accounts}>\n <AccountsListCompact loadAccounts={loadAccounts} />\n </Drawer>\n </>\n )}\n </>\n ) : (\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\nexport default observer(Accounts)\n","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","import type { Transaction } from './Transaction'\n\nexport interface SpendingFeeTransaction {\n transaction: Transaction\n}\n\nexport interface HealthScore {\n created_at: string\n debt_score: number\n debt_to_income_ratio: number\n emergency_savings_on_hand: number\n guid: string\n health_score: number\n months_of_cash_on_hand: number\n next_step_cards: string[]\n ninety_day_debt_spend: number\n ninety_day_income: number\n ninety_day_spend: number\n praise_cards: string[]\n saving_score: number\n spend_to_income_ratio: number\n spending_fee_transaction_count: number\n spending_fee_transaction_spend: number\n spending_score: number\n status: number\n status_message: string\n updated_at: string\n user_guid: string\n}\n\nexport interface MonthlyHealthScoreAverage {\n average_health_score: number\n month: number\n user_guid: string\n year: number\n}\n\nexport interface MonthlyHealthScore {\n monthly_health_score_average: MonthlyHealthScoreAverage[]\n}\n\nexport interface MonthlyHealthScoreItem {\n monthly_health_score_average: MonthlyHealthScoreAverage\n}\n\nexport interface MonthlySummaries {\n user_guid: string\n year: number\n month: number\n standard_spend: number\n debt_spend: number\n income: number\n available_cash: number\n debt_balance: number\n credit_score: number\n}\n\nexport interface FinstrongTransaction {\n transaction: Transaction\n}\n\nexport interface HealthScoreAverage {\n birth_year: number\n single_year_user_count: number\n single_year_average_health_score: number\n user_count_total: number\n average_health_score: number\n}\n\nexport interface PeerAverage {\n average_health_score: HealthScoreAverage\n}\n\nexport interface HealthScoreReport {\n credit_score_change_effect: number\n debt_score_point_difference: number | null\n debt_to_income_ratio_change_effect: number | null\n emergency_savings_on_hand_change_effect: number\n health_score_point_difference: number\n months_of_cash_on_hand_change_effect: number\n newer_credit_score: number\n newer_debt_score: number | null\n newer_debt_to_income_ratio: number | null\n newer_emergency_savings_on_hand: number\n newer_health_score: number\n newer_health_score_guid: string\n newer_months_of_cash_on_hand: number\n newer_saving_score: number\n newer_score_calculated_at: string\n newer_spend_to_income_ratio: number | null\n newer_spending_fee_transaction_count: number\n newer_spending_score: number | null\n older_credit_score: number\n older_debt_score: number | null\n older_debt_to_income_ratio: number | null\n older_emergency_savings_on_hand: number\n older_health_score: number\n older_health_score_guid: string\n older_months_of_cash_on_hand: number\n older_saving_score: number\n older_score_calculated_at: string\n older_spend_to_income_ratio: number | null\n older_spending_fee_transaction_count: number\n older_spending_score: number | null\n saving_score_point_difference: number\n spend_to_income_ratio_change_effect: number | null\n spending_fee_transaction_count_change_effect: number\n spending_score_point_difference: number | null\n user_guid: string\n}\n\nexport enum OnboardingSteps {\n ConnectAccounts = 1,\n MonthlyIncome = 2,\n Birthday = 3,\n CreditScore = 4,\n}\n\nexport enum DurationUnit {\n Months = 1,\n Years = 2,\n Days = 3,\n}\n\nexport enum ContributeFrequency {\n Monthly = 1,\n BiWeekly = 2,\n Weekly = 3,\n Daily = 4,\n}\n\nexport interface AllTransactions {\n income: FinstrongTransaction[]\n debtSpend: FinstrongTransaction[]\n spendingFee: Transaction[]\n spend: FinstrongTransaction[]\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\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 TextField from '@mui/material/TextField'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { Select, useGlobalCopyStore } from '../../../common'\nimport { DurationUnit, ContributeFrequency } from '../../../core/types/Finstrong'\n\nimport {\n calculateContribution,\n getInitialContributionPeriod,\n getInitialTargetPeriodAmount,\n} from '../../util/finstrongUtils'\n\nimport TotalCard from '../shared/TotalCard'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\nconst EstimatedContributionCalculator = ({ total }: { total: number }) => {\n const { finstrong: copy } = useGlobalCopyStore()\n\n const frequencies = [\n { id: ContributeFrequency.Monthly, label: copy.maintain_emergency_savings_monthly },\n { id: ContributeFrequency.BiWeekly, label: copy.maintain_emergency_savings_bi_weekly },\n { id: ContributeFrequency.Weekly, label: copy.maintain_emergency_savings_weekly },\n { id: ContributeFrequency.Daily, label: copy.maintain_emergency_savings_daily },\n ]\n\n const frequencyPeriodLabels = {\n [ContributeFrequency.Monthly]: copy.maintain_emergency_savings_estimated_period_monthly,\n [ContributeFrequency.BiWeekly]: copy.maintain_emergency_savings_estimated_period_bi_weekly,\n [ContributeFrequency.Weekly]: copy.maintain_emergency_savings_estimated_period_weekly,\n [ContributeFrequency.Daily]: copy.maintain_emergency_savings_estimated_period_daily,\n }\n\n const series = [\n { id: DurationUnit.Months, label: copy.maintain_emergency_savings_months },\n { id: DurationUnit.Years, label: copy.maintain_emergency_savings_years },\n { id: DurationUnit.Days, label: copy.maintain_emergency_savings_days },\n ]\n\n const initialGoalAmount = Math.ceil((total + 1) / 1000) * 1000\n\n const [calculatedContribution, setCalculatedContribution] = React.useState<number>(0)\n const [calculatedContributionPerPeriod, setCalculatedContributionPerPeriod] =\n React.useState<ContributeFrequency>(getInitialContributionPeriod(total))\n const [contribution, setContribution] = React.useState<ContributeFrequency>(\n getInitialContributionPeriod(total),\n )\n const [goalAmount, setGoalAmount] = React.useState<number>(initialGoalAmount)\n const [goalPeriod, setGoalPeriod] = React.useState<number>(getInitialTargetPeriodAmount(total))\n const [targetPeriod, setTargetPeriod] = React.useState<DurationUnit>(DurationUnit.Months)\n\n React.useEffect(() => {\n setCalculatedContribution(\n calculateContribution({\n contribution,\n goalAmount,\n goalPeriod,\n targetPeriod,\n totalSaved: total,\n }),\n )\n setCalculatedContributionPerPeriod(contribution)\n }, [])\n\n const handleCalculate = (e: React.FormEvent) => {\n e.preventDefault()\n\n setCalculatedContribution(\n calculateContribution({\n contribution,\n goalAmount,\n goalPeriod,\n targetPeriod,\n totalSaved: total,\n }),\n )\n setCalculatedContributionPerPeriod(contribution)\n }\n\n return (\n <Card>\n <form onSubmit={handleCalculate}>\n <Stack sx={{ gap: 24, pb: 24, pt: 16, px: 16 }}>\n <TotalCard\n balance={\n <Stack sx={{ flexDirection: 'row', height: 32 }}>\n <Text variant=\"h2\">{formatCurrency(calculatedContribution, '0,0')}</Text>\n <Text sx={{ alignSelf: 'end', height: 24 }} variant=\"subtitle2\">\n /{frequencyPeriodLabels[calculatedContributionPerPeriod]}\n </Text>\n </Stack>\n }\n title={copy.maintain_emergency_savings_estimated_contribution}\n />\n\n <TextField\n aria-label={copy.maintain_emergency_savings_savings_goal}\n helperText={\n buildDynamicCopy(\n copy.maintain_emergency_savings_suggested_goal,\n formatCurrency(initialGoalAmount, '0,0'),\n ) as string\n }\n label={copy.maintain_emergency_savings_savings_goal}\n onChange={(e) => {\n if (e.target.value) setGoalAmount(Number(e.target.value.replace(/[^0-9]/g, '')))\n }}\n slotProps={{\n htmlInput: {\n noValidate: true,\n pattern: '[0-9]*',\n },\n }}\n value={goalAmount ? formatCurrency(goalAmount, '0,0') : ''}\n />\n <Select\n label={copy.maintain_emergency_savings_how_often_contribute}\n onChange={setContribution}\n options={frequencies}\n required={true}\n value={contribution}\n />\n <Stack sx={{ flexDirection: 'row' }}>\n <TextField\n aria-label={copy.maintain_emergency_savings_meet_your_goal_within}\n fullWidth={true}\n label={copy.maintain_emergency_savings_meet_your_goal_within}\n onChange={(e) => {\n if (!isNaN(Number(e.target.value))) setGoalPeriod(Number(e.target.value))\n }}\n slotProps={{\n htmlInput: {\n noValidate: true,\n pattern: '[0-9]*',\n },\n }}\n sx={{\n '& .MuiInputBase-root': {\n borderBottomRightRadius: 0,\n borderTopRightRadius: 0,\n fieldset: {\n borderRightWidth: 0.5,\n },\n },\n }}\n value={goalPeriod}\n />\n <Box\n sx={{\n '& .MuiInputBase-root': {\n borderBottomLeftRadius: 0,\n borderTopLeftRadius: 0,\n fieldset: {\n borderLeftWidth: 0.5,\n },\n },\n }}\n >\n <Select label=\"\" onChange={setTargetPeriod} options={series} value={targetPeriod} />\n </Box>\n </Stack>\n <Button fullWidth={true} onClick={handleCalculate} type=\"submit\" variant=\"contained\">\n {copy.maintain_emergency_savings_calculate}\n </Button>\n </Stack>\n </form>\n </Card>\n )\n}\n\nexport default observer(EstimatedContributionCalculator)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\n\nimport { ConnectDrawer, useAccountStore, useGlobalCopyStore } from '../../../common'\nimport { AccountType } from '../../../core'\n\nimport Accounts from '../shared/Accounts'\nimport TotalCard from '../shared/TotalCard'\n\nimport EstimatedContributionCalculator from './EstimatedContributionCalculator'\n\nconst MaintainingEmergencySavingsContent = () => {\n const { savingsAccounts } = useAccountStore()\n const { finstrong: copy } = useGlobalCopyStore()\n\n const [isConnectDrawerOpen, setIsConnectDrawerOpen] = React.useState(false)\n\n const total = React.useMemo(\n () => savingsAccounts.reduce((acc, account) => acc + (account.balance ?? 0), 0),\n [savingsAccounts],\n )\n\n return (\n <Stack sx={{ gap: 24 }}>\n <Card sx={{ bgcolor: 'background.paper', p: 16 }}>\n <Stack sx={{ gap: 16 }}>\n <TotalCard balance={total} title={copy.maintain_emergency_savings_your_savings} />\n {savingsAccounts.length ? (\n <Accounts\n loadAccounts={[AccountType.SAVINGS]}\n loadMoreLabel={copy.connect_more_accounts_button}\n />\n ) : (\n <Button onClick={() => setIsConnectDrawerOpen(true)} variant=\"contained\">\n {copy.connect_more_accounts_button}\n </Button>\n )}\n </Stack>\n </Card>\n <EstimatedContributionCalculator total={total} />\n <ConnectDrawer\n onClose={() => setIsConnectDrawerOpen(false)}\n showConnectWidget={isConnectDrawerOpen}\n title={copy.connect_more_accounts_button}\n />\n </Stack>\n )\n}\n\nexport default observer(MaintainingEmergencySavingsContent)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { H2, Text } from '@mxenabled/mxui'\n\nimport StatusBar from '../../common/components/charts/StatusBar'\n\nimport StatusChip from './StatusChip'\n\nexport type ProgressBarStatus = 'GOOD' | 'FAIR' | 'OFF_TRACK' | 'MISSING'\n\ninterface StatusBarDataItem {\n percentage: string\n color?: string\n}\n\nexport interface ProgressBarProps {\n label: string\n value: string\n status: ProgressBarStatus\n bottomComponent: React.ReactNode\n statusBarData: StatusBarDataItem[]\n}\n\nconst ProgressBar: React.FC<ProgressBarProps> = observer(\n ({ label, value, status, bottomComponent, statusBarData = [] }) => {\n const cardStateStyles = {\n GOOD: {\n progressBarColor: 'primary.main',\n },\n FAIR: {\n progressBarColor: 'warning.main',\n },\n OFF_TRACK: {\n progressBarColor: 'error.main',\n },\n MISSING: {\n progressBarColor: 'text.secondary',\n },\n }[status]\n\n const statusBarColorData = statusBarData.map((item, index) => {\n if (statusBarData.length === 2) {\n return {\n color: index === 0 ? 'primary.main' : item.color || cardStateStyles?.progressBarColor,\n percentage: item.percentage,\n }\n }\n\n return {\n color: item.color || cardStateStyles?.progressBarColor,\n percentage: item.percentage,\n }\n })\n\n return (\n <Stack\n sx={{\n backgroundColor: 'background.paper',\n gap: 8,\n p: 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <Stack sx={{ gap: 2 }}>\n <Text variant=\"body2\">{label}</Text>\n <Stack\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n gap: 12,\n justifyContent: 'space-between',\n }}\n >\n <H2>{value}</H2>\n <StatusChip status={status} />\n </Stack>\n </Stack>\n\n <Stack>\n <StatusBar data={statusBarColorData} height={16} />\n {bottomComponent}\n </Stack>\n </Stack>\n )\n },\n)\n\nexport default ProgressBar\n","import { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useFinstrongStore } from '../../../common'\nimport { calculatePercentage, getEmergencySavingsState } from '../../util/finstrongUtils'\n\nimport ProgressBar from '../ProgressBar'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\nconst copy = {\n sticky_label: 'You have saved',\n}\n\nconst savingsRange = ['$0', '$250', '$500', '$750', '$1k']\n\nconst MaintainingEmergencySavingsSticky = () => {\n const { healthScore } = useFinstrongStore()\n\n const emergencySavings = Math.round(healthScore.emergency_savings_on_hand ?? NaN) || null\n\n const percentage = calculatePercentage(emergencySavings)\n const status = getEmergencySavingsState(emergencySavings)\n\n return (\n <ProgressBar\n bottomComponent={\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n {savingsRange.map((range) => (\n <Stack key={range} sx={{ alignItems: 'center', height: 24, width: 30 }}>\n <Divider\n orientation=\"vertical\"\n sx={{\n borderWidth: 0.5,\n height: 8,\n mt: 2,\n }}\n />\n <Text variant=\"caption\">{range}</Text>\n </Stack>\n ))}\n </Stack>\n }\n label={copy.sticky_label}\n status={status}\n statusBarData={[\n {\n percentage,\n },\n ]}\n value={formatCurrency(emergencySavings ?? 0, '0,0.00')}\n />\n )\n}\n\nexport default observer(MaintainingEmergencySavingsSticky)\n","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 /&/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} \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","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\n\nimport { Cancel, CheckCircle } from '@mxenabled/mx-icons'\nimport { H3, P } from '@mxenabled/mxui'\n\nimport { Loader, useFinstrongStore, useGlobalCopyStore } from '../../../common'\nimport { DATE_FORMATS_INTL, formatDate } from '../../../core/constants'\n\nimport Transactions from '../shared/Transactions'\n\nconst PayBillsOnTimeDrawerComponent = () => {\n const [isLoading, setIsLoading] = React.useState(true)\n\n const {\n finstrong: {\n key_indicators_spend: { pay_bills_on_time_drawer: copy },\n },\n } = useGlobalCopyStore()\n\n const { getSpendingFeeTransactions, allTransactions } = useFinstrongStore()\n\n React.useEffect(() => {\n getSpendingFeeTransactions().finally(() => setIsLoading(false))\n }, [])\n\n if (isLoading) {\n return <Loader />\n }\n\n return (\n <>\n {allTransactions.spendingFee.length === 0 ? (\n <Card\n sx={{\n backgroundColor: 'background.paper',\n pb: 48,\n pt: 32,\n px: 24,\n textAlign: 'center',\n width: '100%',\n }}\n >\n <CheckCircle filled={true} size={48} sx={{ color: 'success.main' }} />\n\n <Stack sx={{ alignItems: 'center', gap: 4, pt: 24 }}>\n <H3>{copy.pay_bills_on_time_zero_fees_title}</H3>\n <P variant=\"subtitle1\">{copy.pay_bills_on_time_zero_fees_description}</P>\n </Stack>\n </Card>\n ) : (\n <Card\n sx={{\n p: 16,\n width: '100%',\n backgroundColor: 'background.paper',\n }}\n >\n <H3 sx={{ textAlign: 'left', pb: 16 }}>{copy.pay_bills_on_time_sticky_fee_count}</H3>\n <Transactions\n amountColor=\"text.primary\"\n amountPosition=\"flex-start\"\n formatDate={(txnDate) =>\n formatDate(new Date(txnDate * 1000), DATE_FORMATS_INTL.MONTH_DAY)\n }\n secondaryIcon={<Cancel color=\"error\" filled={true} size={12} />}\n transactions={allTransactions.spendingFee}\n />\n </Card>\n )}\n </>\n )\n}\nexport default observer(PayBillsOnTimeDrawerComponent)\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { H2, P } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore, useFinstrongStore } from '../../../common'\n\nimport { getSpendingFeeCountState } from '../../util/finstrongUtils'\n\nimport StatusChip from '../StatusChip'\n\nconst PayBillsOnTimeStickyComponent = () => {\n const { healthScore } = useFinstrongStore()\n const { finstrong: copyContent } = useGlobalCopyStore()\n\n const { key_indicators_spend: spendCopy } = copyContent\n const { pay_bills_on_time_drawer: copy } = spendCopy\n\n const state = getSpendingFeeCountState(healthScore.spending_fee_transaction_count)\n\n return (\n <Stack\n sx={{\n p: 24,\n backgroundColor: 'background.paper',\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <P variant=\"body2\">{copy.pay_bills_on_time_sticky_description}</P>\n <Stack direction=\"row\" sx={{ alignItems: 'center', justifyContent: 'space-between' }}>\n <H2>\n {healthScore.spending_fee_transaction_count} {copy.pay_bills_on_time_sticky_fee_count}\n </H2>\n <StatusChip status={state} />\n </Stack>\n </Stack>\n )\n}\nexport default observer(PayBillsOnTimeStickyComponent)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useAccountStore, useGlobalCopyStore } from '../../../common'\nimport { AccountType } from '../../../core'\n\nimport TotalCard from '../shared/TotalCard'\nimport Accounts from '../shared/Accounts'\n\nconst AvailableTabContent: React.FC = () => {\n const { savingsAndCheckingAccountsBalance } = useAccountStore()\n const { finstrong: copy } = useGlobalCopyStore()\n\n return (\n <Stack gap={16} sx={{ p: 16 }}>\n <TotalCard\n balance={savingsAndCheckingAccountsBalance}\n title={copy.key_indicators_save.drawer_available_balance}\n />\n <Accounts\n loadAccounts={[AccountType.SAVINGS, AccountType.CHECKING]}\n loadMoreLabel={copy.more_accounts}\n />\n </Stack>\n )\n}\n\nexport default observer(AvailableTabContent)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { Loader, useFinstrongStore, useGlobalCopyStore } from '../../../common'\n\nimport TotalCard from '../shared/TotalCard'\nimport Transactions from '../shared/Transactions'\n\nconst SpendingTabContent: React.FC = () => {\n const { finstrong: copy } = useGlobalCopyStore()\n const {\n isSpendingInitialized,\n healthScore,\n allTransactions,\n loadSpendTransactions,\n loadDebtSpend,\n } = useFinstrongStore()\n\n React.useEffect(() => {\n if (!isSpendingInitialized) {\n loadSpendTransactions().finally()\n loadDebtSpend().finally()\n }\n }, [isSpendingInitialized])\n\n const transactions = React.useMemo(() => {\n const spendTransactions = allTransactions.spend.map((item) => item.transaction)\n const debtSpendTransactions = allTransactions.debtSpend.map((item) => item.transaction)\n return [...spendTransactions, ...debtSpendTransactions]\n }, [allTransactions.spend, allTransactions.debtSpend])\n\n if (!isSpendingInitialized) return <Loader />\n\n return (\n <Stack gap={16} sx={{ p: 16 }}>\n <TotalCard\n balance={healthScore.ninety_day_spend / 90}\n title={copy.key_indicators_save.drawer_daily_spend}\n />\n <Transactions amountColor=\"text.primary\" transactions={transactions} />\n </Stack>\n )\n}\n\nexport default observer(SpendingTabContent)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Card from '@mui/material/Card'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { useGlobalCopyStore, TabContentContainer } from '../../../common'\n\nimport AvailableTabContent from './AvailableTabContent'\nimport LineGraph from '../shared/LineGraph'\nimport SpendingTabContent from './SpendingTabContent'\n\nconst SaveEnoughToLiveOnDrawerContent: React.FC = () => {\n const [tabValue, setTabValue] = React.useState(0)\n const { finstrong: copy } = useGlobalCopyStore()\n\n return (\n <>\n <Card>\n <Tabs\n aria-label={copy.key_indicators_save.drawer_title}\n centered={true}\n onChange={(_, val) => setTabValue(val)}\n selectionFollowsFocus={true}\n sx={{ mb: 0 }}\n value={tabValue}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"available-details-tabpanel-0\"\n label={copy.key_indicators_save.drawer_available}\n sx={{ minHeight: 44 }}\n />\n <Tab\n aria-controls=\"spending-details-tabpanel-1\"\n label={copy.key_indicators_save.drawer_spending}\n sx={{ minHeight: 44 }}\n />\n </Tabs>\n\n <TabContentContainer index={0} name=\"available-details\" value={tabValue}>\n <AvailableTabContent />\n </TabContentContainer>\n\n <TabContentContainer index={1} name=\"spending-details\" value={tabValue}>\n <SpendingTabContent />\n </TabContentContainer>\n </Card>\n <LineGraph chartFor=\"savingsOverTime\" />\n </>\n )\n}\n\nexport default observer(SaveEnoughToLiveOnDrawerContent)\n","import { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useFinstrongStore, useGlobalCopyStore } from '../../../common'\nimport ProgressBar from '../ProgressBar'\nimport { getDaysOfCashOnHandState } from '../../util/finstrongUtils'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\nconst SaveEnoughToLiveOnProgressBar = () => {\n const { finstrong: copy } = useGlobalCopyStore()\n\n const { healthScore } = useFinstrongStore()\n const noOfMonths = healthScore.months_of_cash_on_hand\n const cardStatus = getDaysOfCashOnHandState(noOfMonths ? noOfMonths * 30 : null) // Convert months to days for state calculation\n\n // Using 183 days as an approximate 6-month period\n const avgDaysPerMonth = 183 / 6\n const months = Math.floor(noOfMonths)\n const days = Math.round((noOfMonths - months) * avgDaysPerMonth)\n const percentage = (noOfMonths / 6) * 100\n const monthsToDisplay = ['0 Mo', '1 Mo', '2 Mo', '3 Mo', '4 Mo', '5 Mo', '6 Mo']\n\n return (\n <ProgressBar\n bottomComponent={\n <Stack\n sx={{\n flexDirection: 'row',\n height: 24,\n justifyContent: 'space-between',\n mt: 2,\n px: 1,\n }}\n >\n {monthsToDisplay.map((label) => (\n <Stack\n key={label}\n sx={{\n alignItems: 'center',\n height: 24,\n }}\n >\n <Divider\n orientation=\"vertical\"\n sx={{\n borderWidth: 1,\n height: 8,\n }}\n />\n <Text variant=\"caption\">{label}</Text>\n </Stack>\n ))}\n </Stack>\n }\n label={copy.key_indicators_save.drawer_progress_bar_label}\n status={cardStatus}\n statusBarData={[\n {\n percentage: `${percentage}%`,\n },\n ]}\n value={\n buildDynamicCopy(copy.key_indicators_save.drawer_progress_bar_value, months, days) as string\n }\n />\n )\n}\n\nexport default observer(SaveEnoughToLiveOnProgressBar)\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useFinstrongStore, useGlobalCopyStore } from '../../../common'\nimport ProgressBar from '../ProgressBar'\nimport { getManageDebtRatioState, getPercentFromRatio } from '../../util/finstrongUtils'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\nconst HaveManageableDebtProgressBar = () => {\n const { healthScore } = useFinstrongStore()\n const { finstrong: copy } = useGlobalCopyStore()\n\n const debtPercentage = getPercentFromRatio(healthScore.debt_to_income_ratio)\n\n const cardStatus = getManageDebtRatioState(debtPercentage)\n\n return (\n <ProgressBar\n bottomComponent={\n <Stack\n sx={{\n alignItems: 'flex-end',\n flexDirection: 'row',\n height: 24,\n justifyContent: 'space-between',\n mt: 2,\n position: 'relative',\n }}\n >\n {/* 30% tick mark and label positioned at 30% */}\n <Box\n sx={{\n left: '30%',\n position: 'absolute',\n transform: 'translateX(-50%)',\n }}\n >\n <Stack\n sx={{\n alignItems: 'center',\n flexDirection: 'column',\n height: 24,\n justifyContent: 'flex-end',\n }}\n >\n <Divider\n orientation=\"vertical\"\n sx={{\n borderWidth: 1,\n height: 8,\n }}\n />\n <Text sx={{ color: 'text.primary' }} variant=\"caption\">\n 30%\n </Text>\n </Stack>\n </Box>\n {/* Debt percentage positioned at the right end */}\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: 24,\n justifyContent: 'center',\n marginLeft: 'auto',\n }}\n >\n <Text variant=\"body2\">\n {healthScore.debt_to_income_ratio\n ? (buildDynamicCopy(\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_sticky_description,\n debtPercentage,\n ) as string)\n : '-'}\n </Text>\n </Box>\n </Stack>\n }\n label={\n copy.key_indicators_borrow.have_manageable_debt_drawer.have_manageable_debt_sticky_title\n }\n status={cardStatus}\n statusBarData={[\n {\n percentage: `${debtPercentage}%`,\n },\n ]}\n value={formatCurrency(healthScore.ninety_day_debt_spend, '0,0.00')}\n />\n )\n}\n\nexport default observer(HaveManageableDebtProgressBar)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\n\nimport { ConnectDrawer, useFinstrongStore, useGlobalCopyStore } from '../../../common'\nimport TotalCard from '../shared/TotalCard'\nimport Transactions from '../shared/Transactions'\n\nconst IncomeTabContent: React.FC = () => {\n const { healthScore, allTransactions } = useFinstrongStore()\n const { connect: connectCopy, finstrong: copy } = useGlobalCopyStore()\n const [showConnectWidget, setShowConnectWidget] = React.useState(false)\n\n return (\n <Stack gap={16} sx={{ p: 16 }}>\n <TotalCard\n balance={healthScore.ninety_day_income}\n sx={{ flexDirection: 'column-reverse' }}\n title={copy.key_indicators_borrow.have_manageable_debt_drawer.have_manageable_debt_income}\n />\n\n {allTransactions.income.length ? (\n // TODO: Need to add More Transactions functionality\n <Transactions transactions={allTransactions.income.map((item) => item.transaction)} />\n ) : (\n <Button\n onClick={() => {\n setShowConnectWidget(true)\n }}\n variant=\"contained\"\n >\n {copy.connect_more_accounts_button}\n </Button>\n )}\n\n <ConnectDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectWidget={showConnectWidget}\n title={connectCopy.mini_title}\n />\n </Stack>\n )\n}\n\nexport default observer(IncomeTabContent)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\n\nimport { ConnectDrawer, useFinstrongStore, useGlobalCopyStore } from '../../../common'\nimport TotalCard from '../shared/TotalCard'\nimport Transactions from '../shared/Transactions'\n\nconst DebtPaymentTabContent: React.FC = () => {\n const { allTransactions, healthScore } = useFinstrongStore()\n const { connect: connectCopy, finstrong: copy } = useGlobalCopyStore()\n const [showConnectWidget, setShowConnectWidget] = React.useState(false)\n\n return (\n <Stack gap={16} sx={{ p: 16 }}>\n <TotalCard\n balance={healthScore.ninety_day_debt_spend}\n sx={{ flexDirection: 'column-reverse' }}\n title={copy.key_indicators_borrow.have_manageable_debt_drawer.have_manageable_debt_payments}\n />\n\n {allTransactions.debtSpend.length ? (\n //TODO: Need to add More Transactions functionality\n <Transactions\n amountColor=\"text.primary\"\n transactions={allTransactions.debtSpend.map((item) => item.transaction)}\n />\n ) : (\n <Button\n onClick={() => {\n setShowConnectWidget(true)\n }}\n variant=\"contained\"\n >\n {copy.connect_more_accounts_button}\n </Button>\n )}\n\n <ConnectDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectWidget={showConnectWidget}\n title={connectCopy.mini_title}\n />\n </Stack>\n )\n}\n\nexport default observer(DebtPaymentTabContent)\n","import React from 'react'\nimport { useTheme } from '@mui/material/styles'\n\ninterface BarStyleProps extends React.CSSProperties {\n x?: number\n y?: number\n}\n\ninterface CustomDoubleBarPlotProps {\n color: string\n data: DataSet[]\n series: Series\n style: BarStyleProps\n}\n\ninterface Series {\n index: number\n type: number\n}\n\nexport interface DataSet {\n comparison: number\n formattedComparison: string\n formattedMain: string\n label: string\n main: number\n}\n\nexport const CustomDoubleBarPlot = ({\n color,\n data,\n series,\n style,\n ...restProps\n}: CustomDoubleBarPlotProps) => {\n const theme = useTheme()\n const rectRef = React.useRef<SVGRectElement>(null)\n const textRef = React.useRef<SVGTextElement>(null)\n const [barWidth, setBarWidth] = React.useState((style.width as number) || 0)\n\n React.useLayoutEffect(() => {\n setBarWidth((style.width as number) || 0)\n }, [style.width])\n\n React.useLayoutEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n window.requestAnimationFrame(() => {\n if (rectRef.current) {\n const { width } = rectRef.current.getBoundingClientRect()\n\n const xValue = width / 2\n const textElement = rectRef.current.querySelector('text')\n if (textElement) {\n textElement.setAttribute('transform', `translate(${xValue}, -8)`)\n }\n }\n })\n })\n\n if (rectRef.current) resizeObserver.observe(rectRef.current)\n return () => {\n if (rectRef.current) resizeObserver.unobserve(rectRef.current)\n }\n }, [])\n\n const { formattedComparison, formattedMain } = data[series.index]\n\n const formattedAmount = series.type === 0 ? formattedMain : formattedComparison\n\n const rectStyle = {\n ...style,\n transition: 'all 0.3s ease-in-out',\n }\n\n const textTransform = `translate(${barWidth / 2}, -5)`\n\n return (\n <g>\n <rect {...restProps} fill={color} ref={rectRef} rx={2} style={rectStyle} />\n <text\n fill={theme.palette.text.secondary}\n fontSize={9}\n fontWeight={400}\n ref={textRef}\n style={{ transition: 'transform 0.3s ease-in-out' }}\n textAnchor=\"middle\"\n transform={textTransform}\n x={style.x}\n y={style.y}\n >\n {formattedAmount}\n </text>\n </g>\n )\n}\n","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} </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} </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","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Card from '@mui/material/Card'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { useGlobalCopyStore, TabContentContainer, useFinstrongStore, Loader } from '../../../common'\nimport { EmptyState } from '../../../common/components/EmptyState'\nimport IncomeTabContent from './IncomeTabContent'\nimport DebtPaymentTabContent from './DebtPaymentTabContent'\nimport DoubleBarChart from '../shared/DoubleBarChart'\nimport LineGraph from '../shared/LineGraph'\n\nconst HaveManagebleDebtComponent: React.FC = () => {\n const { isIncomeInitialized, loadDebtSpend, loadIncome, monthlySummaries } = useFinstrongStore()\n\n const [tabValue, setTabValue] = React.useState(0)\n const { finstrong: copy } = useGlobalCopyStore()\n\n React.useEffect(() => {\n if (!isIncomeInitialized) {\n loadDebtSpend().finally()\n loadIncome().finally()\n }\n }, [isIncomeInitialized])\n\n if (!isIncomeInitialized) return <Loader />\n\n const hasBarChartData = monthlySummaries.some(\n (eachItem) => eachItem.debt_spend !== 0 || eachItem.income !== 0,\n )\n\n return (\n <>\n <Card>\n <Tabs\n aria-label={copy.key_indicators_save.drawer_title}\n centered={true}\n onChange={(_, val) => setTabValue(val)}\n selectionFollowsFocus={true}\n sx={{ mb: 0 }}\n value={tabValue}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"income-details-tabpanel-0\"\n id=\"income-details-tab-0\"\n label={copy.key_indicators_borrow.have_manageable_debt_drawer.income}\n sx={{ minHeight: 44 }}\n />\n <Tab\n aria-controls=\"debt-payment-details-tabpanel-1\"\n id=\"debt-payment-details-tab-1\"\n label={copy.key_indicators_borrow.have_manageable_debt_drawer.debt_payment}\n sx={{ minHeight: 44 }}\n />\n </Tabs>\n\n <TabContentContainer\n aria-labelledby=\"income-details-tab-0\"\n index={0}\n name=\"income-details\"\n value={tabValue}\n >\n <IncomeTabContent />\n </TabContentContainer>\n\n <TabContentContainer\n aria-labelledby=\"debt-payment-details-tab-1\"\n index={1}\n name=\"debt-payment-details\"\n value={tabValue}\n >\n <DebtPaymentTabContent />\n </TabContentContainer>\n </Card>\n\n {hasBarChartData ? (\n <>\n <DoubleBarChart\n chartFor=\"debt_payment_vs_income\"\n data={monthlySummaries}\n legendLabelComparison={\n copy.key_indicators_borrow.have_manageable_debt_drawer.debt_payment\n }\n legendLabelMain={copy.key_indicators_borrow.have_manageable_debt_drawer.income}\n title={copy.key_indicators_borrow.have_manageable_debt_drawer.debt_payment}\n />\n </>\n ) : (\n <EmptyState\n header={\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_double_bar_chart_empty_state_header\n }\n icon=\"multiline_chart\"\n subText={\n copy.key_indicators_borrow.have_manageable_debt_drawer\n .have_manageable_debt_double_bar_chart_empty_state_description\n }\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 <LineGraph chartFor=\"debtOverTime\" />\n </>\n )\n}\n\nexport default observer(HaveManagebleDebtComponent)\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport { Text } from '@mxenabled/mxui'\n\nimport { useFinstrongStore, useGlobalCopyStore } from '../../../common'\nimport { getPercentFromRatio, getSpendToIncomeRatioState } from '../../util/finstrongUtils'\n\nimport ProgressBar from '../ProgressBar'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\nconst SpendLessThanYouMakeProgressBar = () => {\n const { healthScore } = useFinstrongStore()\n const { finstrong: copy } = useGlobalCopyStore()\n\n const spend = getPercentFromRatio(healthScore.spend_to_income_ratio)\n const spendPercentage = spend ?? 0\n\n // Check if healthScore is empty\n const isHealthScoreEmpty = Object.keys(healthScore).length === 0\n\n const cardStatus = getSpendToIncomeRatioState(spend)\n\n const statusBarData = {\n GOOD: [{ percentage: `${spendPercentage}%` }],\n FAIR: [{ percentage: '100%' }, { percentage: `${spendPercentage - 100}%` }],\n OFF_TRACK: [{ percentage: '100%' }, { percentage: `${spendPercentage - 100}%` }],\n MISSING: [{ percentage: '0%' }],\n }[cardStatus]\n\n return (\n <ProgressBar\n bottomComponent={\n <Stack\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n mt: 8,\n }}\n >\n <Text variant=\"body2\">\n {healthScore.ninety_day_income <= 0\n ? '-'\n : formatCurrency(healthScore.ninety_day_income, '0,0.00')}\n \n {copy?.key_indicators_spend.spend_less_than_you_make_drawer.income}\n </Text>\n <Text variant=\"body2\">\n {spendPercentage <= 0 ? '-%' : `${spendPercentage}%`} \n {copy?.key_indicators_spend.spend_less_than_you_make_drawer.spent}\n </Text>\n </Stack>\n }\n label={\n copy?.key_indicators_spend.spend_less_than_you_make_drawer\n .spend_less_than_you_make_sticky_description\n }\n status={cardStatus}\n statusBarData={statusBarData}\n value={isHealthScoreEmpty ? '$0' : formatCurrency(healthScore.ninety_day_spend, '0,0.00')}\n />\n )\n}\n\nexport default observer(SpendLessThanYouMakeProgressBar)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { endOfMonth } from 'date-fns/endOfMonth'\n\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { H3 } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport {\n useAccountStore,\n useCategoryStore,\n useFinstrongStore,\n useGlobalStore,\n useGlobalCopyStore,\n} from '../../../common'\nimport { EmptyState } from '../../../common/components/EmptyState'\nimport DoubleBarChart from '../shared/DoubleBarChart'\nimport { getSpendingData } from '../../../spending/utils/SpendingData'\nimport SpendingDonut from '../../../spending/components/SpendingDonut'\nimport SpendingLegend from '../../../spending/components/SpendingLegend'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\nconst SpendLessThanYouMakeComponent: React.FC = () => {\n const { accounts } = useAccountStore()\n const { categories, dateRangeCategoryTotals, loadDateRangeCategoryTotals } = useCategoryStore()\n const { monthlySummaries, handleFinstrongWidgetPrimaryCtaClick } = useFinstrongStore()\n const { appDataStore } = useGlobalStore()\n const { finstrong: copy, goals: goalsCopy, spending: spendingCopy } = useGlobalCopyStore()\n const theme = useTheme()\n\n const [selectedId, setSelectedId] = React.useState('')\n\n // Load category data for spending chart\n React.useEffect(() => {\n loadDateRangeCategoryTotals(\n accounts,\n startOfMonth(new Date()),\n endOfMonth(new Date()),\n ).finally()\n }, [accounts])\n\n // Spending data for donut chart\n const spendingData = React.useMemo(\n () => getSpendingData(categories, goalsCopy, theme, dateRangeCategoryTotals),\n [categories, dateRangeCategoryTotals],\n )\n\n const handleSelected = (id: string) => {\n setSelectedId(selectedId === id ? '' : id)\n }\n\n const { totalSpending, totalIncome } = React.useMemo(() => {\n return monthlySummaries?.reduce(\n (\n totals: { totalSpending: number; totalIncome: number },\n { standard_spend = 0, income = 0 },\n ) => ({\n totalSpending: totals.totalSpending + standard_spend,\n totalIncome: totals.totalIncome + income,\n }),\n { totalSpending: 0, totalIncome: 0 },\n )\n }, [monthlySummaries])\n\n //TODO: Add Functionalities for View More Buttons\n return (\n <Stack sx={{ gap: 24 }}>\n {totalIncome > 0 || totalSpending > 0 ? (\n <DoubleBarChart\n {...(appDataStore.appData.client_profile?.allow_trends_widget && {\n buttonLabel: copy.key_indicators_spend.spend_less_than_you_make_drawer.view_more,\n })}\n chartFor=\"spending_vs_income\"\n data={monthlySummaries}\n legendLabelComparison={copy.key_indicators_spend.spend_less_than_you_make_drawer.income}\n legendLabelMain={copy.key_indicators_spend.spend_less_than_you_make_drawer.spending}\n onClick={() => handleFinstrongWidgetPrimaryCtaClick('trends')()}\n title={copy.key_indicators_spend.spend_less_than_you_make_drawer.trends}\n totalComparison={formatCurrency(totalIncome, '0,0.00')}\n totalMain={formatCurrency(totalSpending, '0,0.00')}\n />\n ) : (\n <EmptyState\n header={copy.key_indicators_spend.spend_less_than_you_make_drawer.trends_zero_state_title}\n icon=\"multiline_chart\"\n subText={\n copy.key_indicators_spend.spend_less_than_you_make_drawer.trends_zero_state_description\n }\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\n {/* Mini Spending Chart Component */}\n {spendingData.donutData.length > 0 ? (\n <Card\n sx={{\n px: 16,\n py: 24,\n }}\n >\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>{copy.key_indicators_spend.spend_less_than_you_make_drawer.spending}</H3>\n {appDataStore.appData.client_profile?.allow_spending_widget && (\n <Button\n endIcon={<ChevronRight />}\n onClick={() => handleFinstrongWidgetPrimaryCtaClick('spending')()}\n size=\"small\"\n sx={{\n pl: 8,\n height: 24,\n }}\n variant=\"text\"\n >\n {copy.key_indicators_spend.spend_less_than_you_make_drawer.view_more}\n </Button>\n )}\n </Stack>\n <Stack\n sx={{ flexDirection: 'row', gap: 12, justifyContent: 'center', pb: 32, pt: 16, px: 24 }}\n >\n <SpendingDonut\n data={spendingData}\n onSelected={handleSelected}\n selectedId={selectedId}\n totalLabel={spendingCopy.total_spending}\n />\n\n <SpendingLegend\n data={spendingData}\n onSelected={handleSelected}\n selectedId={selectedId}\n />\n </Stack>\n </Card>\n ) : (\n <EmptyState\n header={\n copy.key_indicators_spend.spend_less_than_you_make_drawer.spending_zero_state_title\n }\n icon=\"donut_small\"\n subText={\n copy.key_indicators_spend.spend_less_than_you_make_drawer\n .spending_zero_state_description\n }\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 </Stack>\n )\n}\n\nexport default observer(SpendLessThanYouMakeComponent)\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useGlobalCopyStore } from '../../common'\nimport { KeyIndicatorsTabItemType } from '../constants'\n\nimport CreditScoreContent from './CreditScore/CreditScoreContent'\nimport CreditScoreHeader from './CreditScore/CreditScoreHeader'\nimport KeyIndicatorsDrawer from './KeyIndicatorsDrawer'\nimport MaintainingEmergencySavingsContent from './MaintainingEmergencySavings/MaintainingEmergencySavingsContent'\nimport MaintainingEmergencySavingsSticky from './MaintainingEmergencySavings/MaintainingEmergencySavingsSticky'\nimport PayBillsOnTimeDrawerComponent from './paybillsontime/PayBillsOnTimeDrawerComponent'\nimport PayBillsOnTimeStickyComponent from './paybillsontime/PayBillsOnTimeStickyComponent'\nimport SaveEnoughToLiveOnDrawerContent from './SaveEnoughToLiveOn/SaveEnoughToLiveOnDrawerContent'\nimport SaveEnoughToLiveOnProgressBar from './SaveEnoughToLiveOn/SaveEnoughToLiveOnProgressBar'\nimport HaveManageableDebtProgressBar from './HaveManageableDebt/HaveManageableDebtProgressBar'\nimport HaveManageableDebtComponent from './HaveManageableDebt/HaveManageableDebtComponent'\nimport SpendLessThanYouMakeProgressBar from './SpendLessThanYouMake/SpendLessThanYouMakeProgressBar'\nimport SpendLessThanYouMakeComponent from './SpendLessThanYouMake/SpendLessThanYouMakeComponent'\n\ninterface KeyIndicatorsTabItemDrawerProps {\n drawerFor: KeyIndicatorsTabItemType\n isOpen: boolean\n onClose: () => void\n}\n\nconst KeyIndicatorsTabItemDrawer = ({\n drawerFor,\n isOpen,\n onClose,\n}: KeyIndicatorsTabItemDrawerProps) => {\n const { finstrong: copy } = useGlobalCopyStore()\n\n //TODO : When the Drawer for key indicators other than Save Enough To Live On are implemented,\n // add their respective content, titles, descriptions, and sticky components here.\n const contentMapping: Record<\n KeyIndicatorsTabItemType,\n {\n connectTitle?: string\n connectDescription?: string\n title: React.ReactNode\n description: string\n stickyComponent: React.ReactNode\n content: React.ReactNode\n drawerType?: 'connectDrawer' | 'connectionsDrawer'\n }\n > = {\n spendLessThanYouMake: {\n title:\n copy.key_indicators_spend.spend_less_than_you_make_drawer.spend_less_than_you_make_title,\n description:\n copy.key_indicators_spend.spend_less_than_you_make_drawer\n .spend_less_than_you_make_description,\n stickyComponent: <SpendLessThanYouMakeProgressBar />,\n content: <SpendLessThanYouMakeComponent />,\n drawerType: 'connectDrawer',\n connectTitle: copy.connect_your_accounts,\n connectDescription:\n copy.connect_more_accounts_to_unlock_a_fuller_understanding_of_your_finances,\n },\n payBillsOnTime: {\n title: copy.key_indicators_spend.pay_bills_on_time_drawer.pay_bills_on_time_title,\n description: copy.key_indicators_spend.pay_bills_on_time_drawer.pay_bills_on_time_description,\n stickyComponent: <PayBillsOnTimeStickyComponent />,\n content: <PayBillsOnTimeDrawerComponent />,\n drawerType: 'connectDrawer',\n connectTitle: copy.connect_your_accounts,\n connectDescription:\n copy.connect_more_accounts_to_unlock_a_fuller_understanding_of_your_finances,\n },\n maintainEmergencySavings: {\n content: <MaintainingEmergencySavingsContent />,\n description: copy.maintain_emergency_savings_description,\n stickyComponent: <MaintainingEmergencySavingsSticky />,\n title: copy.maintain_emergency_savings_title,\n drawerType: 'connectDrawer',\n connectTitle: copy.connect_your_accounts,\n connectDescription:\n copy.connect_more_accounts_to_unlock_a_fuller_understanding_of_your_finances,\n },\n haveManageableDebt: {\n title: copy.key_indicators_borrow.have_manageable_debt_drawer.have_manageable_debt_title,\n description:\n copy.key_indicators_borrow.have_manageable_debt_drawer.have_manageable_debt_description,\n stickyComponent: <HaveManageableDebtProgressBar />,\n content: <HaveManageableDebtComponent />,\n drawerType: 'connectDrawer',\n connectTitle: copy.dont_see_all_your_accounts,\n connectDescription: copy.connect_more_accounts_to_view_more_accurate_financial_picture,\n },\n haveAGoodCreditScore: {\n title: <CreditScoreHeader />,\n description: copy.credit_score_description,\n stickyComponent: null,\n content: <CreditScoreContent />,\n },\n saveEnoughToLiveOn: {\n title: copy.key_indicators_save.drawer_title,\n description: copy.key_indicators_save.drawer_description,\n stickyComponent: <SaveEnoughToLiveOnProgressBar />,\n content: <SaveEnoughToLiveOnDrawerContent />,\n drawerType: 'connectDrawer',\n connectTitle: copy.dont_see_all_your_accounts,\n connectDescription: copy.connect_more_accounts_to_view_more_accurate_financial_picture,\n },\n }\n\n const content = contentMapping[drawerFor]\n return (\n <KeyIndicatorsDrawer\n connectDescription={content?.connectDescription}\n connectTitle={content?.connectTitle}\n description={content?.description}\n drawerTitle={copy.key_indicators}\n drawerType={content.drawerType}\n isOpen={isOpen}\n loadConnectAccountsCard={true}\n onClose={onClose}\n stickyComponent={content.stickyComponent}\n title={content.title}\n >\n <Stack sx={{ gap: 16 }}>{content.content}</Stack>\n </KeyIndicatorsDrawer>\n )\n}\n\nexport default observer(KeyIndicatorsTabItemDrawer)\n","import React from 'react'\n\nimport Stack from '@mui/material/Stack'\n\nimport { P, Text } from '@mxenabled/mxui'\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { useGlobalCopyStore } from '../../common'\nimport type { CardStatus } from '../../common/constants/FinStrong'\n\nimport { KeyIndicatorsTabItemType } from '../constants'\n\nimport KeyIndicatorsTabItemDrawer from './KeyIndicatorsTabItemDrawer'\nimport StatusChip from './StatusChip'\n\ninterface KeyIndicatorsTabsItemProps {\n drawerFor: KeyIndicatorsTabItemType\n title: string\n description: string\n cardState: keyof typeof CardStatus\n}\n\nconst KeyIndicatorsTabsItem: React.FC<KeyIndicatorsTabsItemProps> = ({\n drawerFor,\n title,\n description,\n cardState = 'MISSING',\n}) => {\n const { finstrong: copyContent } = useGlobalCopyStore()\n\n const [isDrawerOpen, setIsDrawerOpen] = React.useState(false)\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n setIsDrawerOpen(true)\n }\n }\n\n return (\n <>\n <Stack\n aria-label={`${copyContent.key_indicators_open} ${title}`}\n onClick={() => setIsDrawerOpen(true)}\n onKeyDown={handleKeyDown}\n role=\"button\"\n sx={{\n alignItems: 'center',\n borderRadius: 2,\n cursor: 'pointer',\n flexDirection: 'row',\n gap: 12,\n justifyContent: 'space-between',\n outline: '1px solid',\n outlineColor: 'divider',\n p: 16,\n }}\n tabIndex={0}\n >\n <Stack sx={{ gap: 8, minWidth: 0 }}>\n <Stack sx={{ alignItems: 'center', flexDirection: 'row', gap: 8 }}>\n <Text sx={{ fontWeight: 600 }} variant=\"body1\">\n {title}\n </Text>\n <StatusChip status={cardState} />\n </Stack>\n <P color=\"secondary\" variant=\"subtitle2\">\n {description}\n </P>\n </Stack>\n <ChevronRight color=\"secondary\" size={24} />\n </Stack>\n <KeyIndicatorsTabItemDrawer\n drawerFor={drawerFor}\n isOpen={isDrawerOpen}\n onClose={() => setIsDrawerOpen(false)}\n />\n </>\n )\n}\n\nexport default KeyIndicatorsTabsItem\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useFinstrongStore, useGlobalCopyStore } from '../../common'\nimport { KeyIndicatorsTabItemType } from '../constants'\nimport { getSpendingFeeCountStatus, getSpendToIncomeRatioState } from '../util/finstrongUtils'\n\nimport KeyIndicatorsTabsItem from './KeyIndicatorsTabItem'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nconst KeyIndicatorsSpendTab: React.FC = () => {\n const { finstrong: copyContent } = useGlobalCopyStore()\n const { key_indicators_spend: spendCopy } = copyContent\n const { healthScore } = useFinstrongStore()\n\n const getSpendToIncomeRatioStatus = (ratio: number | null) => {\n const state = getSpendToIncomeRatioState(ratio)\n\n const cardStatusMapping = {\n GOOD: spendCopy.ratio_good_description,\n FAIR: spendCopy.ratio_fair_description,\n OFF_TRACK: spendCopy.ratio_off_track_description,\n MISSING: spendCopy.ratio_missing_description,\n }\n\n const description =\n state === 'MISSING'\n ? cardStatusMapping[state]\n : (buildDynamicCopy(cardStatusMapping[state], ratio) as string)\n\n return {\n cardState: state,\n description,\n title: spendCopy.ratio_card_title,\n }\n }\n\n const { spendToIncomeRatio, spendFeeCount } = React.useMemo(() => {\n const healthScoreRatio =\n healthScore.spend_to_income_ratio !== null\n ? Math.round(healthScore.spend_to_income_ratio * 100)\n : null\n const spendToIncomeRatio = getSpendToIncomeRatioStatus(healthScoreRatio)\n const spendFeeCount = getSpendingFeeCountStatus(\n healthScore.spending_fee_transaction_count,\n spendCopy,\n )\n\n return { spendToIncomeRatio, spendFeeCount }\n }, [\n healthScore.spend_to_income_ratio,\n healthScore.spending_fee_transaction_count,\n spendCopy,\n copyContent,\n ])\n\n return (\n <Stack sx={{ gap: 24, p: 8, pt: 24 }}>\n <KeyIndicatorsTabsItem\n cardState={spendToIncomeRatio.cardState}\n description={spendToIncomeRatio.description}\n drawerFor={KeyIndicatorsTabItemType.SpendLessThanYouMake}\n title={spendToIncomeRatio.title}\n />\n <KeyIndicatorsTabsItem\n cardState={spendFeeCount.cardState}\n description={spendFeeCount.description}\n drawerFor={KeyIndicatorsTabItemType.PayBillsOnTime}\n title={spendFeeCount.title}\n />\n </Stack>\n )\n}\n\nexport default observer(KeyIndicatorsSpendTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useFinstrongStore, useGlobalCopyStore } from '../../common'\nimport { KeyIndicatorsTabItemType } from '../constants'\nimport { getDaysOfCashOnHandState, getEmergencySavingsState } from '../util/finstrongUtils'\n\nimport KeyIndicatorsTabsItem from './KeyIndicatorsTabItem'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nconst KeyIndicatorsSaveTab: React.FC = () => {\n const { healthScore } = useFinstrongStore()\n const { finstrong: copyContent } = useGlobalCopyStore()\n const { key_indicators_save: saveCopy } = copyContent\n\n const getDaysOfCashOnHandStatus = (days: number | null) => {\n const state = getDaysOfCashOnHandState(days)\n\n const cardStatusMapping = {\n GOOD: saveCopy.days_of_cash_good_description,\n FAIR: saveCopy.days_of_cash_fair_description,\n OFF_TRACK: saveCopy.days_of_cash_off_track_description,\n MISSING: saveCopy.days_of_cash_missing_description,\n }\n\n const description =\n state === 'MISSING'\n ? cardStatusMapping[state]\n : (buildDynamicCopy(cardStatusMapping[state], days) as string)\n\n return {\n cardState: state,\n description,\n title: saveCopy.days_of_cash_title,\n }\n }\n\n const getEmergencySavingsStatus = (dollars: number | null) => {\n const state = getEmergencySavingsState(dollars)\n\n const cardStatusMapping = {\n GOOD: saveCopy.emergency_savings_good_description,\n FAIR: saveCopy.emergency_savings_fair_description,\n OFF_TRACK: saveCopy.emergency_savings_off_track_description,\n MISSING: saveCopy.emergency_savings_missing_description,\n }\n\n let description: string\n\n if (state === 'FAIR' && dollars !== null) {\n description = buildDynamicCopy(\n cardStatusMapping[state],\n formatCurrency(dollars, '0,0.00'),\n ) as string\n } else {\n description = cardStatusMapping[state]\n }\n\n return {\n cardState: state,\n description,\n title: saveCopy.emergency_savings_title,\n }\n }\n\n const { daysOfCashOnHand, emergencySavings } = React.useMemo(() => {\n const noOfDays =\n healthScore.months_of_cash_on_hand !== null\n ? Math.round(healthScore.months_of_cash_on_hand * 30)\n : null\n const daysOfCashOnHand = getDaysOfCashOnHandStatus(noOfDays)\n\n const noOfDollars =\n healthScore.emergency_savings_on_hand !== null\n ? Math.round(healthScore.emergency_savings_on_hand)\n : null\n const emergencySavings = getEmergencySavingsStatus(noOfDollars)\n\n return { daysOfCashOnHand, emergencySavings }\n }, [\n healthScore.months_of_cash_on_hand,\n healthScore.emergency_savings_on_hand,\n saveCopy,\n copyContent,\n ])\n\n return (\n <Stack direction=\"column\" gap={24} sx={{ p: 8, pt: 24 }}>\n <KeyIndicatorsTabsItem\n cardState={daysOfCashOnHand.cardState}\n description={daysOfCashOnHand.description}\n drawerFor={KeyIndicatorsTabItemType.SaveEnoughToLiveOn}\n title={daysOfCashOnHand.title}\n />\n <KeyIndicatorsTabsItem\n cardState={emergencySavings.cardState}\n description={emergencySavings.description}\n drawerFor={KeyIndicatorsTabItemType.MaintainEmergencySavings}\n title={emergencySavings.title}\n />\n </Stack>\n )\n}\n\nexport default observer(KeyIndicatorsSaveTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useFinstrongStore, useGlobalCopyStore, useUserStore } from '../../common'\nimport { KeyIndicatorsTabItemType } from '../constants'\nimport { getCreditScoreState, getManageDebtRatioState } from '../util/finstrongUtils'\n\nimport KeyIndicatorsTabsItem from './KeyIndicatorsTabItem'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nconst KeyIndicatorsBorrowTab: React.FC = () => {\n const { healthScore } = useFinstrongStore()\n const { finstrong: copyContent } = useGlobalCopyStore()\n const { key_indicators_borrow: borrowCopy } = copyContent\n const { user } = useUserStore()\n\n const getManageDebtRatioStatus = (ratio: number | null) => {\n const state = getManageDebtRatioState(ratio)\n\n const cardStatusMapping = {\n GOOD: borrowCopy.manage_debit_good_description,\n FAIR: borrowCopy.manage_debit_fair_description,\n OFF_TRACK: borrowCopy.manage_debit_off_track_description,\n MISSING: borrowCopy.manage_debit_missing_description,\n }\n\n const description =\n state === 'FAIR' || state === 'OFF_TRACK'\n ? (buildDynamicCopy(cardStatusMapping[state], ratio) as string)\n : cardStatusMapping[state]\n\n return {\n cardState: state,\n description,\n title: borrowCopy.manage_debit_title,\n }\n }\n\n const getCreditScoreStatus = (score: number | null) => {\n const state = getCreditScoreState(score)\n\n const cardStatusMapping = {\n GOOD: borrowCopy.credit_score_good_description,\n FAIR: borrowCopy.credit_score_fair_description,\n OFF_TRACK: borrowCopy.credit_score_off_track_description,\n MISSING: borrowCopy.credit_score_missing_description,\n } as const\n\n const description =\n state === 'MISSING'\n ? cardStatusMapping[state]\n : (buildDynamicCopy(cardStatusMapping[state], score) as string)\n\n return {\n cardState: state,\n description,\n title: borrowCopy.credit_score_title,\n }\n }\n\n const { manageDebtStatus, creditScoreStatus } = React.useMemo(() => {\n const convertedDebtToIncomeRatio =\n healthScore.debt_to_income_ratio !== null\n ? Math.round(healthScore.debt_to_income_ratio * 100)\n : null\n const manageDebtStatus = getManageDebtRatioStatus(convertedDebtToIncomeRatio)\n const creditScoreStatus = getCreditScoreStatus(user.credit_score || null)\n\n return {\n manageDebtStatus,\n creditScoreStatus,\n }\n }, [healthScore.debt_to_income_ratio, user.credit_score, borrowCopy, copyContent])\n\n return (\n <Stack direction=\"column\" gap={24} sx={{ p: 8, pt: 24 }}>\n <KeyIndicatorsTabsItem\n cardState={manageDebtStatus.cardState}\n description={manageDebtStatus.description}\n drawerFor={KeyIndicatorsTabItemType.HaveManageableDebt}\n title={manageDebtStatus.title}\n />\n <KeyIndicatorsTabsItem\n cardState={creditScoreStatus.cardState}\n description={creditScoreStatus.description}\n drawerFor={KeyIndicatorsTabItemType.HaveAGoodCreditScore}\n title={creditScoreStatus.title}\n />\n </Stack>\n )\n}\n\nexport default observer(KeyIndicatorsBorrowTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { CreditCard, ContentCopy, Savings } from '@mxenabled/mx-icons'\n\nimport { TabContentContainer, useGlobalCopyStore } from '../../common'\n\nimport KeyIndicatorsSpendTab from './KeyIndicatorsSpendTab'\nimport KeyIndicatorsSaveTab from './KeyIndicatorsSaveTab'\nimport KeyIndicatorsBorrowTab from './KeyIndicatorsBorrowTab'\n\nconst KeyIndicatorsTabsWidget: React.FC = () => {\n const [tabValue, setTabValue] = React.useState(0)\n const { finstrong: copy } = useGlobalCopyStore()\n\n return (\n <>\n <Tabs\n aria-label={'Key Indicators'}\n centered={true}\n onChange={(_, val) => setTabValue(val)}\n selectionFollowsFocus={true}\n sx={{\n mb: 0,\n '& .MuiTab-root': {\n minWidth: 0,\n },\n }}\n textColor=\"primary\"\n value={tabValue}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"spend-details-tabpanel-0\"\n icon={<CreditCard sx={{ mr: 8 }} />}\n iconPosition=\"start\"\n id=\"spend-details-tab-0\"\n label={copy.key_indicators_spend.title}\n sx={{ minHeight: 44 }} // TODO : remove it once the theme is updated\n />\n <Tab\n aria-controls=\"save-details-tabpanel-1\"\n icon={<Savings sx={{ mr: 8 }} />}\n iconPosition=\"start\"\n id=\"save-details-tab-1\"\n label={copy.key_indicators_save.title}\n sx={{ minHeight: 44 }} // TODO : remove it once the theme is updated\n />\n <Tab\n aria-controls=\"borrow-details-tabpanel-2\"\n icon={<ContentCopy sx={{ mr: 8 }} />}\n iconPosition=\"start\"\n id=\"borrow-details-tab-2\"\n label={copy.key_indicators_borrow.title}\n sx={{ minHeight: 44 }} // TODO : remove it once the theme is updated\n />\n </Tabs>\n\n <TabContentContainer index={0} name=\"spend-details\" value={tabValue}>\n <KeyIndicatorsSpendTab />\n </TabContentContainer>\n\n <TabContentContainer index={1} name=\"save-details\" value={tabValue}>\n <KeyIndicatorsSaveTab />\n </TabContentContainer>\n\n <TabContentContainer index={2} name=\"borrow-details\" value={tabValue}>\n <KeyIndicatorsBorrowTab />\n </TabContentContainer>\n </>\n )\n}\n\nexport default observer(KeyIndicatorsTabsWidget)\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\n\nimport { H3, P } from '@mxenabled/mxui'\nimport { ChevronRight, MultilineChart } from '@mxenabled/mx-icons'\n\nimport { Loader, useGlobalCopyStore, useGlobalUiStore } from '../../common'\n\ninterface MissingDataProps {\n onClick: () => void\n}\n\nconst MissingData = ({ onClick }: MissingDataProps) => {\n const { finstrong: copy } = useGlobalCopyStore()\n const { isCopyLoaded } = useGlobalUiStore()\n\n if (!isCopyLoaded) return <Loader />\n\n return (\n <Stack sx={{ alignItems: 'center', gap: 12, pt: 12, pb: 32 }}>\n <MultilineChart size={48} />\n\n <Stack sx={{ alignItems: 'center', gap: 4, textAlign: 'center' }}>\n <H3>{copy.missing_data_title}</H3>\n <P sx={{ width: { sm: 348 } }} variant=\"subtitle1\">\n {copy.missing_data_description}\n </P>\n </Stack>\n <Box>\n <Button\n endIcon={<ChevronRight />}\n onClick={onClick}\n size=\"small\"\n sx={{\n fontSize: 13,\n ':hover': {\n bgcolor: 'transparent',\n },\n }}\n variant=\"text\"\n >\n {copy.connect_more_accounts_button}\n </Button>\n </Box>\n </Stack>\n )\n}\n\nexport default observer(MissingData)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\n\nimport { Add } from '@mxenabled/mx-icons'\n\nimport { useGlobalCopyStore } from '../../../common'\nimport { Frequency, type Transaction } from '../../../core'\nimport SubheaderRow from '../../../common/components/SubheaderRow'\nimport { OnboardingSteps } from '../../../core/types/Finstrong'\nimport { fromUnixToDayOfWeekAndDate } from '../../../core/utils/DateUtil'\nimport { AddRecurringTransactionDetails } from '../../../recurringtransactions'\nimport { TransactionRow } from '../../../transactions'\nimport { hasInsetBorder, shouldShowDate } from '../../../transactions/utils/Transactions'\n\nimport type { StepState } from './OnboardingStepsDrawer'\n\ninterface OnboardingAddMonthlyIncomeProps {\n firstDay: number\n frequency: Frequency\n secondDay: number\n incomeTransactions: Transaction[]\n setCurrentStep: (step: StepState) => void\n setFirstDay: (day: number) => void\n setFrequency: (frequency: Frequency) => void\n setSecondDay: (day: number) => void\n transaction: Transaction\n}\n\nconst OnboardingAddMonthlyIncome = ({\n firstDay,\n frequency,\n secondDay,\n incomeTransactions,\n setCurrentStep,\n setFirstDay,\n setFrequency,\n setSecondDay,\n transaction,\n}: OnboardingAddMonthlyIncomeProps) => {\n const { finstrong: copy } = useGlobalCopyStore()\n\n return (\n <React.Fragment>\n <Stack>\n {!!incomeTransactions.length && (\n <Box sx={{ pb: 24 }}>\n {incomeTransactions.reduce<React.JSX.Element[]>((elements, txn, i) => {\n if (txn.guid === transaction.guid) return elements\n\n const showDate = shouldShowDate(i, incomeTransactions)\n const isInset = hasInsetBorder(i, incomeTransactions)\n\n elements.push(\n <React.Fragment key={txn.guid}>\n {showDate && <SubheaderRow>{fromUnixToDayOfWeekAndDate(txn.date)}</SubheaderRow>}\n <TransactionRow component=\"div\" transaction={txn} />\n <Divider sx={{ ml: isInset ? 44 : 0 }} />\n </React.Fragment>,\n )\n\n return elements\n }, [])}\n </Box>\n )}\n <AddRecurringTransactionDetails\n firstDay={firstDay}\n frequency={frequency}\n onFirstDayChange={setFirstDay}\n onFrequencyChange={setFrequency}\n onSecondDayChange={setSecondDay}\n secondDay={secondDay}\n transaction={transaction}\n />\n </Stack>\n\n <Box sx={{ px: 24 }}>\n <Button\n fullWidth={true}\n onClick={() => setCurrentStep({ step: OnboardingSteps.MonthlyIncome, type: 'main' })}\n startIcon={<Add />}\n >\n {copy.onboarding_add_more_income}\n </Button>\n </Box>\n </React.Fragment>\n )\n}\n\nexport default observer(OnboardingAddMonthlyIncome)\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport { alpha, useTheme } from '@mui/material/styles'\nimport { DatePicker, LocalizationProvider } from '@mui/x-date-pickers'\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\n\nimport { useGlobalCopyStore } from '../../../common'\n\ninterface OnboardingBirthdayProps {\n selectedDate: number | null | undefined\n setSelectedDate: (value: number | null | undefined) => void\n}\n\nconst OnboardingBirthday = ({ selectedDate, setSelectedDate }: OnboardingBirthdayProps) => {\n const { finstrong: copy } = useGlobalCopyStore()\n const theme = useTheme()\n\n const handleChange = (date: Date | null) => {\n setSelectedDate(Math.floor(new Date(date!).getTime() / 1000))\n }\n\n return (\n <Box sx={{ p: 24 }}>\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DatePicker\n disableFuture={true}\n label={copy.onboarding_select_date}\n onChange={handleChange}\n slotProps={{\n nextIconButton: {\n sx: {\n color: 'primary.main',\n '&:hover': { bgcolor: alpha(theme.palette.primary.light, 0.1) },\n },\n },\n previousIconButton: {\n sx: {\n color: 'primary.main',\n '&:hover': { bgcolor: alpha(theme.palette.primary.light, 0.1) },\n },\n },\n }}\n sx={{\n width: '100%',\n '& .MuiIconButton-edgeEnd': {\n color: 'primary.main',\n '&:hover': { bgcolor: alpha(theme.palette.primary.light, 0.1) },\n },\n }}\n value={selectedDate ? new Date(selectedDate * 1000) : null}\n />\n </LocalizationProvider>\n </Box>\n )\n}\n\nexport default observer(OnboardingBirthday)\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport TextField from '@mui/material/TextField'\n\nimport { useGlobalCopyStore } from '../../../common'\n\ninterface OnboardingCreditScoreProps {\n creditScore: number\n setCreditScore: (value: number) => void\n}\n\nconst OnboardingCreditScore = ({ creditScore, setCreditScore }: OnboardingCreditScoreProps) => {\n const { finstrong: copy } = useGlobalCopyStore()\n\n const isValid = !isNaN(creditScore)\n\n return (\n <Box sx={{ p: 24 }}>\n <TextField\n error={!isValid}\n fullWidth={true}\n inputMode=\"numeric\"\n label={copy.credit_score}\n onChange={(e) => setCreditScore(Number(e.target.value))}\n slotProps={{\n htmlInput: {\n noValidate: true,\n pattern: '[0-9]*',\n },\n }}\n value={isValid ? creditScore : ''}\n />\n </Box>\n )\n}\n\nexport default observer(OnboardingCreditScore)\n","import Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\ninterface ProfileProgressBarProps {\n completeCopy: string\n value: number\n}\n\nconst ProfileProgressBar = ({ value, completeCopy }: ProfileProgressBarProps) => (\n <Stack sx={{ gap: 8 }}>\n <Stack sx={{ flexDirection: 'row', gap: 4 }}>\n {Array.from({ length: 4 }).map((_, i) => (\n <Box\n key={i}\n sx={{\n bgcolor: i < value ? 'primary.main' : 'neutral.light',\n borderRadius: '24px',\n height: 4,\n width: '100%',\n }}\n />\n ))}\n </Stack>\n <Text sx={{ color: 'text.secondary' }} variant=\"body2\">\n {(value / 4) * 100}% {completeCopy}\n </Text>\n </Stack>\n)\n\nexport default ProfileProgressBar\n","import Stack from '@mui/material/Stack'\n\nimport { H3, P } from '@mxenabled/mxui'\n\nimport ProfileProgressBar from '../ProfileProgressBar'\n\ninterface OnboardingStepsHeaderProps {\n completeCopy: string\n primaryText: string\n secondaryText: string\n value: number\n}\n\nconst OnboardingStepsHeader = ({\n completeCopy,\n primaryText,\n secondaryText,\n value,\n}: OnboardingStepsHeaderProps) => {\n return (\n <Stack sx={{ gap: 20, p: 24 }}>\n <Stack sx={{ gap: 8 }}>\n <H3>{primaryText}</H3>\n <P variant=\"subtitle1\">{secondaryText}</P>\n </Stack>\n <ProfileProgressBar completeCopy={completeCopy} value={value} />\n </Stack>\n )\n}\n\nexport default OnboardingStepsHeader\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { endOfMonth } from 'date-fns/endOfMonth'\nimport { formatISO } from 'date-fns/formatISO'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { subDays } from 'date-fns/subDays'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\n\nimport { H2, P } from '@mxenabled/mxui'\nimport { Add } from '@mxenabled/mx-icons'\n\nimport AccountsListCompact from '../../../accounts/components/AccountsListCompact'\nimport {\n ConnectDrawer,\n Drawer,\n useAccountStore,\n useFinstrongStore,\n useGlobalCopyStore,\n useRecurringTransactionsStore,\n useTransactionStore,\n useUserStore,\n} from '../../../common'\nimport {\n Frequency,\n type RepeatingTransaction,\n RepeatingType,\n type Transaction,\n} from '../../../core'\nimport { OnboardingSteps } from '../../../core/types/Finstrong'\nimport { SelectTransaction } from '../../../recurringtransactions'\nimport { getNextPaymentDate } from '../../../core/utils/RecurringTransactionsUtil'\nimport { incomeFilter, incomeFilterSearch } from '../../../transactions/utils/Filters'\n\nimport { CALCULATING_ANIMATION_URL } from '../../constants'\n\nimport OnboardingAddMonthlyIncome from './OnboardingAddMonthlyIncome'\nimport OnboardingBirthday from './OnboardingBirthday'\nimport OnboardingCreditScore from './OnboardingCreditScore'\nimport OnboardingStepsHeader from './OnboardingStepsHeader'\n\ninterface IncomeTransaction extends Transaction {\n firstDay: number\n frequency: Frequency\n secondDay: number\n}\n\ninterface OnboardingStepsDrawerProps {\n isOpen: boolean\n onClose: () => void\n}\n\ninterface Steps {\n detail?: React.ReactNode\n detailActionContent?: string\n main: React.ReactNode\n mainActionContent: string\n primaryText: string\n secondaryText: string\n}\n\ntype StepType = 'main' | 'detail'\nexport interface StepState {\n step: OnboardingSteps\n type: StepType\n}\n\nconst INITIAL_STEP_STATE: StepState = {\n step: OnboardingSteps.ConnectAccounts,\n type: 'main',\n}\n\nconst OnboardingStepsDrawer = ({ isOpen, onClose }: OnboardingStepsDrawerProps) => {\n const { visibleAccounts: accounts } = useAccountStore()\n const { calculateHealthScore } = useFinstrongStore()\n const { finstrong: copy } = useGlobalCopyStore()\n const { addRepeatingTransaction, setDateRange } = useRecurringTransactionsStore()\n const { filter, setFilter, transactions } = useTransactionStore()\n const { user, userProfile, updateUser, updateUserProfile } = useUserStore()\n\n const [creditScore, setCreditScore] = React.useState<number>(user.credit_score || 0)\n const [currentStep, setCurrentStep] = React.useState<{ step: OnboardingSteps; type: StepType }>(\n INITIAL_STEP_STATE,\n )\n const [firstDay, setFirstDay] = React.useState(1)\n const [frequency, setFrequency] = React.useState(Frequency.EveryMonth)\n const [incomeTransactions, setIncomeTransactions] = React.useState<IncomeTransaction[]>([])\n const [isComplete, setIsComplete] = React.useState(false)\n const [isConnectDrawerOpen, setIsConnectDrawerOpen] = React.useState(false)\n const [selectedDate, setSelectedDate] = React.useState<number | null | undefined>(user.birthday)\n const [secondDay, setSecondDay] = React.useState(15)\n const [transactionGuid, setTransactionGuid] = React.useState('')\n\n React.useEffect(() => {\n setDateRange({ start: startOfMonth(startOfToday()), end: endOfMonth(startOfToday()) })\n }, [])\n\n React.useEffect(() => {\n setFilter({\n accounts: accounts.map((account) => account.guid),\n dateRange: {\n start: subDays(new Date(), 90),\n end: new Date(),\n },\n custom: incomeFilter,\n })\n }, [accounts])\n\n const transaction = React.useMemo(\n () => transactions.find((t) => t.guid === transactionGuid),\n [transactionGuid, transactions],\n )\n\n const isPrimaryActionEnabled = React.useMemo(() => {\n const isValid: Partial<Record<OnboardingSteps, boolean>> = {\n [OnboardingSteps.ConnectAccounts]: true,\n [OnboardingSteps.MonthlyIncome]: !!transactionGuid,\n [OnboardingSteps.Birthday]: !!user.birthday || !!selectedDate,\n [OnboardingSteps.CreditScore]: !!user.credit_score || !!creditScore,\n }\n\n return isValid[currentStep.step]\n }, [creditScore, currentStep, selectedDate, transactionGuid, user])\n\n const hasAccounts = accounts.length > 0\n const progressValue = React.useMemo(() => {\n const { step } = currentStep\n\n let value = 0\n\n if (step >= OnboardingSteps.MonthlyIncome && hasAccounts) value++\n if (step >= OnboardingSteps.Birthday && !!incomeTransactions.length) value++\n if (step >= OnboardingSteps.CreditScore && (user.birthday || user.credit_score)) value++\n\n return value\n }, [currentStep.step, hasAccounts, incomeTransactions.length, user.birthday, user.credit_score])\n\n const handleSelectTransaction = (searchValue: string) => {\n setFilter({\n ...filter,\n custom: (transaction: Transaction) => {\n if (searchValue) return incomeFilterSearch(transaction, searchValue)\n\n return incomeFilter(transaction)\n },\n })\n }\n\n const steps: Partial<Record<OnboardingSteps, Steps>> = {\n [OnboardingSteps.ConnectAccounts]: {\n main: hasAccounts ? <AccountsListCompact shouldShowBalance={false} /> : null,\n mainActionContent: hasAccounts ? copy.onboarding_next : copy.onboarding_add_accounts,\n primaryText: copy.connect_your_accounts,\n secondaryText: copy.onboarding_connect_your_accounts_secondary,\n },\n [OnboardingSteps.MonthlyIncome]: {\n detail: (\n <OnboardingAddMonthlyIncome\n firstDay={firstDay}\n frequency={frequency}\n incomeTransactions={incomeTransactions}\n secondDay={secondDay}\n setCurrentStep={(step) => {\n setCurrentStep(step)\n setIncomeTransactions((prev) => {\n const exists = prev.some((t) => t.guid === transactionGuid)\n if (exists) return prev.filter((t) => t.guid !== transactionGuid)\n\n const newTransaction = transactions.find((t) => t.guid === transactionGuid)\n return newTransaction\n ? [...prev, { ...newTransaction, firstDay, frequency, secondDay }]\n : prev\n })\n }}\n setFirstDay={setFirstDay}\n setFrequency={setFrequency}\n setSecondDay={setSecondDay}\n transaction={transaction!}\n />\n ),\n detailActionContent: copy.onboarding_confirm_income,\n main: (\n <SelectTransaction\n onSearch={handleSelectTransaction}\n onSelected={(guid) => {\n setCurrentStep({ step: OnboardingSteps.MonthlyIncome, type: 'detail' })\n setTransactionGuid(guid)\n }}\n />\n ),\n mainActionContent: copy.onboarding_confirm_income,\n primaryText: copy.onboarding_add_income_primary,\n secondaryText: copy.onboarding_add_income_secondary,\n },\n [OnboardingSteps.Birthday]: {\n main: <OnboardingBirthday selectedDate={selectedDate} setSelectedDate={setSelectedDate} />,\n mainActionContent: copy.onboarding_next,\n primaryText: copy.onboarding_birthday_primary,\n secondaryText: copy.onboarding_birthday_secondary,\n },\n [OnboardingSteps.CreditScore]: {\n main: <OnboardingCreditScore creditScore={creditScore} setCreditScore={setCreditScore} />,\n mainActionContent: copy.onboarding_next,\n primaryText: copy.onboarding_credit_score_primary,\n secondaryText: copy.onboarding_credit_score_secondary,\n },\n }\n\n const handleClose = () => {\n setCurrentStep(INITIAL_STEP_STATE)\n setIsComplete(false)\n setTransactionGuid('')\n\n onClose()\n }\n\n const handleComplete = async () => {\n setIsComplete(true)\n\n await addRecurringIncome(incomeTransactions)\n await calculateHealthScore()\n await updateUserProfile({ ...userProfile, has_completed_finstrong_onboarding: true })\n\n handleClose()\n }\n\n const handleDoItLater = () => {\n if (currentStep.step === OnboardingSteps.CreditScore) {\n handleComplete()\n return\n }\n\n setCurrentStep({ step: currentStep.step + 1, type: 'main' })\n }\n\n const handlePrimaryAction = () => {\n const { step } = currentStep\n const nextStep = step + 1\n\n switch (step) {\n case OnboardingSteps.Birthday:\n if (selectedDate && selectedDate !== user.birthday) {\n updateUser({ ...user, birthday: selectedDate })\n }\n break\n\n case OnboardingSteps.CreditScore:\n if (creditScore && creditScore !== user.credit_score) {\n updateUser({ ...user, credit_score: creditScore })\n }\n handleComplete()\n return\n\n case OnboardingSteps.MonthlyIncome:\n if (\n transactionGuid &&\n incomeTransactions.findIndex(({ guid }) => guid === transactionGuid) === -1\n ) {\n setIncomeTransactions((prev) => [\n ...prev,\n { ...transaction!, firstDay, frequency, secondDay },\n ])\n }\n break\n\n case OnboardingSteps.ConnectAccounts:\n if (!hasAccounts) {\n setIsConnectDrawerOpen(true)\n return\n }\n break\n\n default:\n break\n }\n\n if (nextStep in OnboardingSteps) setCurrentStep({ step: nextStep, type: 'main' })\n }\n\n const handleSecondaryAction = () => {\n const { step, type } = currentStep\n\n if (type === 'detail') {\n setCurrentStep({ step, type: 'main' })\n return\n }\n\n if (step === OnboardingSteps.Birthday && incomeTransactions.length) {\n setCurrentStep({ step: step - 1, type: 'detail' })\n return\n }\n\n if (step > OnboardingSteps.ConnectAccounts) setCurrentStep({ step: step - 1, type: 'main' })\n }\n\n const addRecurringIncome = async (transactions: IncomeTransaction[]) => {\n for (const t of transactions) {\n const {\n account_guid,\n amount,\n date,\n description,\n feed_description,\n firstDay,\n frequency,\n secondDay,\n merchant_guid,\n payee,\n transaction_type,\n } = t\n\n const nextDate = getNextPaymentDate(frequency, fromUnixTime(date))\n\n const repeatingTransaction = {\n account_guid,\n amount,\n created_by: 0,\n description: payee || description || feed_description,\n merchant_guid,\n predicted_occurs_on: formatISO(nextDate, { representation: 'date' }),\n recurrence_day: firstDay,\n recurrence_type: frequency,\n repeating_transaction_type: RepeatingType.Income,\n second_recurrence_day: secondDay,\n transaction_type,\n user_guid: user.guid,\n } as RepeatingTransaction\n\n await addRepeatingTransaction(repeatingTransaction, t)\n }\n }\n\n const currentStepData = steps[currentStep.step]\n const isConnectAccountsStep = currentStep.step === OnboardingSteps.ConnectAccounts\n const primaryButtonProps = {\n fullWidth: true,\n ...(isConnectAccountsStep && !hasAccounts && { startIcon: <Add /> }),\n }\n const showDoItLaterButton = !isConnectAccountsStep || (isConnectAccountsStep && !hasAccounts)\n\n return (\n <React.Fragment>\n <Drawer\n footerStyles={{ borderTop: 1, borderColor: 'divider', px: 24, py: 16 }}\n hasSecondaryAction={!isConnectAccountsStep}\n isOpen={isOpen}\n isPrimaryDisabled={!isPrimaryActionEnabled}\n onClose={handleClose}\n onSecondaryAction={handleSecondaryAction}\n primaryButtonProps={primaryButtonProps}\n primaryText={currentStepData?.mainActionContent}\n secondaryColor=\"primary\"\n secondaryText={copy.onboarding_back}\n title={copy.title}\n {...(!isComplete && { onPrimaryAction: handlePrimaryAction })}\n >\n <Stack sx={{ bgcolor: 'background.default', height: '100%' }}>\n {isComplete && (\n <Stack sx={{ alignItems: 'center', gap: 24, position: 'relative', px: 16, top: 126 }}>\n <img alt=\"\" src={CALCULATING_ANIMATION_URL} style={{ minHeight: 100, width: 211 }} />\n <H2>{copy.onboarding_calculate_primary}</H2>\n <P sx={{ textAlign: 'center' }} variant=\"subtitle1\">\n {copy.onboarding_calculate_secondary}\n </P>\n </Stack>\n )}\n {currentStepData && !isComplete && (\n <React.Fragment>\n <OnboardingStepsHeader\n completeCopy={copy.complete}\n primaryText={currentStepData.primaryText}\n secondaryText={currentStepData.secondaryText}\n value={progressValue}\n />\n {currentStep.type === 'main' && (\n <Box sx={{ bgcolor: 'background.default' }}>\n {currentStepData.main}\n {showDoItLaterButton && (\n <Stack sx={{ alignItems: 'center', px: 24, py: 12 }}>\n <Button fullWidth={true} onClick={handleDoItLater}>\n {copy.onboarding_do_it_later}\n </Button>\n </Stack>\n )}\n </Box>\n )}\n {currentStep.type === 'detail' && currentStepData.detail}\n </React.Fragment>\n )}\n </Stack>\n </Drawer>\n\n <ConnectDrawer\n onClose={() => setIsConnectDrawerOpen(false)}\n showConnectWidget={isConnectDrawerOpen}\n title={copy.connect_more_accounts_button}\n />\n </React.Fragment>\n )\n}\n\nexport default observer(OnboardingStepsDrawer)\n","import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\n\nimport { H2, P } from '@mxenabled/mxui'\nimport { Cardiology } from '@mxenabled/mx-icons'\n\nimport { useGlobalCopyStore } from '../../../common'\n\nimport OnboardingStepsDrawer from './OnboardingStepsDrawer'\n\nconst Onboarding = () => {\n const { finstrong: copy } = useGlobalCopyStore()\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n return (\n <React.Fragment>\n <Stack\n sx={{\n alignItems: 'center',\n bgcolor: 'background.default',\n gap: 48,\n height: 'calc(100dvh - 116px)',\n pb: 24,\n pt: 72,\n px: 16,\n }}\n >\n <Stack sx={{ alignItems: { sm: 'center' }, gap: 24, width: '100%' }}>\n <Box sx={{ textAlign: 'center' }}>\n <Cardiology size={72} />\n </Box>\n <Stack sx={{ gap: 4, textAlign: 'center', width: { sm: 400 } }}>\n <H2>{copy.onboarding_title}</H2>\n <P sx={{ color: 'text.secondary' }} variant=\"subtitle1\">\n {copy.onboarding_subtitle}\n </P>\n </Stack>\n </Stack>\n <Button onClick={() => setIsOpen(true)} variant=\"contained\">\n {copy.onboarding_get_started}\n </Button>\n </Stack>\n\n <OnboardingStepsDrawer isOpen={isOpen} onClose={() => setIsOpen(false)} />\n </React.Fragment>\n )\n}\n\nexport default Onboarding\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { alpha, useTheme } from '@mui/material/styles'\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\nimport { StaticDatePicker } from '@mui/x-date-pickers'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\n\nimport { Drawer, useFinstrongStore, useGlobalCopyStore, useUserStore } from '../../common'\n\ninterface ManageDOBProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst ManageDOB = ({ isOpen, onClose }: ManageDOBProps) => {\n const { finstrong: finstrongCopy } = useGlobalCopyStore()\n const theme = useTheme()\n const { updateUser, user } = useUserStore()\n const { loadPeerScore } = useFinstrongStore()\n const [selectedDate, setSelectedDate] = React.useState<number | null | undefined>(user.birthday)\n\n const handleChange = (date: Date | null) => {\n setSelectedDate(Math.floor(new Date(date!).getTime() / 1000))\n }\n const handlePrimaryAction = () => {\n if (!selectedDate || selectedDate === user.birthday) return\n updateUser({ ...user, birthday: selectedDate }).finally(() => {\n loadPeerScore()\n })\n onClose()\n }\n\n return (\n <Drawer\n footerStyles={{ borderTop: 1, borderColor: 'divider', px: 24, py: 16 }}\n isOpen={isOpen}\n onClose={onClose}\n onPrimaryAction={handlePrimaryAction}\n onSecondaryAction={onClose}\n title={finstrongCopy.date_of_birth}\n >\n <Stack sx={{ bgcolor: 'background.default', height: '100%' }}>\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n {/* TODO: Use the existing Calendar component, but update a few things in it */}\n <StaticDatePicker\n disableFuture={true}\n onChange={handleChange}\n slotProps={{\n nextIconButton: {\n sx: {\n color: 'primary.main',\n '&:hover': { bgcolor: alpha(theme.palette.primary.light, 0.1) },\n },\n },\n previousIconButton: {\n sx: {\n color: 'primary.main',\n '&:hover': { bgcolor: alpha(theme.palette.primary.light, 0.1) },\n },\n },\n switchViewButton: {\n sx: {\n color: 'primary.main',\n '&:hover': { bgcolor: alpha(theme.palette.primary.light, 0.1) },\n },\n },\n }}\n slots={{\n actionBar: () => null,\n toolbar: () => null,\n }}\n sx={{\n width: '100%',\n '& .MuiIconButton-edgeEnd': {\n color: 'primary.main',\n '&:hover': { bgcolor: alpha(theme.palette.primary.light, 0.1) },\n },\n }}\n value={selectedDate ? new Date(selectedDate * 1000) : new Date()}\n />\n </LocalizationProvider>\n </Stack>\n </Drawer>\n )\n}\n\nexport default observer(ManageDOB)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\n\nimport { H3, P } from '@mxenabled/mxui'\nimport { AccountBalance, CalendarMonth, CreditCard, Payments } from '@mxenabled/mx-icons'\n\nimport ConnectionsDrawer from '../../accounts/components/ConnectionsDrawer'\nimport {\n Drawer,\n useAccountStore,\n useGlobalCopyStore,\n useRecurringTransactionsStore,\n useUserStore,\n} from '../../common'\nimport { Frequency, RepeatingType } from '../../core'\nimport { RecurringSettings } from '../../recurringtransactions'\n\nimport { buildProfileItem } from '../util/finstrongUtils'\n\nimport { ConnectMoreAccountsCard } from './ConnectMoreAccountsCard'\nimport ManageCreditScore from './ManageCreditScore'\nimport ManageDOB from './ManageDOB'\nimport ProfileList, { Action } from './ProfileList'\nimport ProfileProgressBar from './ProfileProgressBar'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\ninterface ProfileDrawerProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst ProfileDrawer = ({ isOpen, onClose }: ProfileDrawerProps) => {\n const { visibleFinstrongAccounts: accounts } = useAccountStore()\n const {\n accounts: accountsCopy,\n common: commonCopy,\n finstrong: finstrongCopy,\n recurring: recurringCopy,\n } = useGlobalCopyStore()\n const { repeatingTransactions } = useRecurringTransactionsStore()\n const { user } = useUserStore()\n\n const totalIncomeAmount = repeatingTransactions.reduce((sum, rt) => {\n const { repeating_transaction_type, transactions, recurrence_type, amount } = rt\n\n const isIncome =\n repeating_transaction_type === RepeatingType.Income &&\n ((transactions && transactions.length > 0) || recurrence_type === Frequency.EveryYear)\n\n return isIncome ? sum + amount : sum\n }, 0)\n\n const [action, setAction] = React.useState<Action | null>(null)\n\n const profileItemsData = [\n {\n dynamicCopy: finstrongCopy.add_profile_item,\n fallbackLabel: finstrongCopy.monthly_income,\n icon: <Payments />,\n key: Action.MonthlyIncome,\n label: finstrongCopy.monthly_income,\n value: totalIncomeAmount,\n },\n {\n dynamicCopy: finstrongCopy.add_profile_item,\n fallbackLabel: finstrongCopy.date_of_birth,\n icon: <CalendarMonth />,\n key: Action.DateOfBirth,\n label: finstrongCopy.date_of_birth,\n value: user.birthday,\n },\n {\n dynamicCopy: finstrongCopy.add_profile_item,\n fallbackLabel: finstrongCopy.credit_score,\n icon: <CreditCard />,\n key: Action.CreditScore,\n label: finstrongCopy.credit_score,\n value: user.credit_score,\n },\n {\n fallbackLabel: finstrongCopy.connect_your_accounts,\n icon: <AccountBalance />,\n key: Action.Connections,\n label: finstrongCopy.connections,\n value:\n accounts.length > 0\n ? (buildDynamicCopy(\n finstrongCopy.connected_account,\n String(accounts.length),\n accounts.length > 1 ? finstrongCopy.accounts : finstrongCopy.account,\n ) as string)\n : undefined,\n },\n ]\n\n const list = profileItemsData.map((item) => buildProfileItem(item))\n\n return (\n <Drawer isOpen={isOpen} onClose={onClose} title={finstrongCopy.financial_profile}>\n <Stack sx={{ bgcolor: 'background.default', height: '100%' }}>\n <Stack sx={{ gap: 20, p: 24 }}>\n <Stack sx={{ gap: 8 }}>\n <H3>{finstrongCopy.your_financial_profile}</H3>\n <P>{finstrongCopy.financial_profile_description}</P>\n </Stack>\n <ProfileProgressBar\n completeCopy={finstrongCopy.complete}\n value={list.reduce((acc, item) => acc + (item.isComplete ? 1 : 0), 0)}\n />\n </Stack>\n <ProfileList list={list} onClickItem={setAction} />\n <Box sx={{ p: 24 }}>\n <ConnectMoreAccountsCard\n description={\n finstrongCopy.connect_more_accounts_to_view_more_accurate_financial_picture\n }\n drawerType=\"connectDrawer\"\n isDashboard={true}\n title={finstrongCopy.dont_see_all_your_accounts}\n titleDrawer={commonCopy.add_accounts}\n />\n </Box>\n </Stack>\n\n <Drawer\n isOpen={action === Action.MonthlyIncome}\n onClose={() => setAction(null)}\n shouldShowHeaderBorders={false}\n title={recurringCopy.action_title}\n >\n <RecurringSettings />\n </Drawer>\n <ManageDOB isOpen={action === Action.DateOfBirth} onClose={() => setAction(null)} />\n <ManageCreditScore isOpen={action === Action.CreditScore} onClose={() => setAction(null)} />\n <ConnectionsDrawer\n onClose={() => setAction(null)}\n showConnectionsWidget={action === Action.Connections}\n title={accountsCopy.manage_connections}\n />\n </Drawer>\n )\n}\nexport default observer(ProfileDrawer)\n","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","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","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { P } from '@mxenabled/mxui'\n\nimport { Loader, useFinstrongStore, useGlobalCopyStore, useGlobalUiStore } from '../../common'\nimport { LineChart } from '../../common/components/charts/LineChart'\n\nimport { calculateFinstrongScoreStatus } from '../util/finstrongUtils'\n\nimport { FinancialStrengthGraph } from './FinancialStrengthGraph'\nimport KeyIndicatorsDrawer from './KeyIndicatorsDrawer'\nimport ScoreHistoryTimeline from './shared/ScoreHistoryTimeline'\n\ninterface ScoreHistoryDrawerProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst ScoreHistoryDrawer = ({ isOpen, onClose }: ScoreHistoryDrawerProps) => {\n const theme = useTheme()\n const { finstrong: copy } = useGlobalCopyStore()\n const { isCopyLoaded, isInitialized } = useGlobalUiStore()\n const { augmentedChartData, healthScore, healthScoreChangeReports, peerScore } =\n useFinstrongStore()\n\n if (!isCopyLoaded || !isInitialized) return <Loader />\n\n const healthScoreStatus = calculateFinstrongScoreStatus(healthScore.health_score || 0, copy)\n const sortedHealthScoreChangeReports = healthScoreChangeReports.slice().reverse()\n\n return (\n <KeyIndicatorsDrawer\n additionalContent={\n <Stack\n sx={{\n backgroundColor: 'background.paper',\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <LineChart\n axisColor={theme.palette.divider}\n baseline=\"min\"\n colors={[theme.palette.primary.main]}\n curveType=\"natural\"\n datasets={[augmentedChartData]}\n height={160}\n isGraphClippingXAxis={true}\n labels={[copy.key_indicators_label]}\n margin={{ top: 24, bottom: 6, right: 24, left: -17 }}\n peerAverage={Math.round(peerScore?.average_health_score?.average_health_score || 0)}\n showArea={true}\n showAverage={true}\n title={copy.peer_average}\n useCustomMark={true}\n />\n </Stack>\n }\n drawerTitle={copy.score_history}\n isOpen={isOpen}\n loadConnectAccountsCard={false}\n onClose={onClose}\n stickyComponent={\n <Stack\n sx={{\n backgroundColor: 'background.paper',\n pb: 11,\n pt: 8,\n px: 24,\n }}\n >\n <Stack sx={{ alignItems: 'center', flexDirection: 'row', gap: 16 }}>\n <FinancialStrengthGraph\n arcRadius={24}\n healthScore={healthScore?.health_score}\n margin={{ top: 9 }}\n size=\"SM\"\n />\n\n <Stack sx={{ gap: 4 }}>\n <P variant=\"h3\">{healthScoreStatus.status}</P>\n <P variant=\"caption\">{healthScoreStatus.description}</P>\n </Stack>\n </Stack>\n </Stack>\n }\n >\n <Stack sx={{ gap: 16 }}>\n {sortedHealthScoreChangeReports.map((report, index) => (\n <ScoreHistoryTimeline key={index} report={report} />\n ))}\n </Stack>\n </KeyIndicatorsDrawer>\n )\n}\n\nexport default observer(ScoreHistoryDrawer)\n","import Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { P, Text } from '@mxenabled/mxui'\n\nimport { type FinstrongCopy } from '../../core'\n\ninterface HealthChartProps {\n copy: FinstrongCopy\n}\n\nconst HealthChart = ({ copy }: HealthChartProps) => {\n const theme = useTheme()\n\n const gradientColors = [\n theme.palette.chartMono.chartMono5,\n theme.palette.chartMono.chartMono4,\n theme.palette.chartMono.chartMono3,\n theme.palette.chartMono.chartMono2,\n ]\n return (\n <Stack sx={{ gap: 8 }}>\n <Stack sx={{ flexDirection: 'row', gap: 8, px: 2 }}>\n {[\n { color: 'chartMono.chartMono2', text: copy.vulnerable, value: '0-25' },\n { color: 'chartMono.chartMono3', text: copy.building, value: '26-50' },\n { color: 'chartMono.chartMono4', text: copy.stable, value: '51-75' },\n { color: 'chartMono.chartMono5', text: copy.strong, value: '76-100' },\n ].map(({ color, text, value }) => (\n <Stack key={text} sx={{ gap: 4, textAlign: 'center', width: '100%' }}>\n <Box>\n <P sx={{ fontWeight: 700, textTransform: 'uppercase' }} variant=\"caption\">\n {text}\n </P>\n <Text sx={{ color: 'text.secondary' }} variant=\"caption\">\n ({value})\n </Text>\n </Box>\n <Box sx={{ border: '2px solid', borderColor: color, borderRadius: '3px' }} />\n </Stack>\n ))}\n </Stack>\n <Box>\n <Box\n sx={{\n background: `linear-gradient(to left, ${gradientColors.join(', ')})`,\n borderRadius: '4px',\n height: 16,\n }}\n />\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n {[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100].map((value) => (\n <Stack\n key={value}\n sx={{ alignItems: 'center', height: 20, justifyContent: 'space-between', width: 24 }}\n >\n <Box\n sx={{\n borderBottom: '1px solid',\n borderColor: 'divider',\n position: 'relative',\n rotate: '90deg',\n top: 3.5,\n width: 8,\n }}\n />\n <Text sx={{ color: 'text.secondary' }} variant=\"tiny\">\n {value}\n </Text>\n </Stack>\n ))}\n </Stack>\n </Box>\n </Stack>\n )\n}\n\nexport default HealthChart\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { H3, P, Text } from '@mxenabled/mxui'\n\nimport { Drawer, Loader, useGlobalCopyStore, useGlobalUiStore } from '../../common'\n\nimport HealthChart from './HealthChart'\n\ninterface ScoreRubricDrawerProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst ScoreRubricDrawer = ({ isOpen, onClose }: ScoreRubricDrawerProps) => {\n const { finstrong: copy } = useGlobalCopyStore()\n const { isCopyLoaded } = useGlobalUiStore()\n\n if (!isCopyLoaded) return <Loader />\n\n return (\n <Drawer isOpen={isOpen} onClose={onClose} title={copy.score_rubric}>\n <Stack sx={{ bgcolor: 'background.default', gap: 36, height: '100%', p: 24 }}>\n <Stack sx={{ gap: 20 }}>\n <Stack sx={{ gap: 8 }}>\n <H3>{copy.your_path_to_financial_freedom}</H3>\n <P variant=\"subtitle1\">{copy.finstrong_freedom_description}</P>\n </Stack>\n <Box>\n <HealthChart copy={copy} />\n </Box>\n </Stack>\n <Stack sx={{ gap: 12 }}>\n <Text sx={{ fontWeight: 600 }} variant=\"body1\">\n {copy.how_do_we_do_this}\n </Text>\n <List\n component=\"ol\"\n sx={{\n listStyleType: 'decimal',\n pl: 20,\n pr: 16,\n '& li': {\n '::marker': {\n fontWeight: 600,\n },\n },\n '& .MuiListItemText-secondary': {\n fontSize: 15,\n lineHeight: '24px',\n pt: 4,\n },\n }}\n >\n <ListItem sx={{ display: 'list-item' }}>\n <ListItemText\n primary={copy.understand_your_habits}\n secondary={copy.understand_your_habits_description}\n />\n </ListItem>\n <ListItem sx={{ display: 'list-item', pt: 16 }}>\n <ListItemText\n primary={copy.see_whats_possible}\n secondary={copy.see_whats_possible_description}\n />\n </ListItem>\n </List>\n </Stack>\n <Stack sx={{ gap: 4 }}>\n <Text sx={{ fontWeight: 600, pb: 4 }} variant=\"body1\">\n {copy.we_ask_questions}\n </Text>\n <List\n component=\"ol\"\n sx={{\n listStyleType: 'initial',\n pl: 20,\n pr: 16,\n '& li': {\n minHeight: 'max-content',\n '::marker': {\n color: 'text.secondary',\n fontWeight: 600,\n },\n },\n '& .MuiListItemText-secondary': {\n fontSize: 15,\n lineHeight: '24px',\n },\n }}\n >\n <ListItem sx={{ display: 'list-item' }}>\n <ListItemText secondary={copy.we_ask_questions_description_1} />\n </ListItem>\n <ListItem sx={{ display: 'list-item' }}>\n <ListItemText secondary={copy.we_ask_questions_description_2} />\n </ListItem>\n </List>\n </Stack>\n </Stack>\n </Drawer>\n )\n}\n\nexport default observer(ScoreRubricDrawer)\n","import React from 'react'\nimport Accordion from '@mui/material/Accordion'\nimport AccordionDetails from '@mui/material/AccordionDetails'\nimport AccordionSummary from '@mui/material/AccordionSummary'\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { H3, P, Text } from '@mxenabled/mxui'\nimport { ExpandMore, ChevronRight } from '@mxenabled/mx-icons'\n\nimport { observer } from 'mobx-react-lite'\n\nimport { Loader, useFinstrongStore, useGlobalCopyStore, useGlobalUiStore } from '../common'\nimport { useDimensions } from '../common/hooks/useDimensions'\n\nimport { ConnectMoreAccountsCard } from './components/ConnectMoreAccountsCard'\nimport { FinancialStrengthGraph } from './components/FinancialStrengthGraph'\nimport { calculateFinstrongScoreStatus } from './util/finstrongUtils'\nimport ScoreRubricDrawer from './components/ScoreRubricDrawer'\n\nexport const FinancialStrengthCard = observer(() => {\n const [isScoreRubricDrawerOpen, setIsScoreRubricDrawerOpen] = React.useState(false)\n const theme = useTheme()\n const [containerRef, { width }] = useDimensions()\n const { finstrong: copy } = useGlobalCopyStore()\n const { isCopyLoaded, isInitialized } = useGlobalUiStore()\n\n const { healthScore, healthScoreChange } = useFinstrongStore()\n const isDarkMode = theme.palette.mode === 'dark'\n\n const healthScoreStatus = calculateFinstrongScoreStatus(healthScore?.health_score, copy)\n if (!isCopyLoaded || !isInitialized) return <Loader />\n return (\n <Card ref={containerRef} sx={{ p: 16, display: 'flex', flexDirection: 'column', gap: 8 }}>\n <Stack direction=\"row\" sx={{ alignItems: 'center', justifyContent: 'space-between' }}>\n <H3>{copy.financial_strength_header}</H3>\n\n <Button\n endIcon={<ChevronRight />}\n onClick={() => setIsScoreRubricDrawerOpen(true)}\n size=\"small\"\n sx={{\n '&.MuiButtonBase-root': {\n px: 8,\n py: 4,\n },\n }}\n variant=\"text\"\n >\n <Text\n bold={true}\n sx={{\n overflow: 'visible',\n }}\n variant=\"body2\"\n >\n {copy.financial_strength_header_action}\n </Text>\n </Button>\n </Stack>\n <Stack sx={{ justifyContent: 'center', alignItems: 'center', pb: 4, pt: 20, px: 16 }}>\n <FinancialStrengthGraph\n arcRadius={width <= 323 ? 72.5 : 154}\n footerCenterContent={healthScoreChange}\n healthScore={healthScore?.health_score || 0}\n size={width <= 323 ? 'M' : 'L'}\n />\n </Stack>\n {!healthScore?.health_score ? (\n <ConnectMoreAccountsCard\n buttonText={copy.connect_more_accounts_title}\n description={copy.health_score_zero_description}\n drawerType=\"connectDrawer\"\n hasIcon={false}\n isDashboard={true}\n sx={{\n backgroundColor: isDarkMode ? 'grey.800' : 'grey.50', //TODO: Need to change the background color to palette (supporting both darkmode and lightmode)\n '.connect-more-accounts-title': {\n fontWeight: 600,\n lineHeight: '20px',\n color: 'text.primary',\n },\n '.connect-more-accounts-description': { color: 'text.primary' },\n }}\n title={copy.health_score_zero_title}\n />\n ) : (\n <Accordion\n sx={{\n px: 16,\n backgroundColor: isDarkMode ? 'grey.800' : 'grey.50', //TODO: Need to change the background color to palette (supporting both darkmode and lightmode)\n '&.Mui-expanded': {\n m: 0,\n },\n '&::before': {\n display: 'none',\n },\n }}\n >\n <AccordionSummary\n expandIcon={<ExpandMore size={20} />}\n sx={{\n '&.MuiAccordionSummary-root': {\n minHeight: 0,\n },\n height: 44,\n p: 0,\n '&.Mui-expanded': {\n minHeight: 0,\n },\n }}\n >\n <P sx={{ fontWeight: 600 }} variant=\"body1\">\n {copy.accordion_title_text}\n </P>\n </AccordionSummary>\n <AccordionDetails sx={{ '&.MuiAccordionDetails-root': { padding: 0, pb: 16 } }}>\n <P variant=\"subtitle1\">{healthScoreStatus.scoreContent}</P>\n </AccordionDetails>\n </Accordion>\n )}\n <ScoreRubricDrawer\n isOpen={isScoreRubricDrawerOpen}\n onClose={() => setIsScoreRubricDrawerOpen(false)}\n />\n </Card>\n )\n})\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\nimport { H3, Text } from '@mxenabled/mxui'\n\nimport {\n ConnectDrawer,\n Loader,\n useAccountStore,\n useBudgetsStore,\n useCategoryStore,\n useFinstrongStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n useRecurringTransactionsStore,\n useScreenSize,\n useUserStore,\n useWidgetLoadTimer,\n WidgetContainer,\n} from '../common'\nimport { type WidgetProps } from '../core'\nimport { LineChart } from '../common/components/charts/LineChart'\n\nimport { ConnectMoreAccountsCard } from './components/ConnectMoreAccountsCard'\nimport KeyIndicatorsTabsWidget from './components/KeyIndicatorsTabsWidget'\nimport MissingData from './components/MissingData'\nimport Onboarding from './components/onboarding/Onboarding'\nimport ProfileDrawer from './components/ProfileDrawer'\nimport ScoreHistoryDrawer from './components/ScoreHistoryDrawer'\nimport { FinancialStrengthCard } from './FinancialStrengthCard'\n\nconst FinstrongWidget = ({ onBackClick, onMenuClick, sx, onPrimaryCtaClick }: WidgetProps) => {\n const { visibleAccounts: accounts } = useAccountStore()\n const { dateRange, isDataLoaded, loadBudgetData, setTheme } = useBudgetsStore()\n const { reloadCategoryTotals } = useCategoryStore()\n const finstrongStore = useFinstrongStore()\n const {\n augmentedChartData,\n calculateHealthScore,\n loadAugmentedChartData,\n loadMonthlySummaries,\n loadPeerScore,\n peerScore,\n healthScore,\n } = finstrongStore\n const { finstrong: finstrongCopy, connect: connectCopy } = useGlobalCopyStore()\n const { isInitialized } = useGlobalUiStore()\n const { loadRepeatingTransactionData, isDataLoaded: isRepeatingDataLoaded } =\n useRecurringTransactionsStore()\n const { isSmallMobile } = useScreenSize()\n const theme = useTheme()\n const { userProfile } = useUserStore()\n\n const [isFinstrongLoaded, setIsFinstrongLoaded] = React.useState(false)\n const [isScoreChangeLoading, setIsScoreChangeLoading] = React.useState(false)\n const [isProfileOpen, setIsProfileOpen] = React.useState(false)\n const [isScoreHistoryOpen, setIsScoreHistoryOpen] = React.useState(false)\n const [showConnectWidget, setShowConnectWidget] = React.useState(false)\n\n useWidgetLoadTimer({\n widgetName: 'FinstrongWidget',\n isLoaded: isFinstrongLoaded,\n })\n\n React.useEffect(() => {\n setTheme(theme)\n }, [])\n\n React.useEffect(() => {\n if (onPrimaryCtaClick) {\n finstrongStore.handleFinstrongWidgetPrimaryCtaClick = onPrimaryCtaClick\n }\n }, [onPrimaryCtaClick, finstrongStore])\n\n React.useEffect(() => {\n if (isInitialized) {\n loadMonthlySummaries().finally()\n loadPeerScore().finally()\n calculateHealthScore().finally()\n }\n }, [isInitialized])\n\n React.useEffect(() => {\n if (!isInitialized) return\n\n reloadCategoryTotals(accounts, dateRange.start, dateRange.end).finally(() => {\n setIsFinstrongLoaded(true)\n })\n if (!isDataLoaded) {\n loadBudgetData()\n loadRepeatingTransactionData().finally()\n }\n }, [dateRange, isDataLoaded, isInitialized, accounts])\n\n React.useEffect(() => {\n if (healthScore?.health_score) {\n loadAugmentedChartData().finally()\n }\n }, [healthScore.health_score])\n\n const handleProfileClick = () => setIsProfileOpen(true)\n const average = Math.round(peerScore?.average_health_score?.average_health_score || 0)\n const hasValidData = augmentedChartData.some((item) => item.y !== 0)\n\n const handleCloseProfileDrawer = () => {\n setIsScoreChangeLoading(true)\n calculateHealthScore(false).finally(() => {\n setIsScoreChangeLoading(false)\n })\n setIsProfileOpen(false)\n }\n\n if (!isInitialized || !isFinstrongLoaded || !isRepeatingDataLoaded || isScoreChangeLoading)\n return <Loader />\n\n return (\n <WidgetContainer\n actions={[\n {\n iconName: 'person',\n label: finstrongCopy.profile,\n onClick: handleProfileClick,\n },\n ]}\n hasDivider={true}\n onBackClick={onBackClick}\n onMenuClick={onMenuClick}\n showAccountFilter={false}\n sx={sx}\n title={finstrongCopy.title}\n >\n {userProfile.has_completed_finstrong_onboarding ? (\n <Stack\n sx={{\n bgcolor: 'background.default',\n flexDirection: { md: 'row' },\n gap: 24,\n justifyContent: 'center',\n pt: isSmallMobile ? 16 : 24,\n px: isSmallMobile ? 16 : 48,\n }}\n >\n <Stack sx={{ gap: 24, width: { md: 432 }, height: '100%' }}>\n <FinancialStrengthCard />\n <ConnectMoreAccountsCard\n description={finstrongCopy.connect_more_accounts_description}\n drawerType=\"connectDrawer\"\n title={finstrongCopy.connect_more_accounts_title}\n />\n </Stack>\n <Stack sx={{ maxWidth: 848, width: { md: 720 } }}>\n <Card sx={{ height: '100%', p: 16 }}>\n <Stack\n direction=\"row\"\n sx={{ alignItems: 'center', gap: 12, justifyContent: 'space-between' }}\n >\n <H3>{finstrongCopy.key_indicators}</H3>\n\n <Button\n endIcon={<ChevronRight />}\n onClick={() => setIsScoreHistoryOpen(true)}\n size=\"small\"\n sx={{\n '&.MuiButtonBase-root': {\n px: 8,\n py: 4,\n },\n }}\n variant=\"text\"\n >\n <Text bold={true} variant=\"body2\">\n {finstrongCopy.whats_changed}\n </Text>\n </Button>\n </Stack>\n {hasValidData ? (\n <LineChart\n axisColor={theme.palette.divider}\n baseline=\"min\"\n colors={[theme.palette.primary.main]}\n curveType=\"natural\"\n customLegendBoxSx={{ borderRadius: '2px' }}\n customLegendSx={{ left: 0 }}\n customLegendVariant=\"caption\"\n datasets={[augmentedChartData]}\n height={300}\n isCurrency={false}\n isGraphClippingXAxis={true}\n labelBackgroundColor={theme.palette.neutral.dark}\n labelFontColor={theme.palette.common.white}\n labelFontSize={\n typeof theme.typography.caption?.fontSize === 'string'\n ? parseFloat(theme.typography.caption.fontSize)\n : theme.typography.caption?.fontSize\n }\n labels={[finstrongCopy.key_indicators_label]}\n margin={{ right: 12, left: -37 }}\n peerAverage={average}\n showArea={true}\n showAverage={true}\n showLegend={true}\n showMarkLabel={true}\n showTooltip={true}\n showXAxis={true}\n title={finstrongCopy.peer_average}\n />\n ) : (\n <MissingData onClick={() => setShowConnectWidget(true)} />\n )}\n <KeyIndicatorsTabsWidget />\n </Card>\n </Stack>\n </Stack>\n ) : (\n <Onboarding />\n )}\n\n <ProfileDrawer isOpen={isProfileOpen} onClose={handleCloseProfileDrawer} />\n <ConnectDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectWidget={showConnectWidget}\n title={connectCopy.mini_title}\n />\n <ScoreHistoryDrawer\n isOpen={isScoreHistoryOpen}\n onClose={() => setIsScoreHistoryOpen(false)}\n />\n </WidgetContainer>\n )\n}\n\nexport default observer(FinstrongWidget)\n"],"names":["FinstrongThresholds","CardStatus","Action","ProfileList","list","onClickItem","jsx","Box","List","item","i","jsxs","React","ListItem","ChevronRight","ListItemButton","ListItemAvatar","Avatar","ListItemText","Text","Divider","radiansToDegrees","radians","calculateFinstrongScoreStatus","healthScore","copy","range","CreditScoreLightColors","CreditScoreDarkColors","getCreditScoreDetails","isDarkMode","getOutterArcStartEndAngle","healthScoreData","totalAngularSpan","arcStartAngle","dataIndex","total","sum","cumulativeAngle","arcs","anglePortion","sliceStart","sliceEnd","getFilledArcStartEndAngle","outterArcStartAngle","outterArcEndAngle","unitsPerSegment","progressEndAngle","filledArcStartAngle","filledArcEndAngle","wholeSegments","partialSegment","getMarkerXYCoordinates","markerRadius","angleOffset","markerX","markerY","buildProfileItem","dynamicCopy","fallbackLabel","icon","key","label","value","isComplete","secondaryText","getFormattedValue","buildDynamicCopy","Check","v","format","formatCurrency","getPercentFromRatio","ratio","getMonthName","month","date","formatDate","DATE_FORMATS_INTL","getDaysOfCashOnHandState","days","good","poor","getEmergencySavingsState","dollars","getSpendToIncomeRatioState","getManageDebtRatioState","getCreditScoreState","score","getSpendingFeeCountState","count","getSpendingFeeCountStatus","spendCopy","state","cardStatusMapping","getCardStateStyles","cardState","DEFAULT_CONTRIBUTION_PERIOD_INDEX","DEFAULT_TARGET_AMOUNT","getFutureDate","addMonths","addYears","addDays","getNumberOfPayments","differenceInMonths","end","start","differenceInWeeks","differenceInDays","SAVINGS_BUCKETS","calculateContribution","contribution","goalAmount","goalPeriod","targetPeriod","totalSaved","amountRemaining","today","startOfToday","futureDateFn","paymentFn","futureDate","payments","calculatePercentage","amount","getInitialTargetPeriodAmount","bucket","getInitialContributionPeriod","getSeriesGraphData","monthlySummaries","valueKey","a","b","summary","CustomPieArc","dialScoreData","arcColor","centerX","centerY","arcRadius","innerArcRadius","outterArcRadius","isFinacialStrengthGraph","theme","useTheme","gradientSteps","outerArcGenerator","d3","fillArcGenerator","Fragment","eachStep","index","DialScoreCard","size","minValue","maxValue","margin","markerColor","healthScoreStatus","footerCenterContent","footerLeftContent","footerRightContent","arcEndAngle","anglePerUnit","progressEndAngleOffset","thicknessRatio","chartDimenesions","sizeMap","chartMargin","PercentageIcon","ArrowRightAlt","TrendingDown","stroke","padding","svgSize","Stack","PieChart","props","P","TrendingUp","FinancialStrengthGraph","observer","useGlobalCopyStore","CreditScoreGraph","creditScoreData","isCopyLoaded","useGlobalUiStore","Loader","creditScoreStatus","ConnectMoreAccountsCard","drawerType","isDashboard","hasIcon","buttonText","title","titleDrawer","description","sx","showConnectWidget","setShowConnectWidget","connectCopy","config","useAppConfig","Card","AccountBalance","H3","Button","ConnectDrawer","ConnectionsDrawer","KeyIndicatorsTabItemType","CALCULATING_ANIMATION_URL","ManageCreditScore","isOpen","onClose","commonCopy","finstrongCopy","isMobile","useScreenSize","updateUser","user","useUserStore","creditScore","setCreditScore","isValid","handleClose","handlePrimaryAction","Dialog","e","TextField","ManageCreditScore$1","LineGraph","chartFor","useFinstrongStore","containerRef","width","useDimensions","ZeroStateContent","dataSet","values","s","getFormatterConfig","formatter","leftMargin","isCreditOverTime","color","hasData","LineChart","EmptyState","LineGraph$1","CreditScoreContent","healthScoreChangeReports","availableWidth","useWidgetContainerProvider","isSmallMobile","setIsOpen","lastReport","CreditScoreContent$1","StatusChip","status","chipStyles","statusCopy","Chip","CreditScoreHeader","CreditScoreHeader$1","KeyIndicatorsDrawer","additionalContent","connectTitle","connectDescription","children","drawerTitle","loadConnectAccountsCard","stickyComponent","isScrolled","setIsScrolled","useState","scrollContainerRef","useRef","handleScroll","useCallback","hasScrolled","prev","contentCallbackRef","node","parent","overflow","overflowY","useEffect","Drawer","KeyIndicatorsDrawer$1","AccountsListCompact","onClick","shouldShowBalance","loadAccounts","accountsData","selectedAccounts","handleAccountClick","account","uniqueAccountTypes","accountType","accountsForType","totalBalanceForType","acc","ListSubheader","accountBalance","getAccountBalanceDetails","displayName","getAccountDisplayName","listItemContent","InstitutionLogo","AccountsListCompact$1","Accounts","loadMoreLabel","isConnectAccountsOpen","setIsConnectAccountsOpen","accounts","displayedAccounts","getAccountBalance","Accounts$1","TotalCard","balance","OnboardingSteps","DurationUnit","ContributeFrequency","EstimatedContributionCalculator","frequencies","frequencyPeriodLabels","series","initialGoalAmount","calculatedContribution","setCalculatedContribution","calculatedContributionPerPeriod","setCalculatedContributionPerPeriod","setContribution","setGoalAmount","setGoalPeriod","setTargetPeriod","handleCalculate","Select","EstimatedContributionCalculator$1","MaintainingEmergencySavingsContent","savingsAccounts","useAccountStore","isConnectDrawerOpen","setIsConnectDrawerOpen","AccountType","MaintainingEmergencySavingsContent$1","ProgressBar","bottomComponent","statusBarData","cardStateStyles","statusBarColorData","H2","StatusBar","savingsRange","MaintainingEmergencySavingsSticky","emergencySavings","percentage","MaintainingEmergencySavingsSticky$1","Transactions","transactions","amountColor","amountPosition","fromUnixToDayOfWeekAndDate","secondaryIcon","categoryCopy","getCategoryName","useCategoryStore","maxVisible","hasMoreTransactions","remainingCount","updatedTransactions","eachTransaction","MerchantLogo","TransactionList","PayBillsOnTimeDrawerComponent","isLoading","setIsLoading","getSpendingFeeTransactions","allTransactions","CheckCircle","txnDate","Cancel","PayBillsOnTimeDrawerComponent$1","PayBillsOnTimeStickyComponent","copyContent","PayBillsOnTimeStickyComponent$1","AvailableTabContent","savingsAndCheckingAccountsBalance","AvailableTabContent$1","SpendingTabContent","isSpendingInitialized","loadSpendTransactions","loadDebtSpend","spendTransactions","debtSpendTransactions","SpendingTabContent$1","SaveEnoughToLiveOnDrawerContent","tabValue","setTabValue","Tabs","_","val","Tab","TabContentContainer","SaveEnoughToLiveOnDrawerContent$1","SaveEnoughToLiveOnProgressBar","noOfMonths","cardStatus","avgDaysPerMonth","months","SaveEnoughToLiveOnProgressBar$1","HaveManageableDebtProgressBar","debtPercentage","HaveManageableDebtProgressBar$1","IncomeTabContent","IncomeTabContent$1","DebtPaymentTabContent","DebtPaymentTabContent$1","CustomDoubleBarPlot","data","style","restProps","rectRef","textRef","barWidth","setBarWidth","resizeObserver","xValue","textElement","formattedComparison","formattedMain","formattedAmount","rectStyle","textTransform","formatCurrencyCompact","threshold","DoubleBarChart","buttonLabel","legendLabelMain","legendLabelComparison","totalComparison","totalMain","useMediaQuery","chartData","monthName","chartConfig","xAxis","yAxisMax","tickStep","yAxis","ResponsiveChartContainer","BarPlot","ownerState","defaultProps","ChartsXAxis","ChartsYAxis","HaveManagebleDebtComponent","isIncomeInitialized","loadIncome","hasBarChartData","eachItem","HaveManageableDebtComponent","SpendLessThanYouMakeProgressBar","spend","spendPercentage","isHealthScoreEmpty","SpendLessThanYouMakeProgressBar$1","SpendLessThanYouMakeComponent","categories","dateRangeCategoryTotals","loadDateRangeCategoryTotals","handleFinstrongWidgetPrimaryCtaClick","appDataStore","useGlobalStore","goalsCopy","spendingCopy","selectedId","setSelectedId","startOfMonth","endOfMonth","spendingData","getSpendingData","handleSelected","id","totalSpending","totalIncome","totals","standard_spend","income","SpendingDonut","SpendingLegend","SpendLessThanYouMakeComponent$1","KeyIndicatorsTabItemDrawer","drawerFor","content","KeyIndicatorsTabItemDrawer$1","KeyIndicatorsTabsItem","isDrawerOpen","setIsDrawerOpen","handleKeyDown","event","KeyIndicatorsSpendTab","getSpendToIncomeRatioStatus","spendToIncomeRatio","spendFeeCount","healthScoreRatio","KeyIndicatorsSpendTab$1","KeyIndicatorsSaveTab","saveCopy","getDaysOfCashOnHandStatus","getEmergencySavingsStatus","daysOfCashOnHand","noOfDays","noOfDollars","KeyIndicatorsSaveTab$1","KeyIndicatorsBorrowTab","borrowCopy","getManageDebtRatioStatus","getCreditScoreStatus","manageDebtStatus","convertedDebtToIncomeRatio","KeyIndicatorsBorrowTab$1","KeyIndicatorsTabsWidget","CreditCard","Savings","ContentCopy","KeyIndicatorsTabsWidget$1","MissingData","MultilineChart","MissingData$1","OnboardingAddMonthlyIncome","firstDay","frequency","secondDay","incomeTransactions","setCurrentStep","setFirstDay","setFrequency","setSecondDay","transaction","elements","txn","showDate","shouldShowDate","isInset","hasInsetBorder","SubheaderRow","TransactionRow","AddRecurringTransactionDetails","Add","OnboardingAddMonthlyIncome$1","OnboardingBirthday","selectedDate","setSelectedDate","handleChange","LocalizationProvider","AdapterDateFns","DatePicker","alpha","OnboardingBirthday$1","OnboardingCreditScore","OnboardingCreditScore$1","ProfileProgressBar","completeCopy","OnboardingStepsHeader","primaryText","INITIAL_STEP_STATE","OnboardingStepsDrawer","calculateHealthScore","addRepeatingTransaction","setDateRange","useRecurringTransactionsStore","filter","setFilter","useTransactionStore","userProfile","updateUserProfile","currentStep","Frequency","setIncomeTransactions","setIsComplete","transactionGuid","setTransactionGuid","subDays","incomeFilter","t","isPrimaryActionEnabled","hasAccounts","progressValue","step","handleSelectTransaction","searchValue","incomeFilterSearch","steps","newTransaction","SelectTransaction","guid","handleComplete","addRecurringIncome","handleDoItLater","nextStep","handleSecondaryAction","type","account_guid","feed_description","merchant_guid","payee","transaction_type","nextDate","getNextPaymentDate","fromUnixTime","repeatingTransaction","formatISO","RepeatingType","currentStepData","isConnectAccountsStep","primaryButtonProps","showDoItLaterButton","OnboardingStepsDrawer$1","Onboarding","Cardiology","ManageDOB","loadPeerScore","StaticDatePicker","ManageDOB$1","ProfileDrawer","accountsCopy","recurringCopy","repeatingTransactions","totalIncomeAmount","rt","repeating_transaction_type","recurrence_type","action","setAction","Payments","CalendarMonth","RecurringSettings","ProfileDrawer$1","ScoreHistoryTimelineItem","islast","TimelineItem","TimelineSeparator","TimelineDot","TimelineConnector","TimelineContent","ScoreHistoryTimeline","report","timelineCopy","newCreditScore","oldCreditScore","oldSpendToIncomeRatio","newSpendToIncomeRatio","oldHealthScore","newHealthScore","newScoreCalculatedAt","formattedDate","getBackgroundColor","getMainContent","getSubContent","copyKey","text","Icon","Timeline","timelineItemClasses","ScoreHistoryTimeline$1","ScoreHistoryDrawer","isInitialized","augmentedChartData","peerScore","sortedHealthScoreChangeReports","ScoreHistoryDrawer$1","HealthChart","gradientColors","ScoreRubricDrawer","ScoreRubricDrawer$1","FinancialStrengthCard","isScoreRubricDrawerOpen","setIsScoreRubricDrawerOpen","healthScoreChange","Accordion","AccordionSummary","ExpandMore","AccordionDetails","FinstrongWidget","onBackClick","onMenuClick","onPrimaryCtaClick","dateRange","isDataLoaded","loadBudgetData","setTheme","useBudgetsStore","reloadCategoryTotals","finstrongStore","loadAugmentedChartData","loadMonthlySummaries","loadRepeatingTransactionData","isRepeatingDataLoaded","isFinstrongLoaded","setIsFinstrongLoaded","isScoreChangeLoading","setIsScoreChangeLoading","isProfileOpen","setIsProfileOpen","isScoreHistoryOpen","setIsScoreHistoryOpen","useWidgetLoadTimer","handleProfileClick","average","hasValidData","handleCloseProfileDrawer","WidgetContainer","FinstrongWidget_default"],"mappings":"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"}
|