@mx-cartographer/experiences 9.1.0-alpha.bb1 → 9.1.1
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 +80 -0
- package/README.md +10 -10
- package/dist/Account-DR7Plrqy.mjs +119 -0
- package/dist/Account-DR7Plrqy.mjs.map +1 -0
- package/dist/AccountDetailsDrawer-C1hhmlmI.mjs +922 -0
- package/dist/AccountDetailsDrawer-C1hhmlmI.mjs.map +1 -0
- package/dist/AccountDetailsHeader-BliEZhz7.mjs +230 -0
- package/dist/AccountDetailsHeader-BliEZhz7.mjs.map +1 -0
- package/dist/AccountUtils-Cbh8r9cP.mjs +29 -0
- package/dist/AccountUtils-Cbh8r9cP.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-Be9WHv-s.mjs +906 -0
- package/dist/ManageIncome-Be9WHv-s.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-Dj7CgAg2.mjs +96 -0
- package/dist/NetWorthUtils-Dj7CgAg2.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-kRqAViNn.mjs +89 -0
- package/dist/RecurringSettings-kRqAViNn.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-BjnNCO5a.mjs +3121 -0
- package/dist/UserStore-BjnNCO5a.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/context/hooks.d.ts +7 -6
- package/dist/cashflow/index.es.js +944 -1076
- 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/CashflowStore.d.ts +8 -7
- package/dist/core/stores/RecurringTransactionsStore.d.ts +53 -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/AccountUtils.d.ts +8 -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
|
@@ -7,19 +7,20 @@ export declare class CashflowStore {
|
|
|
7
7
|
completeOnboarding: () => Promise<void>;
|
|
8
8
|
}
|
|
9
9
|
declare class UiStore {
|
|
10
|
+
globalStore: GlobalStore;
|
|
10
11
|
dateRange: {
|
|
11
12
|
start: Date;
|
|
12
13
|
end: Date;
|
|
13
14
|
};
|
|
14
15
|
isDirty: boolean;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
constructor(globalStore: GlobalStore);
|
|
17
|
+
get income(): Recurrence[];
|
|
18
|
+
get upcomingIncome(): Recurrence[];
|
|
19
|
+
get upcomingExpenses(): Recurrence[];
|
|
20
|
+
get nextIncome(): Recurrence | undefined;
|
|
21
|
+
get selectedCashAccounts(): Account[];
|
|
22
|
+
get selectedCashBalance(): number;
|
|
19
23
|
get daysUntilNextIncome(): number;
|
|
20
24
|
get expensesTilNextIncome(): Recurrence[];
|
|
21
|
-
setNextIncome: (nextIncome: Recurrence) => void;
|
|
22
|
-
setUpcomingExpenses: (expenses: Recurrence[]) => void;
|
|
23
|
-
setSelectedCashAccounts: (accounts: Account[]) => Account[];
|
|
24
25
|
}
|
|
25
26
|
export {};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import { AlertProps } from '@mui/material';
|
|
1
2
|
import { RepeatingTransactionsApi } from '../api';
|
|
2
|
-
import { Recurrence, RepeatingTransaction, Transaction, DateRange } from '../types';
|
|
3
|
+
import { Recurrence, RecurringCopy, RepeatingTransaction, Transaction, DateRange } from '../types';
|
|
3
4
|
import { GlobalStore } from './GlobalStore';
|
|
5
|
+
interface RecurringAlertProps {
|
|
6
|
+
message: string;
|
|
7
|
+
severity: AlertProps['severity'];
|
|
8
|
+
}
|
|
4
9
|
export declare class RecurringTransactionsStore {
|
|
5
10
|
globalStore: GlobalStore;
|
|
6
11
|
api: RepeatingTransactionsApi;
|
|
@@ -8,8 +13,36 @@ export declare class RecurringTransactionsStore {
|
|
|
8
13
|
isDataLoaded: boolean;
|
|
9
14
|
selectedDay: Date | undefined;
|
|
10
15
|
dateRange: DateRange;
|
|
16
|
+
selectedRepeatingTransactionGuid: string | null;
|
|
17
|
+
selectedRecurrence: Recurrence | null;
|
|
18
|
+
alert: RecurringAlertProps;
|
|
11
19
|
constructor(globalStore: GlobalStore);
|
|
20
|
+
get copy(): RecurringCopy;
|
|
12
21
|
get detailedRepeatingTransactions(): RepeatingTransaction[];
|
|
22
|
+
/**
|
|
23
|
+
* Returns all recurrences built from repeating transactions and filtered by
|
|
24
|
+
* accounts, scoped to the supplied date range. This is the range-parameterized
|
|
25
|
+
* core used by both the shared getters (which pass this.dateRange) and by
|
|
26
|
+
* consumers such as Cash Flow that need their own independent window without
|
|
27
|
+
* mutating the shared dateRange.
|
|
28
|
+
*/
|
|
29
|
+
recurrencesForRange: (dateRange: DateRange) => Recurrence[];
|
|
30
|
+
/**
|
|
31
|
+
* Returns the upcoming expense recurrences scoped to the supplied date range.
|
|
32
|
+
*/
|
|
33
|
+
upcomingExpensesForRange: (dateRange: DateRange) => Recurrence[];
|
|
34
|
+
/**
|
|
35
|
+
* Returns the income recurrences scoped to the supplied date range.
|
|
36
|
+
*/
|
|
37
|
+
incomeForRange: (dateRange: DateRange) => Recurrence[];
|
|
38
|
+
/**
|
|
39
|
+
* Returns the upcoming income recurrences scoped to the supplied date range.
|
|
40
|
+
*/
|
|
41
|
+
upcomingIncomeForRange: (dateRange: DateRange) => Recurrence[];
|
|
42
|
+
/**
|
|
43
|
+
* Returns the next upcoming income recurrence scoped to the supplied range.
|
|
44
|
+
*/
|
|
45
|
+
nextIncomeForRange: (dateRange: DateRange) => Recurrence | undefined;
|
|
13
46
|
/**
|
|
14
47
|
* Returns all recurrences built from repeating transactions and filtered by accounts.
|
|
15
48
|
*/
|
|
@@ -80,6 +113,9 @@ export declare class RecurringTransactionsStore {
|
|
|
80
113
|
* Get the recurrences for the currently selected day.
|
|
81
114
|
*/
|
|
82
115
|
get selectedDayRecurrences(): Recurrence[] | undefined;
|
|
116
|
+
get selectedRepeatingTransaction(): RepeatingTransaction | undefined;
|
|
117
|
+
setSelectedRepeatingTransactionGuid: (guid: string | null) => string | null;
|
|
118
|
+
setSelectedRecurrence: (recurrence: Recurrence | null) => Recurrence | null;
|
|
83
119
|
setRepeatingTransactions: (repeating: RepeatingTransaction[]) => void;
|
|
84
120
|
/**
|
|
85
121
|
* Set the date range for filtering recurrences.
|
|
@@ -112,4 +148,20 @@ export declare class RecurringTransactionsStore {
|
|
|
112
148
|
* @param transaction - The repeating transaction to update.
|
|
113
149
|
*/
|
|
114
150
|
updateRepeatingTransaction: (transaction: RepeatingTransaction) => Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* Mark a recurrence as paid by linking a transaction to the repeating transaction.
|
|
153
|
+
* @param repeatingTransactionGuid - The GUID of the repeating transaction.
|
|
154
|
+
* @param transaction - The transaction to link.
|
|
155
|
+
*/
|
|
156
|
+
markRecurrenceAsPaid: (repeatingTransactionGuid: string, transaction: Transaction) => Promise<void>;
|
|
157
|
+
/**
|
|
158
|
+
* Mark a recurrence as unpaid by unlinking the associated transaction from the repeating transaction.
|
|
159
|
+
* @param transaction - The transaction to unlink.
|
|
160
|
+
*/
|
|
161
|
+
markRecurrenceAsUnpaid: (transaction: Transaction) => Promise<void>;
|
|
162
|
+
setAlert: (message: string, severity?: RecurringAlertProps["severity"]) => {
|
|
163
|
+
message: string;
|
|
164
|
+
severity: import('@mui/types').OverridableStringUnion<import('@mui/material').AlertColor, import('@mui/material').AlertPropsColorOverrides> | undefined;
|
|
165
|
+
};
|
|
115
166
|
}
|
|
167
|
+
export {};
|
|
@@ -31,6 +31,7 @@ export declare class TransactionStore {
|
|
|
31
31
|
transactionRules: TransactionRule[];
|
|
32
32
|
transactionRulesLoaded: boolean;
|
|
33
33
|
transactionRulesLoading: boolean;
|
|
34
|
+
transactionSplitting: boolean;
|
|
34
35
|
cachedStartDate: Date;
|
|
35
36
|
filter: TransactionFilter;
|
|
36
37
|
isLoading: boolean;
|
|
@@ -50,8 +50,17 @@ export interface RecurringCopy {
|
|
|
50
50
|
income_details: string;
|
|
51
51
|
income_schedule: string;
|
|
52
52
|
last_day_of_month: string;
|
|
53
|
+
link_transaction_button: string;
|
|
54
|
+
link_transaction_description: string;
|
|
55
|
+
link_transaction_error: string;
|
|
56
|
+
link_transaction_success: string;
|
|
53
57
|
manage_expenses: string;
|
|
58
|
+
more_menu_aria: string;
|
|
54
59
|
manage_income: string;
|
|
60
|
+
mark_as_paid_cta: string;
|
|
61
|
+
mark_as_paid_dialog_title: string;
|
|
62
|
+
mark_as_unpaid_cta: string;
|
|
63
|
+
mark_as_unpaid_dialog_title: string;
|
|
55
64
|
mini_title: string;
|
|
56
65
|
missed: string;
|
|
57
66
|
missed_on: string;
|
|
@@ -63,8 +72,8 @@ export interface RecurringCopy {
|
|
|
63
72
|
paid: string;
|
|
64
73
|
paid_activity: string;
|
|
65
74
|
paid_on: string;
|
|
66
|
-
paid_transactions: string;
|
|
67
75
|
past: string;
|
|
76
|
+
past_activity: string;
|
|
68
77
|
past_transactions: string;
|
|
69
78
|
payment_schedule: string;
|
|
70
79
|
primary_cta: string;
|
|
@@ -93,6 +102,10 @@ export interface RecurringCopy {
|
|
|
93
102
|
twice_a_month_ordinal: string;
|
|
94
103
|
transaction_details_drawer_title: string;
|
|
95
104
|
upcoming: string;
|
|
105
|
+
unlink_transaction_button: string;
|
|
106
|
+
unlink_transaction_description: string;
|
|
107
|
+
unlink_transaction_error: string;
|
|
108
|
+
unlink_transaction_success: string;
|
|
96
109
|
upcoming_activity: string;
|
|
97
110
|
upcoming_on: string;
|
|
98
111
|
unknown: string;
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { Account, DetailedAccount, Institution, Member } from '../';
|
|
2
2
|
export declare const isAccountLiability: (account: Account) => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Returns the balance to use as an account's spendable / starting balance.
|
|
5
|
+
* For checking/savings accounts it uses available_balance when present and
|
|
6
|
+
* enabled via config, otherwise the current balance. All other account types
|
|
7
|
+
* use the current balance. Single source of truth shared by the Accounts,
|
|
8
|
+
* Financial Strength, and Cash Flow experiences.
|
|
9
|
+
*/
|
|
10
|
+
export declare const getAccountStartingBalance: (account: Account, showAvailableBalance: boolean) => number;
|
|
3
11
|
export declare const isManual: (account: Account) => boolean;
|
|
4
12
|
export declare const usesCreditLimitField: (account: Account) => boolean;
|
|
5
13
|
export declare const usesInterestRateField: (account: Account) => boolean;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare const getNextWeeklyDate: (date: Date) => Date;
|
|
2
2
|
export declare const getNextBiWeeklyDate: (date: Date) => Date;
|
|
3
|
+
export declare const getTwiceMonthlyDates: (day1: number, day2: number) => Date[];
|
|
4
|
+
export declare const getNextTwiceMonthlyDate: (day1: number, day2: number) => Date;
|
|
3
5
|
export declare const getNextMonthlyDate: (date: Date) => Date;
|
|
4
6
|
export declare const getNextBiMonthlyDate: (date: Date) => Date;
|
|
5
7
|
export declare const getNextQuarterlyDate: (date: Date) => Date;
|
|
@@ -9,4 +9,5 @@ export declare const buildAllRecurrences: (repeatingTransactions: RepeatingTrans
|
|
|
9
9
|
export declare const augmentRepeatingTransactions: (accounts: Account[], repeatingTransactions: RepeatingTransaction[], transactions: Transaction[]) => RepeatingTransaction[];
|
|
10
10
|
export declare const groupRecurrencesByDate: (recurrences: Recurrence[]) => GroupedRecurrence[];
|
|
11
11
|
export declare const getFrequencyLabel: (copy: RecurringCopy, repeatingTransaction: RepeatingTransaction, showOrdinal: boolean) => string;
|
|
12
|
-
export declare const getNextPaymentDate: (frequency: Frequency, date: Date, recurrenceDay?: number) => Date;
|
|
12
|
+
export declare const getNextPaymentDate: (frequency: Frequency, date: Date, recurrenceDay?: number, secondRecurrenceDay?: number) => Date;
|
|
13
|
+
export declare const getNextUpcomingDate: (recurringTransaction: RepeatingTransaction, recurrences: Recurrence[]) => Date;
|
|
@@ -1,198 +1,155 @@
|
|
|
1
|
-
import { Hn as y, Kn as S, mr as x } from "../accounts-DkyAiLpg.mjs";
|
|
2
|
-
import { n as M } from "../Analytics-BKzTPees.mjs";
|
|
3
|
-
import { i as C, m as v, p as b } from "../Loader-BlVzRtUd.mjs";
|
|
4
|
-
import i from "react";
|
|
5
|
-
import { observer as u } from "mobx-react-lite";
|
|
6
|
-
import a from "@mui/material/Stack";
|
|
7
|
-
import { H2 as D, Icon as _, P as z } from "@mxenabled/mxui";
|
|
8
|
-
import G from "@mui/material/Button";
|
|
9
|
-
import W from "@mui/material/Paper";
|
|
10
1
|
import { jsx as e, jsxs as c } from "react/jsx-runtime";
|
|
11
|
-
import
|
|
12
|
-
import
|
|
2
|
+
import o from "react";
|
|
3
|
+
import { observer as p } from "mobx-react-lite";
|
|
4
|
+
import u from "@mui/material/Grid";
|
|
5
|
+
import m from "@mui/material/Skeleton";
|
|
6
|
+
import s from "@mui/material/Stack";
|
|
7
|
+
import { useTheme as S } from "@mui/material/styles";
|
|
8
|
+
import { e as w, u as b, i as v } from "../hooks-97sNJ_lf.mjs";
|
|
9
|
+
import C from "@mui/material/Paper";
|
|
10
|
+
import { Icon as _, H2 as M, P as D } from "@mxenabled/mxui";
|
|
11
|
+
import { useMediaQuery as G } from "@mui/system";
|
|
12
|
+
import z from "@mui/material/Box";
|
|
13
|
+
import W from "@mui/material/Button";
|
|
14
|
+
import k from "@mui/material/IconButton";
|
|
15
|
+
import A from "@mui/material/Tooltip";
|
|
13
16
|
import I from "@mui/material/useMediaQuery";
|
|
14
|
-
import B from "
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
17
|
+
import { G as B } from "../GlobalAccountFilter-BhzR5Vb1.mjs";
|
|
18
|
+
import { u as y } from "../useScreenSize-mWpmnh5w.mjs";
|
|
19
|
+
import { C as F } from "../ConnectDrawer-CW4LA3H3.mjs";
|
|
20
|
+
import { u as R } from "../useWidgetLoadTimer-B0tB-yzL.mjs";
|
|
21
|
+
const T = p(() => {
|
|
22
|
+
const t = S(), {
|
|
23
|
+
appDataStore: { banner: r, loadBanner: i, user: a }
|
|
24
|
+
} = w();
|
|
25
|
+
return o.useEffect(() => {
|
|
26
|
+
i().finally();
|
|
27
|
+
}, [a]), r?.image_url ? /* @__PURE__ */ e(
|
|
28
|
+
s,
|
|
29
|
+
{
|
|
30
|
+
sx: {
|
|
31
|
+
alignItems: "center",
|
|
32
|
+
width: "100%",
|
|
33
|
+
mb: 24
|
|
34
|
+
},
|
|
35
|
+
children: /* @__PURE__ */ e(
|
|
36
|
+
"a",
|
|
37
|
+
{
|
|
38
|
+
href: r?.redirect_url,
|
|
39
|
+
rel: "noreferrer",
|
|
40
|
+
style: {
|
|
41
|
+
width: "100%"
|
|
42
|
+
},
|
|
43
|
+
target: "_blank",
|
|
44
|
+
children: /* @__PURE__ */ e(
|
|
45
|
+
"img",
|
|
46
|
+
{
|
|
47
|
+
alt: "",
|
|
48
|
+
src: r.image_url,
|
|
49
|
+
style: {
|
|
50
|
+
width: "100%",
|
|
51
|
+
height: "auto",
|
|
52
|
+
border: `1px solid ${t.palette.grey[300]}`
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
)
|
|
41
56
|
}
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
}),
|
|
46
|
-
const { common:
|
|
47
|
-
return /* @__PURE__ */ e(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
title: n.add_accounts,
|
|
51
|
-
children: /* @__PURE__ */ e(B, {
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
) : null;
|
|
60
|
+
}), $ = ({ handleConnectClick: t }) => {
|
|
61
|
+
const { common: r } = b(), i = I("(max-width: 700px)");
|
|
62
|
+
return /* @__PURE__ */ e(z, { children: i ? /* @__PURE__ */ e(A, { id: "add-accounts", placement: "bottom", title: r.add_accounts, children: /* @__PURE__ */ e(
|
|
63
|
+
k,
|
|
64
|
+
{
|
|
52
65
|
"aria-controls": "add_accounts",
|
|
53
66
|
"aria-describedby": "add-accounts",
|
|
54
67
|
"aria-haspopup": !0,
|
|
55
|
-
"aria-label":
|
|
68
|
+
"aria-label": r.add_accounts,
|
|
56
69
|
color: "primary",
|
|
57
70
|
onClick: t,
|
|
58
|
-
children: /* @__PURE__ */ e(_, {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const [t, n] = i.useState(!1), s = R("(max-width:320px)"), { common: o, connect: h } = b(), { config: d } = C(), { isMobile: p } = x(), g = () => {
|
|
82
|
-
const r = (/* @__PURE__ */ new Date()).getHours();
|
|
83
|
-
return r > 1 && r < 12 ? o.good_morning : r >= 12 && r < 18 ? o.good_afternoon : o.good_evening;
|
|
71
|
+
children: /* @__PURE__ */ e(_, { name: "add", size: 24 })
|
|
72
|
+
}
|
|
73
|
+
) }) : /* @__PURE__ */ e(
|
|
74
|
+
W,
|
|
75
|
+
{
|
|
76
|
+
"aria-controls": "add_accounts",
|
|
77
|
+
"aria-haspopup": !0,
|
|
78
|
+
"aria-label": r.add_accounts,
|
|
79
|
+
onClick: t,
|
|
80
|
+
startIcon: /* @__PURE__ */ e(_, { name: "add", size: 24 }),
|
|
81
|
+
sx: {
|
|
82
|
+
p: 12,
|
|
83
|
+
whiteSpace: "nowrap",
|
|
84
|
+
minWidth: "max-content"
|
|
85
|
+
},
|
|
86
|
+
variant: "text",
|
|
87
|
+
children: r.add_accounts
|
|
88
|
+
}
|
|
89
|
+
) });
|
|
90
|
+
}, j = p($), Q = () => {
|
|
91
|
+
const [t, r] = o.useState(!1), i = G("(max-width:320px)"), { common: a, connect: g } = b(), { config: d } = v(), { isMobile: f } = y(), x = () => {
|
|
92
|
+
const l = (/* @__PURE__ */ new Date()).getHours();
|
|
93
|
+
return l > 1 && l < 12 ? a.good_morning : l >= 12 && l < 18 ? a.good_afternoon : a.good_evening;
|
|
84
94
|
};
|
|
85
|
-
return /* @__PURE__ */ c(
|
|
86
|
-
sx: {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
})] });
|
|
111
|
-
}, P = u(T), f = /* @__PURE__ */ (function(t) {
|
|
112
|
-
return t[t.Main = 0] = "Main", t[t.RightSide = 1] = "RightSide", t[t.Disabled = 2] = "Disabled", t;
|
|
113
|
-
})({}), $ = ({ widgets: t, isLoading: n }) => {
|
|
114
|
-
const { isDesktop: s, isMobile: o } = x(), { copyStore: h } = v();
|
|
115
|
-
M({
|
|
95
|
+
return /* @__PURE__ */ c(o.Fragment, { children: [
|
|
96
|
+
/* @__PURE__ */ e(C, { sx: { gap: 12, mb: f ? 24 : 0, p: 24 }, children: /* @__PURE__ */ c(s, { alignItems: "center", flexDirection: "row", justifyContent: "space-between", children: [
|
|
97
|
+
/* @__PURE__ */ c(s, { children: [
|
|
98
|
+
/* @__PURE__ */ e(M, { variant: i ? "h2" : "h1", children: x() }),
|
|
99
|
+
/* @__PURE__ */ e(D, { color: "text.secondary", children: a.heres_your_spending_overview })
|
|
100
|
+
] }),
|
|
101
|
+
/* @__PURE__ */ c(s, { flexDirection: "row", children: [
|
|
102
|
+
d.show_connections_widget_in_master && /* @__PURE__ */ e(j, { handleConnectClick: () => r(!0) }),
|
|
103
|
+
/* @__PURE__ */ e(B, {})
|
|
104
|
+
] })
|
|
105
|
+
] }) }),
|
|
106
|
+
t && /* @__PURE__ */ e(
|
|
107
|
+
F,
|
|
108
|
+
{
|
|
109
|
+
onClose: () => r(!1),
|
|
110
|
+
showConnectWidget: t,
|
|
111
|
+
title: g.mini_title
|
|
112
|
+
}
|
|
113
|
+
)
|
|
114
|
+
] });
|
|
115
|
+
}, H = p(Q);
|
|
116
|
+
var h = /* @__PURE__ */ ((t) => (t[t.Main = 0] = "Main", t[t.RightSide = 1] = "RightSide", t[t.Disabled = 2] = "Disabled", t))(h || {});
|
|
117
|
+
const P = ({ widgets: t, isLoading: r }) => {
|
|
118
|
+
const { isDesktop: i, isMobile: a } = y(), { copyStore: g } = w();
|
|
119
|
+
R({
|
|
116
120
|
widgetName: "Dashboard",
|
|
117
|
-
isLoaded: !
|
|
118
|
-
});
|
|
119
|
-
const d = i.useMemo(() => t.filter((r) => r.location !== f.Disabled).sort((r, w) => r.index - w.index), [t]), p = i.useMemo(() => d.filter((r) => r.location === f.Main), [d]), g = i.useMemo(() => d.filter((r) => r.location === f.RightSide), [d]);
|
|
120
|
-
return /* @__PURE__ */ c(m, {
|
|
121
|
-
container: !0,
|
|
122
|
-
spacing: o ? 0 : 24,
|
|
123
|
-
children: [
|
|
124
|
-
/* @__PURE__ */ e(m, {
|
|
125
|
-
size: 12,
|
|
126
|
-
sx: { pt: 16 },
|
|
127
|
-
children: h.isInitialized && /* @__PURE__ */ e(P, {})
|
|
128
|
-
}),
|
|
129
|
-
/* @__PURE__ */ c(m, {
|
|
130
|
-
size: {
|
|
131
|
-
xs: 12,
|
|
132
|
-
lg: 8
|
|
133
|
-
},
|
|
134
|
-
children: [
|
|
135
|
-
/* @__PURE__ */ e(j, {}),
|
|
136
|
-
n && /* @__PURE__ */ c(a, {
|
|
137
|
-
direction: "column",
|
|
138
|
-
spacing: 24,
|
|
139
|
-
children: [
|
|
140
|
-
/* @__PURE__ */ e(l, {
|
|
141
|
-
height: 100,
|
|
142
|
-
variant: "rounded",
|
|
143
|
-
width: "100%"
|
|
144
|
-
}),
|
|
145
|
-
/* @__PURE__ */ e(l, {
|
|
146
|
-
height: 300,
|
|
147
|
-
variant: "rounded",
|
|
148
|
-
width: "100%"
|
|
149
|
-
}),
|
|
150
|
-
/* @__PURE__ */ e(l, {
|
|
151
|
-
height: 300,
|
|
152
|
-
variant: "rounded",
|
|
153
|
-
width: "100%"
|
|
154
|
-
})
|
|
155
|
-
]
|
|
156
|
-
}),
|
|
157
|
-
!n && /* @__PURE__ */ e(a, {
|
|
158
|
-
direction: "column",
|
|
159
|
-
spacing: 24,
|
|
160
|
-
children: s ? p.map((r) => /* @__PURE__ */ e(i.Fragment, { children: r.component }, r.index)) : d.map((r) => /* @__PURE__ */ e(i.Fragment, { children: r.component }, r.index))
|
|
161
|
-
})
|
|
162
|
-
]
|
|
163
|
-
}),
|
|
164
|
-
s && /* @__PURE__ */ e(m, {
|
|
165
|
-
size: { lg: 4 },
|
|
166
|
-
children: n ? /* @__PURE__ */ c(a, {
|
|
167
|
-
direction: "column",
|
|
168
|
-
spacing: 24,
|
|
169
|
-
children: [
|
|
170
|
-
/* @__PURE__ */ e(l, {
|
|
171
|
-
height: 200,
|
|
172
|
-
variant: "rounded",
|
|
173
|
-
width: "100%"
|
|
174
|
-
}),
|
|
175
|
-
/* @__PURE__ */ e(l, {
|
|
176
|
-
height: 100,
|
|
177
|
-
variant: "rounded",
|
|
178
|
-
width: "100%"
|
|
179
|
-
}),
|
|
180
|
-
/* @__PURE__ */ e(l, {
|
|
181
|
-
height: 300,
|
|
182
|
-
variant: "rounded",
|
|
183
|
-
width: "100%"
|
|
184
|
-
})
|
|
185
|
-
]
|
|
186
|
-
}) : /* @__PURE__ */ e(a, {
|
|
187
|
-
direction: "column",
|
|
188
|
-
spacing: 24,
|
|
189
|
-
children: g.map((r) => /* @__PURE__ */ e(i.Fragment, { children: r.component }, r.index))
|
|
190
|
-
})
|
|
191
|
-
})
|
|
192
|
-
]
|
|
121
|
+
isLoaded: !r
|
|
193
122
|
});
|
|
194
|
-
|
|
123
|
+
const d = o.useMemo(
|
|
124
|
+
() => t.filter((n) => n.location !== h.Disabled).sort((n, l) => n.index - l.index),
|
|
125
|
+
[t]
|
|
126
|
+
), f = o.useMemo(
|
|
127
|
+
() => d.filter((n) => n.location === h.Main),
|
|
128
|
+
[d]
|
|
129
|
+
), x = o.useMemo(
|
|
130
|
+
() => d.filter((n) => n.location === h.RightSide),
|
|
131
|
+
[d]
|
|
132
|
+
);
|
|
133
|
+
return /* @__PURE__ */ c(u, { container: !0, spacing: a ? 0 : 24, children: [
|
|
134
|
+
/* @__PURE__ */ e(u, { size: 12, sx: { pt: 16 }, children: g.isInitialized && /* @__PURE__ */ e(H, {}) }),
|
|
135
|
+
/* @__PURE__ */ c(u, { size: { xs: 12, lg: 8 }, children: [
|
|
136
|
+
/* @__PURE__ */ e(T, {}),
|
|
137
|
+
r && /* @__PURE__ */ c(s, { direction: "column", spacing: 24, children: [
|
|
138
|
+
/* @__PURE__ */ e(m, { height: 100, variant: "rounded", width: "100%" }),
|
|
139
|
+
/* @__PURE__ */ e(m, { height: 300, variant: "rounded", width: "100%" }),
|
|
140
|
+
/* @__PURE__ */ e(m, { height: 300, variant: "rounded", width: "100%" })
|
|
141
|
+
] }),
|
|
142
|
+
!r && /* @__PURE__ */ e(s, { direction: "column", spacing: 24, children: i ? f.map((n) => /* @__PURE__ */ e(o.Fragment, { children: n.component }, n.index)) : d.map((n) => /* @__PURE__ */ e(o.Fragment, { children: n.component }, n.index)) })
|
|
143
|
+
] }),
|
|
144
|
+
i && /* @__PURE__ */ e(u, { size: { lg: 4 }, children: r ? /* @__PURE__ */ c(s, { direction: "column", spacing: 24, children: [
|
|
145
|
+
/* @__PURE__ */ e(m, { height: 200, variant: "rounded", width: "100%" }),
|
|
146
|
+
/* @__PURE__ */ e(m, { height: 100, variant: "rounded", width: "100%" }),
|
|
147
|
+
/* @__PURE__ */ e(m, { height: 300, variant: "rounded", width: "100%" })
|
|
148
|
+
] }) : /* @__PURE__ */ e(s, { direction: "column", spacing: 24, children: x.map((n) => /* @__PURE__ */ e(o.Fragment, { children: n.component }, n.index)) }) })
|
|
149
|
+
] });
|
|
150
|
+
}, se = p(P);
|
|
195
151
|
export {
|
|
196
|
-
|
|
197
|
-
|
|
152
|
+
se as Dashboard,
|
|
153
|
+
h as DashboardLocation
|
|
198
154
|
};
|
|
155
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/common/components/Banner.tsx","../../src/common/components/addaccounts/AddAccounts.tsx","../../src/dashboard/Greeting.tsx","../../src/dashboard/constants/Dashboard.ts","../../src/dashboard/Dashboard.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useTheme } from '@mui/material/styles'\nimport Stack from '@mui/material/Stack'\n\nimport { useGlobalStore } from '..'\n\nexport const Banner = observer(() => {\n const theme = useTheme()\n const {\n appDataStore: { banner, loadBanner, user },\n } = useGlobalStore()\n\n React.useEffect(() => {\n loadBanner().finally()\n }, [user])\n\n if (!banner?.image_url) {\n return null\n }\n\n return (\n <Stack\n sx={{\n alignItems: 'center',\n width: '100%',\n mb: 24,\n }}\n >\n <a\n href={banner?.redirect_url}\n rel=\"noreferrer\"\n style={{\n width: '100%',\n }}\n target=\"_blank\"\n >\n <img\n alt=\"\"\n src={banner.image_url}\n style={{\n width: '100%',\n height: 'auto',\n border: `1px solid ${theme.palette.grey['300']}`,\n }}\n />\n </a>\n </Stack>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport IconButton from '@mui/material/IconButton'\nimport Tooltip from '@mui/material/Tooltip'\nimport useMediaQuery from '@mui/material/useMediaQuery'\n\nimport { Icon } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../../common'\n\ninterface AddAccountsProps {\n handleConnectClick: () => void\n}\n\nconst AddAccounts = ({ handleConnectClick }: AddAccountsProps) => {\n const { common: copy } = useGlobalCopyStore()\n const isSmallerThan700 = useMediaQuery('(max-width: 700px)')\n\n return (\n <Box>\n {isSmallerThan700 ? (\n <Tooltip id=\"add-accounts\" placement=\"bottom\" title={copy.add_accounts}>\n <IconButton\n aria-controls=\"add_accounts\"\n aria-describedby=\"add-accounts\"\n aria-haspopup={true}\n aria-label={copy.add_accounts}\n color=\"primary\"\n onClick={handleConnectClick}\n >\n <Icon name=\"add\" size={24} />\n </IconButton>\n </Tooltip>\n ) : (\n <Button\n aria-controls=\"add_accounts\"\n aria-haspopup={true}\n aria-label={copy.add_accounts}\n onClick={handleConnectClick}\n startIcon={<Icon name=\"add\" size={24} />}\n sx={{\n p: 12,\n whiteSpace: 'nowrap',\n minWidth: 'max-content',\n }}\n variant=\"text\"\n >\n {copy.add_accounts}\n </Button>\n )}\n </Box>\n )\n}\n\nexport default observer(AddAccounts)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport Paper from '@mui/material/Paper'\n\nimport { H2, P } from '@mxenabled/mxui'\nimport { useMediaQuery } from '@mui/system'\n\nimport { ConnectDrawer, useAppConfig, useGlobalCopyStore, useScreenSize } from '../common'\n\nimport AddAccounts from '../common/components/addaccounts/AddAccounts'\nimport { GlobalAccountFilter } from '../common/components/GlobalAccountFilter'\n\nconst Greeting = () => {\n const [showConnectWidget, setShowConnectWidget] = React.useState(false)\n\n const isSmallMobileDevice = useMediaQuery('(max-width:320px)')\n\n const { common: commonCopy, connect: connectCopy } = useGlobalCopyStore()\n const { config } = useAppConfig()\n const { isMobile } = useScreenSize()\n\n const getGreeting = () => {\n const now = new Date()\n const hour = now.getHours()\n\n if (hour > 1 && hour < 12) {\n return commonCopy.good_morning\n } else if (hour >= 12 && hour < 18) {\n return commonCopy.good_afternoon\n } else {\n return commonCopy.good_evening\n }\n }\n\n return (\n <React.Fragment>\n <Paper sx={{ gap: 12, mb: isMobile ? 24 : 0, p: 24 }}>\n <Stack alignItems=\"center\" flexDirection=\"row\" justifyContent=\"space-between\">\n <Stack>\n <H2 variant={isSmallMobileDevice ? 'h2' : 'h1'}>{getGreeting()}</H2>\n <P color=\"text.secondary\">{commonCopy.heres_your_spending_overview}</P>\n </Stack>\n <Stack flexDirection=\"row\">\n {config.show_connections_widget_in_master && (\n <AddAccounts handleConnectClick={() => setShowConnectWidget(true)} />\n )}\n <GlobalAccountFilter />\n </Stack>\n </Stack>\n </Paper>\n {showConnectWidget && (\n <ConnectDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectWidget={showConnectWidget}\n title={connectCopy.mini_title}\n />\n )}\n </React.Fragment>\n )\n}\n\nexport default observer(Greeting)\n","export enum DashboardLocation {\n Main = 0,\n RightSide = 1,\n Disabled = 2,\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Grid from '@mui/material/Grid'\nimport Skeleton from '@mui/material/Skeleton'\nimport Stack from '@mui/material/Stack'\n\nimport { useGlobalStore, useScreenSize, useWidgetLoadTimer } from '../common'\n\nimport { Banner } from '../common/components/Banner'\n\nimport Greeting from './Greeting'\nimport { DashboardLocation } from './constants/Dashboard'\nimport type { DashboardWidget } from './types/DashboardTypes'\n\nexport interface DashboardProps {\n widgets: DashboardWidget[]\n isLoading: boolean\n}\n\nconst Dashboard: React.FC<DashboardProps> = ({ widgets, isLoading }) => {\n const { isDesktop, isMobile } = useScreenSize()\n const { copyStore } = useGlobalStore()\n\n useWidgetLoadTimer({\n widgetName: 'Dashboard',\n isLoaded: !isLoading,\n })\n\n const sortedWidgets = React.useMemo(\n () =>\n widgets\n .filter((widget) => widget.location !== DashboardLocation.Disabled)\n .sort((w1, w2) => w1.index - w2.index),\n [widgets],\n )\n\n const mainWidgets = React.useMemo(\n () => sortedWidgets.filter((widget) => widget.location === DashboardLocation.Main),\n [sortedWidgets],\n )\n\n const sideWidgets = React.useMemo(\n () => sortedWidgets.filter((widget) => widget.location === DashboardLocation.RightSide),\n [sortedWidgets],\n )\n\n return (\n <Grid container={true} spacing={isMobile ? 0 : 24}>\n <Grid size={12} sx={{ pt: 16 }}>\n {copyStore.isInitialized && <Greeting />}\n </Grid>\n\n {/* Main Column */}\n <Grid size={{ xs: 12, lg: 8 }}>\n <Banner />\n {isLoading && (\n <Stack direction=\"column\" spacing={24}>\n <Skeleton height={100} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n </Stack>\n )}\n {!isLoading && (\n <Stack direction=\"column\" spacing={24}>\n {isDesktop\n ? mainWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))\n : sortedWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))}\n </Stack>\n )}\n </Grid>\n\n {/* Right Column */}\n {isDesktop && (\n <Grid size={{ lg: 4 }}>\n {isLoading ? (\n <Stack direction=\"column\" spacing={24}>\n <Skeleton height={200} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={100} variant=\"rounded\" width=\"100%\" />\n <Skeleton height={300} variant=\"rounded\" width=\"100%\" />\n </Stack>\n ) : (\n <Stack direction=\"column\" spacing={24}>\n {sideWidgets.map((widget) => (\n <React.Fragment key={widget.index}>{widget.component}</React.Fragment>\n ))}\n </Stack>\n )}\n </Grid>\n )}\n </Grid>\n )\n}\n\nexport default observer(Dashboard)\n"],"names":["Banner","observer","theme","useTheme","banner","loadBanner","user","useGlobalStore","React","jsx","Stack","AddAccounts","handleConnectClick","copy","useGlobalCopyStore","isSmallerThan700","useMediaQuery","Box","Tooltip","IconButton","Icon","Button","AddAccounts$1","Greeting","showConnectWidget","setShowConnectWidget","isSmallMobileDevice","commonCopy","connectCopy","config","useAppConfig","isMobile","useScreenSize","getGreeting","hour","jsxs","Paper","H2","P","GlobalAccountFilter","ConnectDrawer","Greeting$1","DashboardLocation","Dashboard","widgets","isLoading","isDesktop","copyStore","useWidgetLoadTimer","sortedWidgets","widget","w1","w2","mainWidgets","sideWidgets","Grid","Skeleton","Dashboard_default"],"mappings":"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"}
|