@mx-cartographer/experiences 9.1.0-alpha.bb1 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -0
- package/README.md +10 -10
- package/dist/Account-DR7Plrqy.mjs +119 -0
- package/dist/Account-DR7Plrqy.mjs.map +1 -0
- package/dist/AccountDetailsDrawer-CZPeLsCq.mjs +922 -0
- package/dist/AccountDetailsDrawer-CZPeLsCq.mjs.map +1 -0
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs +231 -0
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs.map +1 -0
- package/dist/AccountUtils-B8ZzWI-d.mjs +28 -0
- package/dist/AccountUtils-B8ZzWI-d.mjs.map +1 -0
- package/dist/Analytics-CkYXKvco.mjs +54 -0
- package/dist/Analytics-CkYXKvco.mjs.map +1 -0
- package/dist/Analytics-WeZYytR0.mjs +140 -0
- package/dist/Analytics-WeZYytR0.mjs.map +1 -0
- package/dist/ApiEndpoints-DXwIYNUV.mjs +50 -0
- package/dist/ApiEndpoints-DXwIYNUV.mjs.map +1 -0
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs +27 -0
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs.map +1 -0
- package/dist/BudgetUtil-Bg2AQJpQ.mjs +75 -0
- package/dist/BudgetUtil-Bg2AQJpQ.mjs.map +1 -0
- package/dist/Category-DEKZGLYe.mjs +302 -0
- package/dist/Category-DEKZGLYe.mjs.map +1 -0
- package/dist/CategorySelectorDrawer-NJsFsKP1.mjs +431 -0
- package/dist/CategorySelectorDrawer-NJsFsKP1.mjs.map +1 -0
- package/dist/Connect-BH0Pt6zc.mjs +43 -0
- package/dist/Connect-BH0Pt6zc.mjs.map +1 -0
- package/dist/ConnectCard-D7uxoH5Y.mjs +55 -0
- package/dist/ConnectCard-D7uxoH5Y.mjs.map +1 -0
- package/dist/ConnectDrawer-CW4LA3H3.mjs +58 -0
- package/dist/ConnectDrawer-CW4LA3H3.mjs.map +1 -0
- package/dist/ConnectionsDrawer-CZU9ku-k.mjs +54 -0
- package/dist/ConnectionsDrawer-CZU9ku-k.mjs.map +1 -0
- package/dist/CurrencyDialog-DumQCTPO.mjs +374 -0
- package/dist/CurrencyDialog-DumQCTPO.mjs.map +1 -0
- package/dist/CurrencyInput-DaGEQaLW.mjs +88 -0
- package/dist/CurrencyInput-DaGEQaLW.mjs.map +1 -0
- package/dist/CurrencyText-CCbE6MmF.mjs +21 -0
- package/dist/CurrencyText-CCbE6MmF.mjs.map +1 -0
- package/dist/DateFormats-HudZ3Bjs.mjs +65 -0
- package/dist/DateFormats-HudZ3Bjs.mjs.map +1 -0
- package/dist/DateUtil-CzBmbjmA.mjs +75 -0
- package/dist/DateUtil-CzBmbjmA.mjs.map +1 -0
- package/dist/DebtUtils-i4pI2Uoe.mjs +154 -0
- package/dist/DebtUtils-i4pI2Uoe.mjs.map +1 -0
- package/dist/Dialog-Bvd2n8hz.mjs +67 -0
- package/dist/Dialog-Bvd2n8hz.mjs.map +1 -0
- package/dist/Donut-SzzfZDHF.mjs +89 -0
- package/dist/Donut-SzzfZDHF.mjs.map +1 -0
- package/dist/Drawer-DsnW2o0v.mjs +175 -0
- package/dist/Drawer-DsnW2o0v.mjs.map +1 -0
- package/dist/EmbeddedCard-DH8vQ3qN.mjs +859 -0
- package/dist/EmbeddedCard-DH8vQ3qN.mjs.map +1 -0
- package/dist/EmptyState-CJUDc3kD.mjs +85 -0
- package/dist/EmptyState-CJUDc3kD.mjs.map +1 -0
- package/dist/Error-Dtw6yxkf.mjs +85 -0
- package/dist/Error-Dtw6yxkf.mjs.map +1 -0
- package/dist/ErrorBoundary-CsdOcnJ9.mjs +24 -0
- package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +1 -0
- package/dist/ExportCsvAction-C9KWH3Az.mjs +25 -0
- package/dist/ExportCsvAction-C9KWH3Az.mjs.map +1 -0
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs +230 -0
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs.map +1 -0
- package/dist/GlobalCopyApi-wcnDUzMV.mjs +129 -0
- package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +1 -0
- package/dist/GoalsUtil-C9EnLWvC.mjs +108 -0
- package/dist/GoalsUtil-C9EnLWvC.mjs.map +1 -0
- package/dist/HeaderCell-P8w6CmfO.mjs +7 -0
- package/dist/HeaderCell-P8w6CmfO.mjs.map +1 -0
- package/dist/Help-CkQTjORd.mjs +300 -0
- package/dist/Help-CkQTjORd.mjs.map +1 -0
- package/dist/Help-aERwhajy.mjs +3210 -0
- package/dist/Help-aERwhajy.mjs.map +1 -0
- package/dist/IconBacking-DgT8DCeh.mjs +40 -0
- package/dist/IconBacking-DgT8DCeh.mjs.map +1 -0
- package/dist/InformationTooltip-4su8bn1e.mjs +42 -0
- package/dist/InformationTooltip-4su8bn1e.mjs.map +1 -0
- package/dist/InvestmentUtil-BItV7uEs.mjs +135 -0
- package/dist/InvestmentUtil-BItV7uEs.mjs.map +1 -0
- package/dist/LineChart-CUfiH86G.mjs +613 -0
- package/dist/LineChart-CUfiH86G.mjs.map +1 -0
- package/dist/ListItemAction-BqUCLj_w.mjs +70 -0
- package/dist/ListItemAction-BqUCLj_w.mjs.map +1 -0
- package/dist/ListItemRow-kH1rn8Xu.mjs +68 -0
- package/dist/ListItemRow-kH1rn8Xu.mjs.map +1 -0
- package/dist/ListItemWrapper-DRse79Iu.mjs +44 -0
- package/dist/ListItemWrapper-DRse79Iu.mjs.map +1 -0
- package/dist/Loader-CxeBwuPG.mjs +22 -0
- package/dist/Loader-CxeBwuPG.mjs.map +1 -0
- package/dist/Localization-DnoVyBNK.mjs +39 -0
- package/dist/Localization-DnoVyBNK.mjs.map +1 -0
- package/dist/ManageIncome-Dcsnnz86.mjs +906 -0
- package/dist/ManageIncome-Dcsnnz86.mjs.map +1 -0
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs +46 -0
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs.map +1 -0
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs +67 -0
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs.map +1 -0
- package/dist/NetWorthUtils-DfSH3z70.mjs +96 -0
- package/dist/NetWorthUtils-DfSH3z70.mjs.map +1 -0
- package/dist/Notification-DTNYSd8P.mjs +8 -0
- package/dist/Notification-DTNYSd8P.mjs.map +1 -0
- package/dist/NotificationSettings-CW7okUrk.mjs +678 -0
- package/dist/NotificationSettings-CW7okUrk.mjs.map +1 -0
- package/dist/NotificationUtils-BRGFTePr.mjs +24 -0
- package/dist/NotificationUtils-BRGFTePr.mjs.map +1 -0
- package/dist/NumberFormatting--XMeeBfr.mjs +50 -0
- package/dist/NumberFormatting--XMeeBfr.mjs.map +1 -0
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs +115 -0
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs.map +1 -0
- package/dist/RecurringSettings-D8hBbXV_.mjs +89 -0
- package/dist/RecurringSettings-D8hBbXV_.mjs.map +1 -0
- package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs +299 -0
- package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs.map +1 -0
- package/dist/ResponsiveButton-CC9F_Ezk.mjs +46 -0
- package/dist/ResponsiveButton-CC9F_Ezk.mjs.map +1 -0
- package/dist/SearchBox-Cpgu_gdO.mjs +51 -0
- package/dist/SearchBox-Cpgu_gdO.mjs.map +1 -0
- package/dist/Select-CSpkK5cR.mjs +62 -0
- package/dist/Select-CSpkK5cR.mjs.map +1 -0
- package/dist/SelectionBox-B4xELRgp.mjs +49 -0
- package/dist/SelectionBox-B4xELRgp.mjs.map +1 -0
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs +70 -0
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs.map +1 -0
- package/dist/Sizes-DISGrlUg.mjs +7 -0
- package/dist/Sizes-DISGrlUg.mjs.map +1 -0
- package/dist/SkeletonLoader-BaNboJjD.mjs +39 -0
- package/dist/SkeletonLoader-BaNboJjD.mjs.map +1 -0
- package/dist/SpendingData-Fii_xATx.mjs +54 -0
- package/dist/SpendingData-Fii_xATx.mjs.map +1 -0
- package/dist/SpendingLegend-CxvNOg3c.mjs +204 -0
- package/dist/SpendingLegend-CxvNOg3c.mjs.map +1 -0
- package/dist/StatusBar-CPfSXe80.mjs +31 -0
- package/dist/StatusBar-CPfSXe80.mjs.map +1 -0
- package/dist/TabContentContainer-B0eYJP5p.mjs +49 -0
- package/dist/TabContentContainer-B0eYJP5p.mjs.map +1 -0
- package/dist/ToggleListItem-Dl1lXNwj.mjs +92 -0
- package/dist/ToggleListItem-Dl1lXNwj.mjs.map +1 -0
- package/dist/TransactionDetails-roZ5xLq8.mjs +1708 -0
- package/dist/TransactionDetails-roZ5xLq8.mjs.map +1 -0
- package/dist/TransactionUtils-BphBJBbU.mjs +235 -0
- package/dist/TransactionUtils-BphBJBbU.mjs.map +1 -0
- package/dist/TrendsUtil-D9z3kIj_.mjs +70 -0
- package/dist/TrendsUtil-D9z3kIj_.mjs.map +1 -0
- package/dist/UserStore-C1fdL3Iu.mjs +3054 -0
- package/dist/UserStore-C1fdL3Iu.mjs.map +1 -0
- package/dist/ViewMoreMicroCard-fnwE0hqd.mjs +1280 -0
- package/dist/ViewMoreMicroCard-fnwE0hqd.mjs.map +1 -0
- package/dist/WidgetContainer-DJnp6t6c.mjs +483 -0
- package/dist/WidgetContainer-DJnp6t6c.mjs.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.d.ts +6 -0
- package/dist/accounts/index.d.ts +1 -0
- package/dist/accounts/index.es.js +784 -12
- package/dist/accounts/index.es.js.map +1 -0
- package/dist/analytics/index.es.js +140 -155
- package/dist/analytics/index.es.js.map +1 -0
- package/dist/budgets/index.es.js +1267 -1317
- package/dist/budgets/index.es.js.map +1 -0
- package/dist/cashflow/index.es.js +943 -1047
- package/dist/cashflow/index.es.js.map +1 -0
- package/dist/categories/index.es.js +5 -4
- package/dist/categories/index.es.js.map +1 -0
- package/dist/common/components/DataRow.d.ts +1 -0
- package/dist/common/components/ListItemWrapper.d.ts +2 -1
- package/dist/common/constants/Analytics.d.ts +3 -0
- package/dist/common/index.es.js +310 -101
- package/dist/common/index.es.js.map +1 -0
- package/dist/core/index.es.js +105 -80
- package/dist/core/index.es.js.map +1 -0
- package/dist/core/stores/RecurringTransactionsStore.d.ts +29 -1
- package/dist/core/stores/TransactionStore.d.ts +1 -0
- package/dist/core/types/localization/RecurringCopy.d.ts +14 -1
- package/dist/core/types/localization/SpendingCopy.d.ts +1 -0
- package/dist/core/utils/DateUtil.d.ts +2 -0
- package/dist/core/utils/RecurringTransactionsUtil.d.ts +2 -1
- package/dist/dashboard/index.es.js +142 -185
- package/dist/dashboard/index.es.js.map +1 -0
- package/dist/debts/index.es.js +1273 -1384
- package/dist/debts/index.es.js.map +1 -0
- package/dist/finstrong/index.es.js +3473 -3367
- package/dist/finstrong/index.es.js.map +1 -0
- package/dist/goals/index.es.js +984 -1103
- package/dist/goals/index.es.js.map +1 -0
- package/dist/help/index.es.js +26 -3
- package/dist/help/index.es.js.map +1 -0
- package/dist/hooks-97sNJ_lf.mjs +78 -0
- package/dist/hooks-97sNJ_lf.mjs.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/BubbleWeek.d.ts +4 -1
- package/dist/insights/components/insights/WeeklyNoSpendDays/WeeklyNoSpendDays.d.ts +4 -2
- package/dist/insights/index.es.js +4871 -93
- package/dist/insights/index.es.js.map +1 -0
- package/dist/investments/index.es.js +1523 -1533
- package/dist/investments/index.es.js.map +1 -0
- package/dist/merchants/index.es.js +65 -75
- package/dist/merchants/index.es.js.map +1 -0
- package/dist/microinsights/index.es.js +826 -15
- package/dist/microinsights/index.es.js.map +1 -0
- package/dist/networth/index.es.js +504 -550
- package/dist/networth/index.es.js.map +1 -0
- package/dist/notifications/index.es.js +162 -169
- package/dist/notifications/index.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringTransactionDetails.d.ts +3 -2
- package/dist/recurringtransactions/components/RecurringTransactionDetailsDrawer.d.ts +3 -0
- package/dist/recurringtransactions/components/RecurringTransactionList.d.ts +11 -0
- package/dist/recurringtransactions/components/UpcomingRecurrenceCard.d.ts +8 -0
- package/dist/recurringtransactions/components/actions/LinkTransactionDrawer.d.ts +10 -0
- package/dist/recurringtransactions/components/actions/MarkAsPaidDialog.d.ts +7 -0
- package/dist/recurringtransactions/components/actions/MarkAsUnpaidDialog.d.ts +7 -0
- package/dist/recurringtransactions/index.es.js +1012 -10
- package/dist/recurringtransactions/index.es.js.map +1 -0
- package/dist/settings/index.es.js +892 -13
- package/dist/settings/index.es.js.map +1 -0
- package/dist/spending/index.es.js +457 -400
- package/dist/spending/index.es.js.map +1 -0
- package/dist/transactions/components/shared/transactionlist/TransactionRow.d.ts +1 -0
- package/dist/transactions/index.es.js +604 -10
- package/dist/transactions/index.es.js.map +1 -0
- package/dist/trends/index.es.js +1408 -1268
- package/dist/trends/index.es.js.map +1 -0
- package/dist/useAccountDisplayName-BsiXA0qf.mjs +24 -0
- package/dist/useAccountDisplayName-BsiXA0qf.mjs.map +1 -0
- package/dist/useAriaLive-MkYebyUR.mjs +36 -0
- package/dist/useAriaLive-MkYebyUR.mjs.map +1 -0
- package/dist/useDimensions-CeDR9V8N.mjs +37 -0
- package/dist/useDimensions-CeDR9V8N.mjs.map +1 -0
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs +12 -0
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs.map +1 -0
- package/dist/useScreenSize-mWpmnh5w.mjs +37 -0
- package/dist/useScreenSize-mWpmnh5w.mjs.map +1 -0
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs +20 -0
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs.map +1 -0
- package/package.json +30 -30
- package/dist/Analytics-BKzTPees.mjs +0 -61
- package/dist/GlobalCopyApi-BeXzaDH9.mjs +0 -487
- package/dist/HeaderCell-EhCUSjvj.mjs +0 -10
- package/dist/Loader-BlVzRtUd.mjs +0 -73
- package/dist/MiniWidgetContainer-COwnjfy7.mjs +0 -110
- package/dist/OriginalBalanceAction-sbiqaxok.mjs +0 -110
- package/dist/SpendingLegend-D15ixlQ1.mjs +0 -222
- package/dist/accounts-DkyAiLpg.mjs +0 -15632
- package/dist/core-BexP5oiV.mjs +0 -4047
- package/dist/help-CctDYrAH.mjs +0 -2308
- package/dist/insights/components/insights/P2pCategorization/_tests_/P2pCategorizationMultipleTransaction.test.d.ts +0 -0
- package/dist/insights/components/insights/P2pCategorization/_tests_/P2pCategorizationSingleTransaction.test.d.ts +0 -0
- package/dist/microinsights-CRf3ChsJ.mjs +0 -1814
- package/dist/recurringtransactions-gbJ_NA8u.mjs +0 -1564
- package/dist/settings-ZMHe439l.mjs +0 -1526
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/cashflow/context/hooks.tsx","../../src/cashflow/components/RemainingCash.tsx","../../src/cashflow/components/CashflowWidgetContent.tsx","../../src/cashflow/CashflowMiniWidget.tsx","../../src/cashflow/components/DetailsFooter.tsx","../../src/cashflow/components/DetailsExpenseRow.tsx","../../src/cashflow/components/DetailsExpenseHeader.tsx","../../src/cashflow/util/Filters.ts","../../src/cashflow/components/DetailsTab.tsx","../../src/cashflow/components/SummaryTab.tsx","../../src/cashflow/components/CashflowContent.tsx","../../src/cashflow/components/CashflowAmountHeading.tsx","../../src/cashflow/components/CashflowHeading.tsx","../../src/cashflow/CashflowWidget.tsx","../../src/cashflow/components/onboarding/StepOne.tsx","../../src/cashflow/constants/CashflowImages.ts","../../src/cashflow/components/onboarding/StepTwo.tsx","../../src/cashflow/CashflowOnboarding.tsx"],"sourcesContent":["import React from 'react'\nimport { GlobalDataContext, useCashflowStore } from '../../common'\n\nexport const useCashflowUiStore = () => {\n const context = React.useContext(GlobalDataContext)\n\n if (!context) {\n throw new Error('useCashflowUiStore() must be used within the GlobalDataContext')\n }\n\n return useCashflowStore().uiStore\n}\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../common'\nimport { CurrencyText } from '../../common'\n\ninterface RemainingCashProps {\n remaining: number\n}\n\nconst RemainingCash = ({ remaining }: RemainingCashProps) => {\n const { cashflow: customCopy } = useGlobalCopyStore()\n\n const getRemainingCashColor = () => {\n if (remaining < 0) {\n return 'error.main'\n }\n if (remaining > 0) {\n return 'success.main'\n }\n return 'warning.main'\n }\n\n return (\n <>\n <Box\n sx={{\n borderRadius: '1px',\n backgroundColor: getRemainingCashColor(),\n height: 6,\n width: 6,\n }}\n />\n <Text bold={true} sx={{ flexGrow: 1, fontSize: 12 }}>\n {customCopy.remaining_cash}\n </Text>\n <CurrencyText amount={remaining} bold={true} sx={{ fontSize: 12 }} />\n </>\n )\n}\n\nexport default observer(RemainingCash)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Icon, P, Text } from '@mxenabled/mxui'\n\nimport {\n InformationTooltip,\n Loader,\n useAccountStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n useRecurringTransactionsStore,\n useScreenSize,\n useWidgetContainerProvider,\n} from '../../common'\nimport { useCashflowUiStore } from '../context/hooks'\nimport { CurrencyText } from '../../common'\nimport RemainingCash from './RemainingCash'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nconst CashflowWidgetContent = () => {\n const theme = useTheme()\n const { availableWidth } = useWidgetContainerProvider()\n const { isMobile } = useScreenSize()\n\n const { visibleCashAccounts: cashAccounts, visibleCashBalance: cashBalance } = useAccountStore()\n const { selectedAccountGuids } = useGlobalUiStore()\n const { cashflow: customCopy } = useGlobalCopyStore()\n const {\n daysUntilNextIncome,\n expensesTilNextIncome,\n selectedCashAccounts,\n setNextIncome,\n setSelectedCashAccounts,\n setUpcomingExpenses,\n } = useCashflowUiStore()\n const { isDataLoaded, nextIncomeRecurrence, upcomingExpenses } = useRecurringTransactionsStore()\n\n React.useEffect(() => {\n setSelectedCashAccounts(\n cashAccounts.filter((account) => selectedAccountGuids.includes(account.guid)),\n )\n }, [cashAccounts, selectedAccountGuids])\n\n React.useEffect(() => {\n if (nextIncomeRecurrence) {\n setNextIncome(nextIncomeRecurrence)\n }\n setUpcomingExpenses(upcomingExpenses)\n }, [nextIncomeRecurrence, upcomingExpenses])\n\n const filteredCashBalance = React.useMemo(\n () =>\n cashAccounts\n .filter((account) => selectedAccountGuids.includes(account.guid))\n .reduce((total, account) => total + (account?.balance || 0), 0),\n [selectedAccountGuids, upcomingExpenses],\n )\n\n const filteredExpenseTotal = React.useMemo(\n () =>\n expensesTilNextIncome\n .filter((expense) => selectedAccountGuids.includes(expense.accountGuid || ''))\n .reduce((acc, curr) => acc + curr.amount, 0),\n [selectedAccountGuids, expensesTilNextIncome],\n )\n\n const availableToSpend = React.useMemo(\n () => filteredCashBalance - filteredExpenseTotal,\n [filteredCashBalance, filteredExpenseTotal],\n )\n\n if (!isDataLoaded) {\n return <Loader height={isMobile ? 210 : 120} />\n }\n\n return (\n <Box className=\"mx-cashflow\" pl={16} pr={16} pt={16}>\n {availableWidth > 710 ? (\n <Stack\n border={`1px solid ${theme.palette.divider}`}\n borderRadius={1}\n direction=\"row\"\n justifyContent=\"space-between\"\n px={24}\n >\n <Stack pb={14} pt={12}>\n <CurrencyText amount={filteredCashBalance} variant=\"h2\" />\n <P variant=\"caption\" whiteSpace=\"nowrap\">\n {\n buildDynamicCopy(\n customCopy.total_cash_accounts,\n selectedCashAccounts.length,\n ) as string\n }\n </P>\n </Stack>\n\n <Stack pt={18}>\n <Icon name=\"remove\" />\n </Stack>\n\n <Stack pb={14} pt={12}>\n <CurrencyText amount={filteredExpenseTotal} variant=\"h2\" />\n <P variant=\"caption\" whiteSpace=\"nowrap\">\n {buildDynamicCopy(customCopy.expenses_due, expensesTilNextIncome.length) as string}\n </P>\n </Stack>\n\n <Stack pt={18}>\n <Icon name=\"equal\" />\n </Stack>\n\n <Stack pb={14} pr={24} pt={12}>\n <CurrencyText amount={availableToSpend} variant=\"h2\" />\n <Stack alignItems=\"center\" direction=\"row\" gap={8}>\n <P variant=\"caption\" whiteSpace=\"nowrap\">\n {customCopy.available_to_spend}\n </P>\n <InformationTooltip body={customCopy.tooltip_body} title={customCopy.tooltip_title} />\n </Stack>\n </Stack>\n\n <Stack borderLeft={`1px solid ${theme.palette.divider}`} pb={12} pl={24} pt={12}>\n <>\n <Text variant=\"h2\">\n {buildDynamicCopy(customCopy.days, daysUntilNextIncome) as string}\n </Text>\n <P variant=\"caption\" whiteSpace=\"nowrap\">\n {customCopy.next_paycheck}\n </P>\n </>\n </Stack>\n </Stack>\n ) : (\n <Stack border={`1px solid ${theme.palette.divider}`} borderRadius={1}>\n <Stack direction=\"row\" justifyContent=\"space-between\" p={16}>\n <Text variant=\"body2\">\n {\n buildDynamicCopy(\n customCopy.total_cash_accounts,\n selectedCashAccounts.length,\n ) as string\n }\n </Text>\n <CurrencyText amount={cashBalance} bold={true} variant=\"caption\" />\n </Stack>\n\n <Divider />\n\n <Stack direction=\"row\" justifyContent=\"space-between\" p={16}>\n <Text variant=\"body2\">\n {buildDynamicCopy(customCopy.expenses_due, expensesTilNextIncome.length) as string}\n </Text>\n <CurrencyText amount={filteredExpenseTotal} bold={true} symbol=\"-\" variant=\"caption\" />\n </Stack>\n\n <Divider />\n\n <Stack\n alignItems=\"center\"\n bgcolor=\"background.default\"\n direction=\"row\"\n gap={8}\n height={48}\n justifyContent=\"space-between\"\n px={16}\n sx={{ borderBottomLeftRadius: 4, borderBottomRightRadius: 4 }}\n >\n <RemainingCash remaining={availableToSpend} />\n </Stack>\n <Divider />\n <Stack direction=\"row\" justifyContent=\"space-between\" p={16}>\n <Text variant=\"body2\">{customCopy.next_paycheck}</Text>\n <Text bold={true} variant=\"caption\">\n {buildDynamicCopy(customCopy.days, daysUntilNextIncome) as string}\n </Text>\n </Stack>\n </Stack>\n )}\n </Box>\n )\n}\n\nexport default observer(CashflowWidgetContent)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { addMonths } from 'date-fns/addMonths'\nimport { startOfToday } from 'date-fns/startOfToday'\n\nimport {\n EmptyState,\n Loader,\n MiniWidgetContainer,\n useGlobalCopyStore,\n useGlobalUiStore,\n useRecurringTransactionsStore,\n useWidgetLoadTimer,\n} from '../common'\nimport { MiniWidgetProps } from '../core'\n\nimport CashflowWidgetContent from './components/CashflowWidgetContent'\n\nconst CashflowMiniWidget: React.FC<MiniWidgetProps> = ({\n onPrimaryCtaClick,\n onSecondaryCtaClick,\n sx = {},\n}) => {\n const { cashflow: copy } = useGlobalCopyStore()\n const { isInitialized } = useGlobalUiStore()\n const { loadRepeatingTransactionData, income, isDataLoaded, setDateRange } =\n useRecurringTransactionsStore()\n\n React.useEffect(() => {\n setDateRange({ start: startOfToday(), end: addMonths(startOfToday(), 1) })\n if (!isDataLoaded) {\n loadRepeatingTransactionData().finally()\n }\n }, [])\n\n useWidgetLoadTimer({\n widgetName: 'CashflowMiniWidget',\n isLoaded: isDataLoaded,\n })\n\n const showEmptyState = isDataLoaded && !income.length\n\n if (!isInitialized) return <Loader />\n\n return (\n <MiniWidgetContainer\n className=\"mx-exp-cashflow-miniwidget\"\n onPrimaryCtaClick={onPrimaryCtaClick}\n primaryCtaLabel={copy.primary_cta}\n primaryCtaLabelAria={copy.primary_cta_aria}\n subTitle={showEmptyState || !isDataLoaded ? undefined : copy.sub_title}\n sx={{ height: '100%', ...sx }}\n title={copy.title}\n >\n {!isDataLoaded && <Loader />}\n {isDataLoaded &&\n (showEmptyState ? (\n <EmptyState\n header={copy.create}\n icon=\"local_atm\"\n onClick={onSecondaryCtaClick}\n primaryButton={copy.add_income}\n primaryButtonStartIcon=\"add\"\n subText={copy.create_description}\n />\n ) : (\n <CashflowWidgetContent />\n ))}\n </MiniWidgetContainer>\n )\n}\n\nexport default observer(CashflowMiniWidget)\n","import ListItem from '@mui/material/ListItem'\n\nimport RemainingCash from './RemainingCash'\n\ninterface DetailsFooterProps {\n remaining: number\n}\n\nconst DetailsFooter = ({ remaining }: DetailsFooterProps) => {\n return (\n <ListItem\n sx={{\n alignItems: 'center',\n backgroundColor: 'background.highlight',\n display: 'flex',\n gap: 12,\n padding: '12px 24px',\n borderBottomLeftRadius: '3px',\n borderBottomRightRadius: '3px',\n minHeight: 'auto',\n }}\n >\n <RemainingCash remaining={remaining} />\n </ListItem>\n )\n}\n\nexport default DetailsFooter\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport ListItem from '@mui/material/ListItem'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { type Recurrence } from '../../core'\nimport { CurrencyText } from '../../common'\n\nexport enum ExpenseType {\n EXPENSE = 'expense',\n INCOME = 'income',\n}\n\ninterface DetailsExpenseRowType {\n recurrence: Recurrence\n}\n\nconst DetailsExpenseRow: React.FC<DetailsExpenseRowType> = ({ recurrence }) => {\n return (\n <>\n <ListItem sx={{ display: 'flex', alignItems: 'center', gap: 16, px: 24, py: 12 }}>\n <Stack alignItems=\"center\" height={32} width={32}>\n <Text bold={true} sx={{ fontSize: 11 }}>\n {formatDate(recurrence.expectedDate, DATE_FORMATS_INTL.MONTH)}\n </Text>\n <Text bold={true} sx={{ fontSize: 11 }}>\n {formatDate(recurrence.expectedDate, DATE_FORMATS_INTL.DAY)}\n </Text>\n </Stack>\n <Text sx={{ flexGrow: 1, fontSize: 13 }}>{recurrence.name}</Text>\n <CurrencyText\n amount={recurrence.amount}\n bold={true}\n sx={{ textAlign: 'right', fontSize: 13 }}\n />\n </ListItem>\n <Divider />\n </>\n )\n}\n\nexport default observer(DetailsExpenseRow)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport ListSubheader from '@mui/material/ListSubheader'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../common'\nimport { ExpenseType } from './DetailsExpenseRow'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface DetailsExpenseHeaderProps {\n total: number\n type: ExpenseType\n}\n\nconst DetailsExpenseHeader: React.FC<DetailsExpenseHeaderProps> = ({ total, type }) => {\n const { cashflow: customCopy } = useGlobalCopyStore()\n\n return (\n <>\n <ListSubheader\n sx={{\n alignItems: 'center',\n backgroundColor: 'background.highlight',\n display: 'flex',\n justifyContent: 'space-between',\n pb: 4,\n pt: 12,\n px: 24,\n }}\n >\n <Text bold={true} sx={{ fontSize: 12 }}>\n {type === ExpenseType.EXPENSE ? customCopy.expenses : customCopy.income}\n </Text>\n <Text bold={true} sx={{ fontSize: 13 }}>\n {type === ExpenseType.EXPENSE ? '-' : '+'}\n {formatCurrency(total, '0,0.00')}\n </Text>\n </ListSubheader>\n <Divider />\n </>\n )\n}\n\nexport default observer(DetailsExpenseHeader)\n","import type { Account, Recurrence } from '../../core'\nimport { isAfter } from 'date-fns/isAfter'\nimport { isBefore } from 'date-fns/isBefore'\nimport { isToday } from 'date-fns/isToday'\n\n/**\n * Returns recurrences that match the given account and date range\n * @param account The account\n * @param dateRange The date range\n */\nexport const recurrenceFilter =\n (account: Account, dateRange: { start: Date; end: Date }) => (r: Recurrence) =>\n r.accountGuid === account.guid &&\n (isToday(r.expectedDate) || isAfter(r.expectedDate, dateRange.start)) &&\n isBefore(r.expectedDate, dateRange.end)\n","import { observer } from 'mobx-react-lite'\nimport { getUnixTime } from 'date-fns/getUnixTime'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport AccountListItem from '../../accounts/components/AccountListItem'\nimport DetailsFooter from './DetailsFooter'\nimport DetailsExpenseRow, { ExpenseType } from './DetailsExpenseRow'\nimport DetailsExpenseHeader from './DetailsExpenseHeader'\n\nimport {\n useGlobalCopyStore,\n useRecurringTransactionsStore,\n useWidgetContainerProvider,\n} from '../../common'\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { type Account, type Recurrence } from '../../core'\nimport { useCashflowUiStore } from '../context/hooks'\nimport { recurrenceFilter } from '../util/Filters'\n\nconst DetailsTab = () => {\n const { availableWidth } = useWidgetContainerProvider()\n const { cashflow: customCopy } = useGlobalCopyStore()\n const { upcomingExpenses, upcomingIncome } = useRecurringTransactionsStore()\n const { dateRange, selectedCashAccounts } = useCashflowUiStore()\n\n return (\n <Stack>\n <Stack direction={availableWidth < 400 ? 'column' : 'row'} justifyContent=\"space-between\">\n <Text bold={true} sx={{ fontSize: 15, mb: 12 }}>\n {customCopy.accounts_breakdown}\n </Text>\n <Text bold={true} sx={{ fontSize: 15, mb: 12 }}>\n {formatDate(dateRange.start, DATE_FORMATS_INTL.FULL_MONTH_DAY)} -{' '}\n {formatDate(dateRange.end, DATE_FORMATS_INTL.FULL_MONTH_DAY)}\n </Text>\n </Stack>\n\n <Stack>\n {selectedCashAccounts.map((account: Account) => {\n const upcomingIncomeByAccount = upcomingIncome\n .filter(recurrenceFilter(account, dateRange))\n .sort((a, b) => getUnixTime(a.expectedDate) - getUnixTime(b.expectedDate))\n\n const projectedExpensesByAccount = upcomingExpenses.filter(\n recurrenceFilter(account, dateRange),\n )\n\n const incomeTotal = upcomingIncomeByAccount.reduce(\n (acc: number, curr: Recurrence) => acc + curr.amount,\n 0,\n )\n const expenseTotal = projectedExpensesByAccount.reduce(\n (acc, curr) => acc + curr.amount,\n 0,\n )\n\n return (\n <List\n key={account.guid}\n sx={{\n border: '1px solid',\n borderColor: 'neutral.light',\n mb: 24,\n borderRadius: 1,\n }}\n >\n <AccountListItem\n account={account}\n listItemProps={{\n disableGutters: false,\n disablePadding: false,\n sx: { borderTopRadius: 1, pr: 24 },\n }}\n />\n <Divider />\n {/* Income */}\n {upcomingIncomeByAccount.length > 0 && (\n <ListItem>\n <List\n subheader={\n <DetailsExpenseHeader total={incomeTotal} type={ExpenseType.INCOME} />\n }\n sx={{ width: '100%' }}\n >\n {upcomingIncomeByAccount.map((r) => (\n <DetailsExpenseRow key={r.repeatingTransactionGuid} recurrence={r} />\n ))}\n </List>\n </ListItem>\n )}\n {/* Expenses */}\n {projectedExpensesByAccount.length > 0 && (\n <ListItem>\n <List\n subheader={\n <DetailsExpenseHeader total={expenseTotal} type={ExpenseType.EXPENSE} />\n }\n sx={{ width: '100%' }}\n >\n {projectedExpensesByAccount.map((r) => (\n <DetailsExpenseRow key={r.repeatingTransactionGuid} recurrence={r} />\n ))}\n </List>\n </ListItem>\n )}\n {/* Bottom row total */}\n <DetailsFooter\n remaining={\n (account.available_balance || account.balance || 0) + incomeTotal - expenseTotal\n }\n />\n </List>\n )\n })}\n </Stack>\n </Stack>\n )\n}\n\nexport default observer(DetailsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { addDays } from 'date-fns/addDays'\n\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 Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\nimport { alpha } from '@mui/material/styles'\n\nimport { DataGridPro, GridColDef } from '@mui/x-data-grid-pro'\n\nimport { InstitutionLogo, Text } from '@mxenabled/mxui'\n\nimport {\n CurrencyText,\n InformationTooltip,\n useGlobalCopyStore,\n useRecurringTransactionsStore,\n useWidgetContainerProvider,\n} from '../../common'\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { type Account } from '../../core'\nimport { useCashflowUiStore } from '../context/hooks'\nimport { recurrenceFilter } from '../util/Filters'\n\nimport RemainingCash from './RemainingCash'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\nconst SummaryTab = () => {\n const { availableWidth } = useWidgetContainerProvider()\n const theme = useTheme()\n const { cashflow: customCopy } = useGlobalCopyStore()\n const { upcomingExpenses, upcomingIncome } = useRecurringTransactionsStore()\n const { dateRange, selectedCashAccounts } = useCashflowUiStore()\n\n const columns: GridColDef[] = [\n {\n field: 'account',\n flex: 1.5,\n headerName: customCopy.accounts,\n renderCell: ({ value: { name, nickname, institution_guid, account_number } }) => {\n const accountName = nickname || name\n\n return (\n <Stack alignItems=\"center\" flexDirection=\"row\" gap={12}>\n <InstitutionLogo\n alt={customCopy.institution_logo}\n institutionGuid={institution_guid || ''}\n size={16}\n />\n <Text variant=\"body2\">{`${accountName} ${account_number ? `*${account_number}` : ''}`}</Text>\n </Stack>\n )\n },\n },\n {\n field: 'balance',\n flex: 1,\n headerName: customCopy.balance,\n type: 'number',\n renderCell: (params) => (\n <Text color={theme.palette.text.primary} variant=\"body2\">\n {formatCurrency(params.value, '0,0.00')}\n </Text>\n ),\n },\n {\n field: 'income',\n flex: 1,\n headerName: customCopy.projected_income,\n type: 'number',\n renderCell: (params) => (\n <Text color={theme.palette.text.primary} variant=\"body2\">\n {`+${formatCurrency(params.value, '0,0.00')}`}\n </Text>\n ),\n },\n {\n field: 'expenses',\n flex: 1.1,\n headerName: customCopy.projected_expenses,\n type: 'number',\n renderCell: (params) => (\n <Text color={theme.palette.text.primary} variant=\"body2\">\n {`-${formatCurrency(params.value, '0,0.00')}`}\n </Text>\n ),\n },\n {\n field: 'remaining',\n flex: 1,\n headerName: customCopy.remaining,\n type: 'number',\n renderCell: (params) => {\n const total = params.row.balance + params.row.income - params.row.expenses\n\n return (\n <Text\n color={Math.sign(total) === -1 ? theme.palette.error.main : theme.palette.text.primary}\n variant=\"body2\"\n >\n {formatCurrency(total, '0,0.00')}\n </Text>\n )\n },\n },\n ]\n\n const rows = React.useMemo(() => {\n return selectedCashAccounts.map((account: Account) => {\n const totalprojectedExpenses = upcomingExpenses\n .filter(\n recurrenceFilter(account, { start: startOfToday(), end: addDays(startOfToday(), 30) }),\n )\n .reduce((acc, curr) => acc + curr.amount, 0)\n\n const totalProjectedIncome = upcomingIncome\n .filter(\n recurrenceFilter(account, { start: startOfToday(), end: addDays(startOfToday(), 30) }),\n )\n .reduce((acc, curr) => acc + curr.amount, 0)\n\n const remaining = (account.balance || 0) + totalProjectedIncome - totalprojectedExpenses\n\n return {\n account,\n balance: account.balance || 0,\n id: account.guid,\n income: totalProjectedIncome,\n expenses: totalprojectedExpenses,\n remaining,\n }\n })\n }, [selectedCashAccounts, upcomingExpenses, upcomingIncome])\n\n return (\n <Box\n sx={{\n width: '100%',\n }}\n >\n <Stack\n direction={availableWidth < 540 ? 'column' : 'row'}\n justifyContent=\"space-between\"\n mb={12}\n >\n <Stack alignItems=\"center\" direction=\"row\" gap={8}>\n <Text\n bold={true}\n sx={{\n fontSize: 15,\n }}\n >\n {customCopy.cash_inflow_and_outflow}\n </Text>\n <InformationTooltip\n body={customCopy.table_tooltip_body}\n title={customCopy.table_tooltip_title}\n />\n </Stack>\n <Text bold={true} sx={{ fontSize: 15 }}>\n {formatDate(dateRange.start, DATE_FORMATS_INTL.FULL_MONTH_DAY)} -{' '}\n {formatDate(dateRange.end, DATE_FORMATS_INTL.FULL_MONTH_DAY)}\n </Text>\n </Stack>\n {availableWidth > 650 ? (\n <DataGridPro\n columnHeaderHeight={48}\n columns={columns}\n density=\"standard\"\n disableColumnMenu={true}\n disableRowSelectionOnClick={true}\n hideFooter={true}\n rowHeight={48}\n rows={rows}\n sx={{\n border: '1px solid',\n borderColor: 'neutral.light',\n borderRadius: 1,\n '& .MuiDataGrid-columnHeader .MuiIconButton-root': {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n },\n },\n '& .MuiDataGrid-columnHeaderTitle': {\n fontFamily: theme.typography.h3.fontFamily,\n fontSize: theme.typography.body2.fontSize,\n },\n '& .MuiDataGrid-sortIcon': {\n color: theme.palette.primary.main,\n },\n }}\n />\n ) : (\n rows.map((row) => {\n const { name, nickname, institution_guid, account_number } = row.account\n const accountName = nickname || name\n\n return (\n <List\n key={row.id}\n sx={{\n border: '1px solid',\n borderColor: 'neutral.light',\n borderRadius: 1,\n marginBottom: 24,\n }}\n >\n <ListItem sx={{ minHeight: 'auto' }}>\n <Stack width=\"100%\">\n <Stack\n alignItems=\"center\"\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n px={16}\n py={12}\n >\n <Stack alignItems=\"center\" flexDirection=\"row\" gap={8} width=\"50%\">\n <InstitutionLogo\n alt={customCopy.institution_logo}\n institutionGuid={institution_guid || ''}\n size={16}\n />\n <Text variant=\"body2\">{`${accountName} ${account_number ? `*${account_number}` : ''}`}</Text>\n </Stack>\n <CurrencyText amount={row.balance} bold={true} variant=\"body2\" />\n </Stack>\n <Divider sx={{ width: '100%' }} />\n <Stack\n alignItems=\"center\"\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n px={16}\n py={12}\n >\n <Text variant=\"body2\">{customCopy.projected_income}</Text>\n <CurrencyText amount={row.income} bold={true} symbol=\"+\" variant=\"body2\" />\n </Stack>\n <Divider sx={{ width: '100%' }} />\n <Stack\n alignItems=\"center\"\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n px={16}\n py={12}\n >\n <Text variant=\"body2\">{customCopy.projected_expenses}</Text>\n <CurrencyText amount={row.expenses} bold={true} symbol=\"-\" variant=\"body2\" />\n </Stack>\n <Divider sx={{ width: '100%' }} />\n <Stack\n alignItems=\"center\"\n bgcolor=\"background.default\"\n flexDirection=\"row\"\n gap={8}\n justifyContent=\"space-between\"\n px={16}\n py={12}\n sx={{ borderBottomLeftRadius: '4px', borderBottomRightRadius: '4px' }}\n >\n <RemainingCash remaining={row.remaining} />\n </Stack>\n </Stack>\n </ListItem>\n </List>\n )\n })\n )}\n </Box>\n )\n}\n\nexport default observer(SummaryTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Tabs from '@mui/material/Tabs'\nimport Tab from '@mui/material/Tab'\n\nimport DetailsTab from './DetailsTab'\nimport SummaryTab from './SummaryTab'\nimport { TabContentContainer, useEvent, useGlobalCopyStore, useScreenSize } from '../../common'\n\nconst CashflowContent: React.FC = () => {\n const { cashflow: customCopy } = useGlobalCopyStore()\n const { isDesktop } = useScreenSize()\n const { onEvent } = useEvent()\n\n const [value, setValue] = React.useState(0)\n\n const handleChange = (_event: React.SyntheticEvent, newValue: number) => {\n setValue(newValue)\n }\n\n React.useEffect(() => {\n onEvent(value === 0 ? 'cash_flow_summary' : 'cash_flow_details')\n }, [value])\n\n return (\n <Box>\n <Tabs\n aria-label={customCopy.cashflow_summary_and_details}\n centered={true}\n onChange={handleChange}\n textColor=\"primary\"\n value={value}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"cashflow-tabpanel-0\"\n id=\"cashflow-tab-0\"\n label={customCopy.summary}\n sx={{\n textTransform: 'none',\n }}\n />\n <Tab\n aria-controls=\"cashflow-tabpanel-1\"\n id=\"cashflow-tab-1\"\n label={customCopy.details}\n sx={{\n textTransform: 'none',\n }}\n />\n </Tabs>\n <Box sx={{ mb: 32 }} />\n <TabContentContainer index={0} name=\"cashflow\" value={value}>\n <Box sx={{ m: isDesktop ? 48 : 16 }}>\n <SummaryTab />\n </Box>\n </TabContentContainer>\n <TabContentContainer index={1} name=\"cashflow\" value={value}>\n <Box sx={{ m: isDesktop ? 48 : 16 }}>\n <DetailsTab />\n </Box>\n </TabContentContainer>\n </Box>\n )\n}\n\nexport default observer(CashflowContent)\n","import React from 'react'\n\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { CurrencyText } from '../../common/components/CurrencyText'\n\ninterface CashflowAmountHeadingProps {\n amount: number\n isMobile?: boolean\n isTotal?: boolean\n label: string\n symbol?: string\n tooltip?: React.ReactNode\n}\n\nconst CashflowAmountHeading: React.FC<CashflowAmountHeadingProps> = ({\n amount,\n isMobile = false,\n isTotal = false,\n label,\n symbol,\n tooltip,\n}) => {\n return (\n <Stack\n bgcolor={isTotal ? 'background.default' : 'transparent'}\n direction={isMobile ? 'row' : 'column'}\n justifyContent={isMobile ? 'space-between' : 'initial'}\n padding={isMobile ? '14px 16px' : 0}\n sx={{ borderBottomLeftRadius: 4, borderBottomRightRadius: 4 }}\n >\n {!isMobile && <CurrencyText amount={amount} component=\"h2\" variant=\"h2\" />}\n <Stack alignItems=\"center\" component=\"span\" direction=\"row\" gap={8} mt={2}>\n <Text bold={isTotal} variant=\"body2\">\n {label}\n </Text>\n {tooltip}\n </Stack>\n {isMobile && <CurrencyText amount={amount} component=\"h2\" symbol={symbol} variant=\"body2\" />}\n </Stack>\n )\n}\n\nexport default CashflowAmountHeading\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { isAfter } from 'date-fns/isAfter'\nimport { isBefore } from 'date-fns/isBefore'\nimport { isToday } from 'date-fns/isToday'\n\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport Stack from '@mui/material/Stack'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport {\n Drawer,\n InformationTooltip,\n useGlobalCopyStore,\n useGlobalUiStore,\n useRecurringTransactionsStore,\n useWidgetContainerProvider,\n} from '../../common'\nimport { type Recurrence } from '../../core'\n\nimport { ManageIncome } from '../../recurringtransactions'\n\nimport CashflowAmountHeading from './CashflowAmountHeading'\nimport { useCashflowUiStore } from '../context/hooks'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\n// This filter only includes activities that have an account guid that matches an account guid\n// in the given list of accountGuids and is within the given date range\nconst recurrenceAccountFilter =\n (accountGuids: string[], dateRange: { start: Date; end: Date }) => (r: Recurrence) =>\n r.accountGuid &&\n accountGuids.includes(r.accountGuid) &&\n (isToday(r.expectedDate) || isAfter(r.expectedDate, dateRange.start)) &&\n isBefore(r.expectedDate, dateRange.end)\n\nconst CashflowHeading: React.FC = () => {\n const { availableWidth } = useWidgetContainerProvider()\n const { cashflow: customCopy } = useGlobalCopyStore()\n\n const { income, isDataLoaded, upcomingExpenses, upcomingIncome } = useRecurringTransactionsStore()\n const { selectedAccountGuids } = useGlobalUiStore()\n const { dateRange, selectedCashAccounts } = useCashflowUiStore()\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n const filteredExpenses = React.useMemo(\n () => upcomingExpenses.filter(recurrenceAccountFilter(selectedAccountGuids, dateRange)),\n [dateRange, selectedAccountGuids, upcomingExpenses],\n )\n\n const filteredIncome = React.useMemo(\n () => upcomingIncome.filter(recurrenceAccountFilter(selectedAccountGuids, dateRange)),\n [dateRange, selectedAccountGuids, upcomingIncome],\n )\n\n const cashBalance = React.useMemo(\n () => selectedCashAccounts.reduce((total, account) => total + (account?.balance || 0), 0),\n [selectedCashAccounts],\n )\n\n const totalUpcomingExpenses = filteredExpenses.reduce((acc, curr) => acc + curr.amount, 0)\n const totalUpcomingIncome = filteredIncome.reduce((acc, curr) => acc + curr.amount, 0)\n const availableToSpend = cashBalance - totalUpcomingExpenses + totalUpcomingIncome\n\n const hasRecurringIncome = isDataLoaded && income.length > 0\n const isMobile = availableWidth < 725\n\n return (\n <Stack sx={{ mx: isMobile ? 16 : 0, my: isMobile ? 24 : 42 }}>\n <Stack\n border={isMobile ? '1px solid' : 'none'}\n borderColor=\"neutral.light\"\n borderRadius={2}\n flexDirection={isMobile ? 'column' : 'row'}\n gap={isMobile ? 0 : 24}\n justifyContent=\"center\"\n >\n <CashflowAmountHeading\n amount={cashBalance}\n isMobile={isMobile}\n label={buildDynamicCopy(customCopy.cash_and_bank, selectedCashAccounts.length) as string}\n />\n\n {isMobile && <Divider />}\n {hasRecurringIncome ? (\n <>\n {!isMobile && <Text sx={{ fontSize: 25, lineHeight: 1 }}>+</Text>}\n <CashflowAmountHeading\n amount={totalUpcomingIncome}\n isMobile={isMobile}\n label={customCopy.to_be_received}\n symbol={isMobile ? '+' : undefined}\n />\n </>\n ) : (\n <Button\n onClick={() => setIsOpen(true)}\n startIcon={<Icon name=\"add\" />}\n sx={{ fontSize: 13 }}\n >\n {customCopy.add_income}\n </Button>\n )}\n\n {isMobile ? <Divider /> : <Text sx={{ fontSize: 25, lineHeight: 1 }}>-</Text>}\n\n <CashflowAmountHeading\n amount={totalUpcomingExpenses}\n isMobile={isMobile}\n label={buildDynamicCopy(customCopy.to_be_paid_out, filteredExpenses.length) as string}\n symbol={isMobile ? '-' : undefined}\n />\n\n {isMobile ? <Divider /> : <Text sx={{ fontSize: 25, lineHeight: 1 }}>=</Text>}\n\n <CashflowAmountHeading\n amount={availableToSpend}\n isMobile={isMobile}\n isTotal={isMobile}\n label={customCopy.remaining_cash}\n tooltip={\n <InformationTooltip\n body={customCopy.remaining_income_tooltip_body}\n title={customCopy.remaining_income_tooltip_title}\n />\n }\n />\n </Stack>\n\n <Drawer\n ariaLabelClose={customCopy.close_manage_income_aria}\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n shouldShowHeaderBorders={false}\n title={customCopy.manage_income}\n >\n <ManageIncome />\n </Drawer>\n </Stack>\n )\n}\n\nexport default observer(CashflowHeading)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport {\n ANALYTICS_EVENTS,\n Drawer,\n Loader,\n useAccountStore,\n useAppConfig,\n useEvent,\n useGlobalCopyStore,\n useGlobalUiStore,\n useRecurringTransactionsStore,\n useTransactionStore,\n useWidgetLoadTimer,\n WidgetContainer,\n} from '../common'\nimport { AccountType, WidgetProps } from '../core'\n\nimport { RecurringSettings } from '../recurringtransactions'\n\nimport CashflowContent from './components/CashflowContent'\nimport CashflowHeading from './components/CashflowHeading'\nimport { useCashflowUiStore } from './context/hooks'\nimport { subDays } from 'date-fns/subDays'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { endOfToday } from 'date-fns/endOfToday'\n\nconst CashflowWidget: React.FC<WidgetProps> = ({ onBackClick, onMenuClick, sx = {} }) => {\n const { selectedAccounts, selectedAccountGuids, shouldDisableNextDate, shouldDisablePrevDate } =\n useGlobalUiStore()\n\n const { onEvent } = useEvent()\n const { clientConfig } = useAppConfig()\n const { visibleCashAccounts: cashAccounts } = useAccountStore()\n const { setFilter } = useTransactionStore()\n const { dateRange, setSelectedCashAccounts } = useCashflowUiStore()\n const { loadRepeatingTransactionData, isDataLoaded, setDateRange } =\n useRecurringTransactionsStore()\n const { cashflow: customCopy, recurring: recurringCopy } = useGlobalCopyStore()\n const { isInitialized } = useGlobalUiStore()\n\n const view = clientConfig?.master?.deep_link_params?.view\n const isManageIncomeView = view === 'manage_income'\n const [isSettingsOpen, setIsSettingsOpen] = React.useState(isManageIncomeView)\n\n React.useEffect(() => {\n setDateRange(dateRange)\n if (!isDataLoaded) {\n loadRepeatingTransactionData().finally()\n }\n }, [])\n\n React.useEffect(() => {\n const cashAccountGuids = cashAccounts.map((account) => account.guid)\n const selAccts = selectedAccounts.filter(\n (account) =>\n selectedAccountGuids.includes(account.guid) && cashAccountGuids.includes(account.guid),\n )\n setSelectedCashAccounts(selAccts)\n setFilter({\n dateRange: { start: subDays(startOfToday(), 90), end: endOfToday() },\n accounts: selAccts.map((a) => a.guid),\n })\n }, [cashAccounts, selectedAccounts])\n\n useWidgetLoadTimer({\n widgetName: 'CashflowWidget',\n isLoaded: isDataLoaded,\n })\n\n if (!isInitialized) return <Loader />\n\n return (\n <WidgetContainer\n actions={[\n {\n label: recurringCopy.action_title,\n iconName: 'credit_card_gear',\n onClick: () => {\n setIsSettingsOpen(true)\n onEvent(ANALYTICS_EVENTS.CASH_FLOW_CLICK_SETTINGS)\n },\n },\n ]}\n allowedAccountTypes={[\n AccountType.CASH,\n AccountType.CHECKING,\n AccountType.PREPAID,\n AccountType.SAVINGS,\n AccountType.CHECKING_LINE_OF_CREDIT,\n ]}\n calendarActions={{\n shouldDisableNext: shouldDisableNextDate,\n shouldDisablePrevious: shouldDisablePrevDate,\n shouldDisablePicker: true,\n onRangeChanged: () => {},\n }}\n dateRange={dateRange}\n dateRangeVariant=\"readonly\"\n hasDivider={true}\n onAccountsFilterClick={() => onEvent(ANALYTICS_EVENTS.CASH_FLOW_CLICK_FILTER)}\n onBackClick={onBackClick}\n onMenuClick={onMenuClick}\n sx={sx}\n title={customCopy.title}\n >\n <CashflowHeading />\n\n <CashflowContent />\n\n <Drawer\n ariaLabelClose={customCopy.close_settings_aria}\n isOpen={isSettingsOpen}\n onClose={() => setIsSettingsOpen(false)}\n shouldShowHeaderBorders={false}\n title={recurringCopy.action_title}\n >\n <RecurringSettings defaultSelectedTab={isManageIncomeView ? 1 : 0} />\n </Drawer>\n </WidgetContainer>\n )\n}\n\nexport default observer(CashflowWidget)\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 { H2, H3, Icon, P } from '@mxenabled/mxui'\nimport { useTheme } from '@mui/material/styles'\nimport { useCashflowStore, useGlobalCopyStore } from '../../../common'\n\ninterface StepOneProps {\n handleNextStep: () => void\n}\n\nconst StepOne: React.FC<StepOneProps> = ({ handleNextStep }) => {\n const { completeOnboarding } = useCashflowStore()\n const { cashflow: customCopy } = useGlobalCopyStore()\n\n const theme = useTheme()\n\n return (\n <Stack>\n <H2 pb={12} variant=\"h1\">\n {customCopy.welcome_title}\n </H2>\n <H3 color={theme.palette.primary.light} pb={8}>\n {customCopy.welcome_sub_title}\n </H3>\n <P pb={32}>{customCopy.welcome_description}</P>\n <Stack direction=\"column\" mb={32} spacing={32}>\n <P sx={{ display: 'flex', alignItems: 'center', fontSize: 18 }}>\n <Box\n bgcolor={theme.palette.primary.lighter}\n borderRadius={1}\n component=\"span\"\n height={44}\n mr={24}\n sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center', flexShrink: 0 }}\n width={44}\n >\n <Icon color=\"primary\" name=\"currency_exchange\" />\n </Box>\n {customCopy.bullet_one}\n </P>\n <P sx={{ display: 'flex', alignItems: 'center', fontSize: 18 }}>\n <Box\n bgcolor={theme.palette.primary.lighter}\n borderRadius={1}\n component=\"span\"\n height={44}\n mr={24}\n sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center', flexShrink: 0 }}\n width={44}\n >\n <Icon color=\"primary\" name=\"cardiology\" />\n </Box>\n {customCopy.bullet_two}\n </P>\n <P sx={{ display: 'flex', alignItems: 'center', fontSize: 18 }}>\n <Box\n bgcolor={theme.palette.primary.lighter}\n borderRadius={1}\n component=\"span\"\n height={44}\n mr={24}\n sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center', flexShrink: 0 }}\n width={44}\n >\n <Icon color=\"primary\" name=\"flare\" />\n </Box>\n {customCopy.bullet_three}\n </P>\n </Stack>\n <Stack direction=\"row\" spacing={16}>\n <Button onClick={handleNextStep} variant=\"contained\">\n {customCopy.get_started_button}\n </Button>\n <Button onClick={completeOnboarding} variant=\"outlined\">\n {customCopy.skip_button}\n </Button>\n </Stack>\n </Stack>\n )\n}\n\nexport default observer(StepOne)\n","const ASSETS_URL = 'https://content.moneydesktop.com/storage/MD_Assets/md/cashflow'\n\nexport const CASHFLOW_IMAGES = {\n CASHFLOW_ONBOARDING: `${ASSETS_URL}/cashflow-onboarding.png`,\n CASHFLOW_LOADING_ANIMATION: `${ASSETS_URL}/loading-animation.gif`,\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { H2, P } from '@mxenabled/mxui'\nimport { useGlobalCopyStore } from '../../../common'\n\nimport { CASHFLOW_IMAGES } from '../../constants/CashflowImages'\n\nconst StepTwo: React.FC = () => {\n const { cashflow: customCopy } = useGlobalCopyStore()\n\n return (\n <React.Fragment>\n <div>\n <img alt=\"Loading\" src={CASHFLOW_IMAGES.CASHFLOW_LOADING_ANIMATION} />\n </div>\n <H2 pb={12} variant=\"h1\">\n {customCopy.loading_title}\n </H2>\n <P>{customCopy.loading_description}</P>\n </React.Fragment>\n )\n}\n\nexport default observer(StepTwo)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { formatISO } from 'date-fns/formatISO'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { getUnixTime } from 'date-fns/getUnixTime'\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 Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport Stack from '@mui/material/Stack'\nimport { keyframes } from '@mui/material/styles'\nimport { useTheme } from '@mui/material/styles'\n\nimport { H2, Icon, P } from '@mxenabled/mxui'\n\nimport StepOne from './components/onboarding/StepOne'\nimport StepTwo from './components/onboarding/StepTwo'\n\nimport {\n Loader,\n useCashflowStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n useRecurringTransactionsStore,\n useScreenSize,\n useTransactionStore,\n useUserStore,\n} from '../common'\nimport { type RepeatingTransaction, type Transaction, RepeatingType, Frequency } from '../core'\nimport SubheaderRow from '../common/components/SubheaderRow'\n\nimport { useCashflowUiStore } from './context/hooks'\n\nimport { TransactionRow } from '../transactions'\nimport { incomeFilter, incomeFilterSearch } from '../transactions/utils/Filters'\n\nimport { AddRecurringTransactionDetails } from '../recurringtransactions'\nimport { SelectTransaction } from '../recurringtransactions'\nimport { getNextPaymentDate } from '../core/utils/RecurringTransactionsUtil'\n\nimport { fromUnixToDayOfWeekAndDate } from '../core/utils/DateUtil'\nimport { CASHFLOW_IMAGES } from './constants/CashflowImages'\n\ninterface UpcomingTransactions extends Transaction {\n nextDate: Date | null\n frequency: Frequency\n}\n\nconst spin = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst CashflowOnboarding: React.FC = () => {\n const { addRepeatingTransaction, repeatingTransactions } = useRecurringTransactionsStore()\n const { cashflow: customCopy, common: commonCopy } = useGlobalCopyStore()\n const { user } = useUserStore()\n const { completeOnboarding } = useCashflowStore()\n const { isDirty } = useCashflowUiStore()\n const { isMobile } = useScreenSize()\n const { isCopyLoaded, setDisplayedDate } = useGlobalUiStore()\n const { filter, setFilter, transactions } = useTransactionStore()\n const theme = useTheme()\n\n const [addIncome, setAddIncome] = useState(true)\n const [frequency, setFrequency] = React.useState(Frequency.EveryMonth)\n const [firstDay, setFirstDay] = React.useState(1)\n const [secondDay, setSecondDay] = React.useState(15)\n const [isSubmitting, setIsSubmitting] = useState(false)\n // const [nextDate, setNextDate] = React.useState<Date | null>(null)\n const [step, setStep] = useState(1)\n const [selectedTransactions, setSelectedTransactions] = useState<UpcomingTransactions[] | []>([])\n const [transactionGuid, setTransactionGuid] = useState('')\n\n const transaction = React.useMemo(\n () => transactions.find((t) => t.guid === transactionGuid),\n [transactionGuid, transactions],\n )\n\n const canSubmit = !!repeatingTransactions.filter(\n (r) => r.repeating_transaction_type === RepeatingType.Income,\n ).length\n\n const handleGetTransactions = async () => {\n setStep(2)\n // set transaction date range and filter by income\n setDisplayedDate(\n // Beginning of the month, 90 days before today\n startOfMonth(subDays(startOfToday(), 90)),\n startOfToday(),\n )\n\n setFilter({ ...filter, custom: incomeFilter })\n\n setStep(3)\n }\n\n const handleAddIncome = async () => {\n if (selectedTransactions.length < 1) {\n return\n }\n setIsSubmitting(true)\n\n // Create Repeating Transactions\n for (let i = 0; i < selectedTransactions.length; i++) {\n const upcomingTransaction = selectedTransactions[i]\n\n const nextDate = getNextPaymentDate(frequency, fromUnixTime(upcomingTransaction.date))\n\n const repeatingTransaction = {\n account_guid: upcomingTransaction.account_guid,\n amount: upcomingTransaction.amount,\n created_by: 0, //user\n merchant_guid: upcomingTransaction.merchant_guid,\n description: upcomingTransaction.feed_description || upcomingTransaction.description,\n predicted_occurs_on: formatISO(nextDate, { representation: 'date' }),\n recurrence_day: nextDate.getDay(),\n recurrence_type: frequency,\n repeating_transaction_type: RepeatingType.Income,\n second_recurrence_day: secondDay,\n transaction_type: upcomingTransaction.transaction_type,\n user_guid: user.guid,\n } as RepeatingTransaction\n\n await addRepeatingTransaction(repeatingTransaction, upcomingTransaction)\n }\n await completeOnboarding()\n }\n\n const showSelectIncome =\n (!transaction && addIncome) || (!transaction && selectedTransactions.length < 1)\n\n if (!isCopyLoaded) {\n return <Loader />\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: !isMobile ? 'center' : 'flex-start',\n backgroundColor: theme.palette.background.paper,\n backgroundImage: !isMobile ? `url(${CASHFLOW_IMAGES.CASHFLOW_ONBOARDING})` : null,\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'left 100px',\n backgroundSize: '35%',\n py: 24,\n }}\n >\n {step === 1 && (\n <Box\n sx={{\n ...(isMobile\n ? { display: 'flex', flexDirection: 'column', maxWidth: '100%', padding: '0 16px' }\n : { maxWidth: 590, ml: '40%', mr: 90 }),\n }}\n >\n <StepOne handleNextStep={handleGetTransactions} />\n </Box>\n )}\n {step === 2 && (\n <Box\n sx={{\n ...(isMobile\n ? { display: 'flex', flexDirection: 'column', maxWidth: '100%', padding: '0 16px' }\n : { maxWidth: 590, ml: '40%', mr: 90 }),\n }}\n >\n <StepTwo />\n </Box>\n )}\n {step === 3 && (\n <Box\n sx={{\n ...(isMobile\n ? { display: 'flex', flexDirection: 'column', maxWidth: '100%', padding: '0 16px' }\n : { maxWidth: 590, ml: '40%', mr: 90 }),\n }}\n >\n <H2 pb={12} variant=\"h1\">\n {customCopy.add_income_title}\n </H2>\n <P mb={24}>{customCopy.add_income_description}</P>\n\n {selectedTransactions.length > 0 && !transaction && (\n <>\n <List>\n {selectedTransactions.map((transaction, index) => {\n return (\n <React.Fragment key={transaction.guid}>\n <SubheaderRow bgcolor=\"background.paper\">\n {fromUnixToDayOfWeekAndDate(\n getUnixTime(transaction.nextDate || transaction.date),\n )}\n </SubheaderRow>\n <TransactionRow transaction={transaction} />\n {index !== selectedTransactions.length - 1 && <Divider />}\n </React.Fragment>\n )\n })}\n </List>\n <Stack alignItems=\"center\" direction=\"row\">\n <Divider sx={{ flexGrow: 1 }} />\n <Button\n onClick={() => setAddIncome(true)}\n startIcon={<Icon name=\"add\" size={20} />}\n >\n {customCopy.add_income}\n </Button>\n </Stack>\n </>\n )}\n\n {showSelectIncome && (\n <SelectTransaction\n bgcolor=\"background.paper\"\n onSearch={(searchValue) =>\n setFilter({\n ...filter,\n custom: (transaction: Transaction) =>\n searchValue\n ? incomeFilterSearch(transaction, searchValue)\n : incomeFilter(transaction),\n })\n }\n onSelected={(guid) => {\n setTransactionGuid(guid)\n setAddIncome(false)\n }}\n />\n )}\n\n {!canSubmit && isDirty && (\n <P color=\"error\" mt={16}>\n {customCopy.confirm_error}\n </P>\n )}\n\n {transaction && (\n <>\n <AddRecurringTransactionDetails\n bgcolor=\"background.paper\"\n firstDay={firstDay}\n frequency={frequency}\n onFirstDayChange={setFirstDay}\n onFrequencyChange={setFrequency}\n onSecondDayChange={setSecondDay}\n secondDay={secondDay}\n transaction={transaction}\n />\n <Stack direction=\"row\" gap={16} ml={24} mt={32}>\n <Button\n aria-disabled={!transaction}\n onClick={() => {\n const updatedTransactions = [...selectedTransactions]\n updatedTransactions.push({\n ...transaction,\n nextDate: getNextPaymentDate(frequency, fromUnixTime(transaction.date)),\n frequency,\n })\n\n setSelectedTransactions(updatedTransactions)\n setTransactionGuid('')\n }}\n variant=\"contained\"\n >\n {commonCopy.confirm_button}\n </Button>\n <Button\n onClick={() => {\n setTransactionGuid('')\n setAddIncome(true)\n handleGetTransactions().finally()\n }}\n variant=\"outlined\"\n >\n {commonCopy.cancel_button}\n </Button>\n </Stack>\n </>\n )}\n\n {selectedTransactions.length > 0 && !transaction && (\n <Stack direction=\"row\" gap={16} ml={24} mt={32}>\n <Button\n aria-disabled={selectedTransactions.length < 1 || isSubmitting}\n onClick={handleAddIncome}\n startIcon={\n isSubmitting ? (\n <Icon\n name=\"progress_activity\"\n sx={{\n animation: `${spin} 2s linear infinite`,\n }}\n />\n ) : null\n }\n variant=\"contained\"\n >\n {customCopy.confirm_income_button}\n </Button>\n <Button onClick={completeOnboarding} variant=\"outlined\">\n {customCopy.skip_button}\n </Button>\n </Stack>\n )}\n </Box>\n )}\n </Box>\n )\n}\n\nexport default observer(CashflowOnboarding)\n"],"names":["useCashflowUiStore","React","GlobalDataContext","useCashflowStore","RemainingCash","remaining","customCopy","useGlobalCopyStore","jsxs","Fragment","jsx","Box","Text","CurrencyText","RemainingCash$1","observer","CashflowWidgetContent","theme","useTheme","availableWidth","useWidgetContainerProvider","isMobile","useScreenSize","cashAccounts","cashBalance","useAccountStore","selectedAccountGuids","useGlobalUiStore","daysUntilNextIncome","expensesTilNextIncome","selectedCashAccounts","setNextIncome","setSelectedCashAccounts","setUpcomingExpenses","isDataLoaded","nextIncomeRecurrence","upcomingExpenses","useRecurringTransactionsStore","account","filteredCashBalance","total","filteredExpenseTotal","expense","acc","curr","availableToSpend","Stack","P","buildDynamicCopy","Icon","InformationTooltip","Divider","Loader","CashflowWidgetContent$1","CashflowMiniWidget","onPrimaryCtaClick","onSecondaryCtaClick","sx","copy","isInitialized","loadRepeatingTransactionData","income","setDateRange","startOfToday","addMonths","useWidgetLoadTimer","showEmptyState","MiniWidgetContainer","EmptyState","CashflowMiniWidget_default","DetailsFooter","ListItem","ExpenseType","DetailsExpenseRow","recurrence","formatDate","DATE_FORMATS_INTL","DetailsExpenseRow$1","DetailsExpenseHeader","type","ListSubheader","formatCurrency","DetailsExpenseHeader$1","recurrenceFilter","dateRange","r","isToday","isAfter","isBefore","DetailsTab","upcomingIncome","upcomingIncomeByAccount","a","b","getUnixTime","projectedExpensesByAccount","incomeTotal","expenseTotal","List","AccountListItem","DetailsTab$1","SummaryTab","columns","name","nickname","institution_guid","account_number","accountName","InstitutionLogo","params","rows","totalprojectedExpenses","addDays","totalProjectedIncome","DataGridPro","alpha","row","SummaryTab$1","CashflowContent","isDesktop","onEvent","useEvent","value","setValue","handleChange","_event","newValue","Tabs","Tab","TabContentContainer","CashflowContent$1","CashflowAmountHeading","amount","isTotal","label","symbol","tooltip","recurrenceAccountFilter","accountGuids","CashflowHeading","isOpen","setIsOpen","filteredExpenses","filteredIncome","totalUpcomingExpenses","totalUpcomingIncome","hasRecurringIncome","Button","Drawer","ManageIncome","CashflowHeading$1","CashflowWidget","onBackClick","onMenuClick","selectedAccounts","shouldDisableNextDate","shouldDisablePrevDate","clientConfig","useAppConfig","setFilter","useTransactionStore","recurringCopy","isManageIncomeView","isSettingsOpen","setIsSettingsOpen","cashAccountGuids","selAccts","subDays","endOfToday","WidgetContainer","ANALYTICS_EVENTS","AccountType","RecurringSettings","CashflowWidget_default","StepOne","handleNextStep","completeOnboarding","H2","H3","StepOne$1","ASSETS_URL","CASHFLOW_IMAGES","StepTwo","StepTwo$1","spin","keyframes","CashflowOnboarding","addRepeatingTransaction","repeatingTransactions","commonCopy","user","useUserStore","isDirty","isCopyLoaded","setDisplayedDate","filter","transactions","addIncome","setAddIncome","useState","frequency","setFrequency","Frequency","firstDay","setFirstDay","secondDay","setSecondDay","isSubmitting","setIsSubmitting","step","setStep","selectedTransactions","setSelectedTransactions","transactionGuid","setTransactionGuid","transaction","t","canSubmit","RepeatingType","handleGetTransactions","startOfMonth","incomeFilter","handleAddIncome","i","upcomingTransaction","nextDate","getNextPaymentDate","fromUnixTime","repeatingTransaction","formatISO","showSelectIncome","index","SubheaderRow","fromUnixToDayOfWeekAndDate","TransactionRow","SelectTransaction","searchValue","incomeFilterSearch","guid","AddRecurringTransactionDetails","updatedTransactions","CashflowOnboarding_default"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { C as a, a as o, b as t, u as s } from "../CategorySelectorDrawer-NJsFsKP1.mjs";
|
|
2
2
|
export {
|
|
3
3
|
a as CategoryRow,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
o as CategorySelector,
|
|
5
|
+
t as CategorySelectorDrawer,
|
|
6
|
+
s as useCategoryUiStore
|
|
7
7
|
};
|
|
8
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
1
|
+
import { default as React, ElementType } from 'react';
|
|
2
2
|
import { SxProps } from '@mui/material/styles';
|
|
3
3
|
interface ListItemWrapperProps {
|
|
4
4
|
clickEventName?: string;
|
|
5
|
+
component?: ElementType;
|
|
5
6
|
onClick?: () => void;
|
|
6
7
|
sx?: SxProps;
|
|
7
8
|
}
|
|
@@ -75,6 +75,9 @@ export declare const ANALYTICS_EVENTS: {
|
|
|
75
75
|
RECURRING_TRANSACTIONS_CLICK_UPCOMING: string;
|
|
76
76
|
RECURRING_TRANSACTIONS_DETAILS_CLICK_DELETE: string;
|
|
77
77
|
RECURRING_TRANSACTIONS_DETAILS_CLICK_PAYMENT_SCHEDULE: string;
|
|
78
|
+
RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_PAID: string;
|
|
79
|
+
RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_UNPAID: string;
|
|
80
|
+
RECURRING_TRANSACTIONS_LIST_CLICK_MORE_MENU: string;
|
|
78
81
|
RECURRING_TRANSACTIONS_MICRO_WIDGET_CTA: string;
|
|
79
82
|
SPENDING_CLICK_FILTER: string;
|
|
80
83
|
SPENDING_VIEW: string;
|