@mx-cartographer/experiences 9.0.16 → 9.0.17-alpha
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 +4 -5
- package/dist/Account-DR7Plrqy.mjs +1 -0
- package/dist/Account-DR7Plrqy.mjs.map +1 -0
- package/dist/{AccountDetailsDrawer-BuxLfuIm.mjs → AccountDetailsDrawer-CZPeLsCq.mjs} +4 -3
- package/dist/AccountDetailsDrawer-CZPeLsCq.mjs.map +1 -0
- package/dist/{AccountDetailsHeader-ByGNPZpO.mjs → AccountDetailsHeader-BvbCUQSS.mjs} +3 -0
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs.map +1 -0
- package/dist/AccountUtils-B8ZzWI-d.mjs +1 -0
- package/dist/AccountUtils-B8ZzWI-d.mjs.map +1 -0
- package/dist/Analytics-CkYXKvco.mjs +1 -0
- package/dist/Analytics-CkYXKvco.mjs.map +1 -0
- package/dist/Analytics-WeZYytR0.mjs +1 -0
- package/dist/Analytics-WeZYytR0.mjs.map +1 -0
- package/dist/ApiEndpoints-DXwIYNUV.mjs +1 -0
- package/dist/ApiEndpoints-DXwIYNUV.mjs.map +1 -0
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs +1 -0
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs.map +1 -0
- package/dist/BudgetUtil-Bg2AQJpQ.mjs +1 -0
- package/dist/BudgetUtil-Bg2AQJpQ.mjs.map +1 -0
- package/dist/Category-DEKZGLYe.mjs +1 -0
- package/dist/Category-DEKZGLYe.mjs.map +1 -0
- package/dist/CategorySelectorDrawer-NJsFsKP1.mjs +1 -0
- package/dist/CategorySelectorDrawer-NJsFsKP1.mjs.map +1 -0
- package/dist/Connect-BH0Pt6zc.mjs +1 -0
- package/dist/Connect-BH0Pt6zc.mjs.map +1 -0
- package/dist/ConnectCard-D7uxoH5Y.mjs +1 -0
- package/dist/ConnectCard-D7uxoH5Y.mjs.map +1 -0
- package/dist/ConnectDrawer-CW4LA3H3.mjs +1 -0
- package/dist/ConnectDrawer-CW4LA3H3.mjs.map +1 -0
- package/dist/ConnectionsDrawer-CZU9ku-k.mjs +1 -0
- package/dist/ConnectionsDrawer-CZU9ku-k.mjs.map +1 -0
- package/dist/CurrencyDialog-DumQCTPO.mjs +1 -0
- package/dist/CurrencyDialog-DumQCTPO.mjs.map +1 -0
- package/dist/CurrencyInput-DaGEQaLW.mjs +1 -0
- package/dist/CurrencyInput-DaGEQaLW.mjs.map +1 -0
- package/dist/CurrencyText-CCbE6MmF.mjs +1 -0
- package/dist/CurrencyText-CCbE6MmF.mjs.map +1 -0
- package/dist/DateFormats-HudZ3Bjs.mjs +1 -0
- package/dist/DateFormats-HudZ3Bjs.mjs.map +1 -0
- package/dist/DateUtil-CzBmbjmA.mjs +1 -0
- package/dist/DateUtil-CzBmbjmA.mjs.map +1 -0
- package/dist/DebtUtils-i4pI2Uoe.mjs +1 -0
- package/dist/DebtUtils-i4pI2Uoe.mjs.map +1 -0
- package/dist/Dialog-Bvd2n8hz.mjs +1 -0
- package/dist/Dialog-Bvd2n8hz.mjs.map +1 -0
- package/dist/Donut-SzzfZDHF.mjs +1 -0
- package/dist/Donut-SzzfZDHF.mjs.map +1 -0
- package/dist/Drawer-DsnW2o0v.mjs +1 -0
- package/dist/Drawer-DsnW2o0v.mjs.map +1 -0
- package/dist/{EmbeddedCard-BxgB26dd.mjs → EmbeddedCard-DH8vQ3qN.mjs} +184 -181
- package/dist/EmbeddedCard-DH8vQ3qN.mjs.map +1 -0
- package/dist/EmptyState-CJUDc3kD.mjs +1 -0
- package/dist/EmptyState-CJUDc3kD.mjs.map +1 -0
- package/dist/Error-Dtw6yxkf.mjs +1 -0
- package/dist/Error-Dtw6yxkf.mjs.map +1 -0
- package/dist/ErrorBoundary-CsdOcnJ9.mjs +1 -0
- package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +1 -0
- package/dist/{ExportCsvAction-BV69DnpC.mjs → ExportCsvAction-C9KWH3Az.mjs} +2 -1
- package/dist/ExportCsvAction-C9KWH3Az.mjs.map +1 -0
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs +1 -0
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs.map +1 -0
- package/dist/GlobalCopyApi-wcnDUzMV.mjs +1 -0
- package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +1 -0
- package/dist/GoalsUtil-C9EnLWvC.mjs +1 -0
- package/dist/GoalsUtil-C9EnLWvC.mjs.map +1 -0
- package/dist/HeaderCell-P8w6CmfO.mjs +1 -0
- package/dist/HeaderCell-P8w6CmfO.mjs.map +1 -0
- package/dist/Help-CkQTjORd.mjs +1 -0
- package/dist/Help-CkQTjORd.mjs.map +1 -0
- package/dist/{Help-BMCejaQr.mjs → Help-aERwhajy.mjs} +3 -2
- package/dist/Help-aERwhajy.mjs.map +1 -0
- package/dist/IconBacking-DgT8DCeh.mjs +1 -0
- package/dist/IconBacking-DgT8DCeh.mjs.map +1 -0
- package/dist/InformationTooltip-4su8bn1e.mjs +1 -0
- package/dist/InformationTooltip-4su8bn1e.mjs.map +1 -0
- package/dist/InvestmentUtil-BItV7uEs.mjs +1 -0
- package/dist/InvestmentUtil-BItV7uEs.mjs.map +1 -0
- package/dist/LineChart-CUfiH86G.mjs +1 -0
- package/dist/LineChart-CUfiH86G.mjs.map +1 -0
- package/dist/ListItemAction-BqUCLj_w.mjs +1 -0
- package/dist/ListItemAction-BqUCLj_w.mjs.map +1 -0
- package/dist/ListItemRow-kH1rn8Xu.mjs +1 -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 +1 -0
- package/dist/Loader-CxeBwuPG.mjs.map +1 -0
- package/dist/Localization-DnoVyBNK.mjs +1 -0
- package/dist/Localization-DnoVyBNK.mjs.map +1 -0
- package/dist/{ManageIncome-BadwsHRL.mjs → ManageIncome-Dcsnnz86.mjs} +9 -8
- package/dist/ManageIncome-Dcsnnz86.mjs.map +1 -0
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs +1 -0
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs.map +1 -0
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs +1 -0
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs.map +1 -0
- package/dist/NetWorthUtils-DfSH3z70.mjs +1 -0
- package/dist/NetWorthUtils-DfSH3z70.mjs.map +1 -0
- package/dist/Notification-DTNYSd8P.mjs +1 -0
- package/dist/Notification-DTNYSd8P.mjs.map +1 -0
- package/dist/NotificationSettings-CW7okUrk.mjs +1 -0
- package/dist/NotificationSettings-CW7okUrk.mjs.map +1 -0
- package/dist/NotificationUtils-BRGFTePr.mjs +1 -0
- package/dist/NotificationUtils-BRGFTePr.mjs.map +1 -0
- package/dist/NumberFormatting--XMeeBfr.mjs +1 -0
- package/dist/NumberFormatting--XMeeBfr.mjs.map +1 -0
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs +1 -0
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs.map +1 -0
- package/dist/{RecurringSettings-CGZiV-Ie.mjs → RecurringSettings-D8hBbXV_.mjs} +2 -1
- package/dist/RecurringSettings-D8hBbXV_.mjs.map +1 -0
- package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs +1 -0
- package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs.map +1 -0
- package/dist/ResponsiveButton-CC9F_Ezk.mjs +1 -0
- package/dist/ResponsiveButton-CC9F_Ezk.mjs.map +1 -0
- package/dist/SearchBox-Cpgu_gdO.mjs +1 -0
- package/dist/SearchBox-Cpgu_gdO.mjs.map +1 -0
- package/dist/Select-CSpkK5cR.mjs +1 -0
- package/dist/Select-CSpkK5cR.mjs.map +1 -0
- package/dist/SelectionBox-B4xELRgp.mjs +1 -0
- package/dist/SelectionBox-B4xELRgp.mjs.map +1 -0
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs +1 -0
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs.map +1 -0
- package/dist/Sizes-DISGrlUg.mjs +1 -0
- package/dist/Sizes-DISGrlUg.mjs.map +1 -0
- package/dist/SkeletonLoader-BaNboJjD.mjs +1 -0
- package/dist/SkeletonLoader-BaNboJjD.mjs.map +1 -0
- package/dist/SpendingData-Fii_xATx.mjs +1 -0
- package/dist/SpendingData-Fii_xATx.mjs.map +1 -0
- package/dist/SpendingLegend-CxvNOg3c.mjs +1 -0
- package/dist/SpendingLegend-CxvNOg3c.mjs.map +1 -0
- package/dist/StatusBar-CPfSXe80.mjs +1 -0
- package/dist/StatusBar-CPfSXe80.mjs.map +1 -0
- package/dist/TabContentContainer-B0eYJP5p.mjs +1 -0
- package/dist/TabContentContainer-B0eYJP5p.mjs.map +1 -0
- package/dist/ToggleListItem-Dl1lXNwj.mjs +1 -0
- package/dist/ToggleListItem-Dl1lXNwj.mjs.map +1 -0
- package/dist/{TransactionDetails-DQ_eE7M4.mjs → TransactionDetails-roZ5xLq8.mjs} +2 -1
- package/dist/TransactionDetails-roZ5xLq8.mjs.map +1 -0
- package/dist/TransactionUtils-BphBJBbU.mjs +1 -0
- package/dist/TransactionUtils-BphBJBbU.mjs.map +1 -0
- package/dist/TrendsUtil-D9z3kIj_.mjs +1 -0
- package/dist/TrendsUtil-D9z3kIj_.mjs.map +1 -0
- package/dist/UserStore-C1fdL3Iu.mjs +1 -0
- package/dist/UserStore-C1fdL3Iu.mjs.map +1 -0
- package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs → ViewMoreMicroCard-Dxghxphh.mjs} +352 -355
- package/dist/ViewMoreMicroCard-Dxghxphh.mjs.map +1 -0
- package/dist/WidgetContainer-DJnp6t6c.mjs +1 -0
- package/dist/WidgetContainer-DJnp6t6c.mjs.map +1 -0
- package/dist/accounts/index.es.js +5 -4
- package/dist/accounts/index.es.js.map +1 -0
- package/dist/analytics/index.es.js +1 -0
- package/dist/analytics/index.es.js.map +1 -0
- package/dist/budgets/index.es.js +4 -3
- package/dist/budgets/index.es.js.map +1 -0
- package/dist/cashflow/index.es.js +5 -4
- package/dist/cashflow/index.es.js.map +1 -0
- package/dist/categories/index.es.js +1 -0
- package/dist/categories/index.es.js.map +1 -0
- package/dist/common/components/ListItemWrapper.d.ts +2 -1
- package/dist/common/index.es.js +2 -1
- package/dist/common/index.es.js.map +1 -0
- package/dist/core/index.es.js +1 -0
- package/dist/core/index.es.js.map +1 -0
- package/dist/dashboard/index.es.js +1 -0
- package/dist/dashboard/index.es.js.map +1 -0
- package/dist/debts/index.es.js +64 -63
- package/dist/debts/index.es.js.map +1 -0
- package/dist/finstrong/index.es.js +6 -5
- package/dist/finstrong/index.es.js.map +1 -0
- package/dist/goals/index.es.js +1 -0
- package/dist/goals/index.es.js.map +1 -0
- package/dist/help/index.es.js +2 -1
- package/dist/help/index.es.js.map +1 -0
- package/dist/hooks-97sNJ_lf.mjs +1 -0
- package/dist/hooks-97sNJ_lf.mjs.map +1 -0
- package/dist/insights/index.es.js +3 -2
- package/dist/insights/index.es.js.map +1 -0
- package/dist/investments/index.es.js +1 -0
- package/dist/investments/index.es.js.map +1 -0
- package/dist/merchants/index.es.js +1 -0
- package/dist/merchants/index.es.js.map +1 -0
- package/dist/microinsights/index.es.js +2 -1
- package/dist/microinsights/index.es.js.map +1 -0
- package/dist/networth/index.es.js +1 -0
- package/dist/networth/index.es.js.map +1 -0
- package/dist/notifications/index.es.js +1 -0
- package/dist/notifications/index.es.js.map +1 -0
- package/dist/recurringtransactions/index.es.js +152 -138
- package/dist/recurringtransactions/index.es.js.map +1 -0
- package/dist/settings/index.es.js +2 -1
- package/dist/settings/index.es.js.map +1 -0
- package/dist/spending/index.es.js +3 -2
- 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 +6 -5
- package/dist/transactions/index.es.js.map +1 -0
- package/dist/trends/index.es.js +5 -4
- package/dist/trends/index.es.js.map +1 -0
- package/dist/useAccountDisplayName-BsiXA0qf.mjs +1 -0
- package/dist/useAccountDisplayName-BsiXA0qf.mjs.map +1 -0
- package/dist/useAriaLive-MkYebyUR.mjs +1 -0
- package/dist/useAriaLive-MkYebyUR.mjs.map +1 -0
- package/dist/useDimensions-CeDR9V8N.mjs +1 -0
- package/dist/useDimensions-CeDR9V8N.mjs.map +1 -0
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs +1 -0
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs.map +1 -0
- package/dist/useScreenSize-mWpmnh5w.mjs +1 -0
- package/dist/useScreenSize-mWpmnh5w.mjs.map +1 -0
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs +1 -0
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs.map +1 -0
- package/package.json +6 -6
- package/dist/ListItemWrapper-BHIbqx7E.mjs +0 -42
- 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/goals/index.es.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/goals/components/TabTitle.tsx","../../src/goals/components/GoalStatusCard.tsx","../../src/goals/components/actions/ContributionAction.tsx","../../src/goals/components/managegoals/OngoingListItem.tsx","../../src/goals/components/managegoals/CompleteListItem.tsx","../../src/goals/components/ManageGoals.tsx","../../src/goals/components/GoalList.tsx","../../src/goals/components/addgoal/AddGoalListItem.tsx","../../src/goals/components/AccountSelectionDrawer.tsx","../../src/goals/components/AddGoal.tsx","../../src/goals/components/actions/AccountAction.tsx","../../src/goals/components/actions/AmountToSaveAction.tsx","../../src/goals/components/actions/ChangeAccountAction.tsx","../../src/goals/components/actions/GoalNameAction.tsx","../../src/goals/components/actions/RetirementAgeAction.tsx","../../src/goals/components/actions/BirthdayAction.tsx","../../src/goals/components/actions/AddRetirementAccountAction.tsx","../../src/goals/components/GoalDetails.tsx","../../src/goals/components/GoalDetailsDrawer.tsx","../../src/goals/GoalsWidget.tsx","../../src/goals/components/micro/GoalMicroStatusCard.tsx","../../src/goals/components/micro/GoalsMicroEmptyState.tsx","../../src/goals/GoalsMicroWidget.tsx"],"sourcesContent":["import Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\ninterface TabTitleProps {\n title: string\n subtitle: string\n}\n\nexport function TabTitle({ title, subtitle }: TabTitleProps) {\n return (\n <Stack>\n <Text bold={true} variant=\"body1\">\n {title}\n </Text>\n <Text sx={{ fontWeight: 400 }} variant=\"body1\">\n {subtitle}\n </Text>\n </Stack>\n )\n}\n","import { observer } from 'mobx-react-lite'\n\nimport Avatar from '@mui/material/Avatar'\nimport Card from '@mui/material/Card'\nimport CardActionArea from '@mui/material/CardActionArea'\nimport CardContent from '@mui/material/CardContent'\nimport CardHeader from '@mui/material/CardHeader'\nimport Stack from '@mui/material/Stack'\n\nimport { NoteStack, Payments, Person } from '@mxenabled/mx-icons'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { StatusBar, StatusBarData, useGlobalCopyStore, useScreenSize } from '../../common'\nimport { type Goal, TrackType } from '../../core'\n\nimport { getGoalStatusData } from '../../core/utils/GoalsUtil'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface GoalStatusCardProps {\n goal: Goal\n isInDrawer?: boolean\n onClick?: () => void\n}\n\nconst formatCurrencyForDeviceType = (amount: number, isMobileOrTablet: boolean) => {\n if (!isMobileOrTablet) return formatCurrency(amount, '0,0.00')\n return formatCurrency(amount, amount < 1000 ? '0' : '0.00a').replace(\n /(\\d+)(?:\\.0+|(\\.\\d*?[1-9])0*)([a-zA-Z]* ?\\$?)/g,\n '$1$2$3',\n )\n}\n\nexport const GoalStatusCard = observer(\n ({ goal, isInDrawer = false, onClick }: GoalStatusCardProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { isMobile, isTablet } = useScreenSize()\n\n const isMobileOrTablet = isMobile || isTablet\n\n const {\n backgroundColor: bgcolor,\n color,\n percentage,\n percentageText,\n projectedText,\n } = getGoalStatusData(copy, goal)\n\n const amount = goal.track_type === TrackType.DEBT_TRACK ? goal.initial_amount : goal.amount\n const data = [\n {\n color: bgcolor,\n percentage: `${percentage}`,\n },\n ] as StatusBarData[]\n\n let avatarIcon = <Payments />\n if (goal.track_type === TrackType.DEBT_TRACK) {\n avatarIcon = <NoteStack />\n } else if (goal.track_type === TrackType.RETIREMENT_TRACK) {\n avatarIcon = <Person />\n }\n\n return (\n <Card\n elevation={2}\n sx={{\n '&:focus-within': {\n outline: '2px solid',\n outlineColor: 'primary.main',\n },\n }}\n >\n <CardActionArea disabled={!onClick} onClick={onClick}>\n <CardHeader\n avatar={\n <Avatar sx={{ bgcolor, color, height: 48, width: 48 }} variant=\"rounded\">\n {avatarIcon}\n </Avatar>\n }\n subheader={\n <Text\n sx={{\n fontWeight: 700,\n fontSize: isInDrawer || isMobileOrTablet ? '18px' : '23px',\n lineHeight: isInDrawer || isMobileOrTablet ? '24px' : '32px',\n }}\n >\n {`${formatCurrency(goal.current_amount, isMobileOrTablet ? '0,0' : '0,0.00')} / ${formatCurrencyForDeviceType(\n amount,\n isMobileOrTablet,\n )}`}\n </Text>\n }\n sx={{ alignItems: 'flex-start', '& .MuiCardHeader-content': { minWidth: 0 } }}\n title={\n <Text\n color=\"text.secondary\"\n fontWeight={400}\n sx={{\n fontSize: '15px',\n lineHeight: '20px',\n }}\n variant=\"h4\"\n >\n {goal.name}\n </Text>\n }\n />\n <CardContent sx={{ pt: 0 }}>\n <Stack gap={6}>\n <StatusBar data={data} height={24} />\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"space-between\">\n <Text color=\"text.secondary\" variant=\"caption\">\n {percentageText}\n </Text>\n {goal.projected_to_complete_at && (\n <Text color=\"text.secondary\" variant=\"caption\">\n {projectedText}\n </Text>\n )}\n </Stack>\n </Stack>\n </CardContent>\n </CardActionArea>\n </Card>\n )\n },\n)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { CurrencyInput, ListItemAction, useGlobalCopyStore, useGoalStore } from '../../../common'\nimport { TrackType } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface ContributionActionProps {\n trackType: TrackType\n}\n\nexport const ContributionAction = observer(({ trackType }: ContributionActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { setAlert, monthlyCashFlowProfile, updateMonthlyCashFlowProfile } = useGoalStore()\n\n const contribution = React.useMemo(() => {\n let amount = 0\n if (trackType === TrackType.SAVINGS_TRACK) {\n amount = monthlyCashFlowProfile?.amount_allocated_for_savings_goals || 0\n } else if (trackType === TrackType.DEBT_TRACK) {\n amount = monthlyCashFlowProfile?.amount_allocated_for_debt_goals || 0\n } else if (trackType === TrackType.RETIREMENT_TRACK) {\n amount = monthlyCashFlowProfile?.amount_allocated_for_retirement_goals || 0\n }\n return amount\n }, [monthlyCashFlowProfile])\n\n React.useEffect(() => {\n setAmount(contribution)\n }, [contribution])\n\n const [amount, setAmount] = React.useState<number>(contribution)\n\n const isInvalid = amount < 0 || amount > 99999999\n\n const handleSave = async () => {\n if (monthlyCashFlowProfile) {\n const updatedProfile = { ...monthlyCashFlowProfile }\n if (trackType === TrackType.SAVINGS_TRACK) {\n updatedProfile.amount_allocated_for_savings_goals = amount\n } else if (trackType === TrackType.DEBT_TRACK) {\n updatedProfile.amount_allocated_for_debt_goals = amount\n } else if (trackType === TrackType.RETIREMENT_TRACK) {\n updatedProfile.amount_allocated_for_retirement_goals = amount\n }\n\n await updateMonthlyCashFlowProfile(updatedProfile)\n setAlert(copy.alert_contribution_updated)\n }\n }\n\n return (\n <Stack bgcolor=\"background.paper\">\n <ListItemAction\n isSaveDisabled={!amount || isNaN(amount)}\n label={copy.contribution_label}\n onCancel={() => setAmount(contribution)}\n onSave={handleSave}\n primaryText={copy.contribution_label}\n secondaryText={formatCurrency(contribution, '0,0.00')}\n >\n <CurrencyInput\n amount={amount}\n autoFocus={true}\n error={isInvalid}\n fullWidth={true}\n minAmount={0}\n setAmount={(value) => setAmount(!isNaN(Number(value)) ? Number(value) : amount)}\n sx={{ '.MuiTypography-body1': { p: 0 } }}\n />\n </ListItemAction>\n </Stack>\n )\n})\n","import { fromUnixTime } from 'date-fns/fromUnixTime'\n\nimport Avatar from '@mui/material/Avatar'\nimport IconButton from '@mui/material/IconButton'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { ArrowUpwardAlt } from '@mxenabled/mx-icons'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../../common'\nimport { DATE_FORMATS_INTL, formatDate } from '../../../core/constants'\nimport { Goal, GoalType, TrackType } from '../../../core'\n\nimport { getGoalStatusData } from '../../../core/utils/GoalsUtil'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface OngoingListItemProps {\n goal: Goal\n index: number\n onUpClick?: (goal: Goal) => void\n}\n\nexport const OngoingListItem = ({ goal, index, onUpClick }: OngoingListItemProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { percentage } = getGoalStatusData(copy, goal)\n const completionMessage: string =\n goal.goal_type === GoalType.KEEP_BALANCE_BELOW || goal.has_been_spent\n ? copy.goal_completed\n : (buildDynamicCopy(copy.goal_percentage_reached, `${percentage * 100}`) as string)\n return (\n <ListItem>\n <ListItemButton\n disableRipple={true}\n sx={{ ':hover': { backgroundColor: 'unset' }, cursor: 'default' }}\n >\n {goal.track_type !== TrackType.RETIREMENT_TRACK && (\n <ListItemAvatar\n sx={{\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n '.MuiAvatar-root': { height: '16px', width: '16px' },\n }}\n >\n {goal.track_type === TrackType.SAVINGS_TRACK ? (\n <IconButton onClick={() => onUpClick?.(goal)}>\n <ArrowUpwardAlt color=\"primary\" size={24} />\n </IconButton>\n ) : (\n <Avatar sx={{ bgcolor: 'text.primary', height: '16px', width: '16px' }}>\n <Text bold={true} variant=\"caption\">\n {index + 1}\n </Text>\n </Avatar>\n )}\n </ListItemAvatar>\n )}\n <ListItemText slotProps={{ primary: { variant: 'body1' } }}>\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"space-between\">\n <Stack sx={{ maxWidth: '70%' }}>\n <Text bold={true} variant=\"body1\">\n {goal.name}\n </Text>\n <Text variant=\"caption\">\n {goal.is_complete\n ? completionMessage\n : (buildDynamicCopy(\n copy.goal_projection,\n formatDate(\n fromUnixTime(goal.projected_to_complete_at || 0),\n DATE_FORMATS_INTL.MONTH_SHORT_YEAR,\n ),\n ) as string)}\n </Text>\n </Stack>\n <Text bold={true} variant=\"body1\">\n {formatCurrency(goal.amount, '0,0.00')}\n </Text>\n </Stack>\n </ListItemText>\n </ListItemButton>\n </ListItem>\n )\n}\n","import { fromUnixTime } from 'date-fns/fromUnixTime'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { CheckCircle } from '@mxenabled/mx-icons'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../../common'\nimport { DATE_FORMATS_INTL, formatDate } from '../../../core/constants'\nimport { Goal } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface CompleteListItemProps {\n goal: Goal\n}\n\nexport const CompleteListItem = ({ goal }: CompleteListItemProps) => {\n const { goals: copy } = useGlobalCopyStore()\n\n return (\n <ListItem key={goal.guid}>\n <ListItemButton\n disableRipple={true}\n sx={{ ':hover': { backgroundColor: 'unset' }, cursor: 'default' }}\n >\n <ListItemAvatar sx={{ alignItems: 'center', display: 'flex', justifyContent: 'center' }}>\n <CheckCircle color=\"success\" filled={true} size={20} />\n </ListItemAvatar>\n <ListItemText slotProps={{ primary: { variant: 'body1' } }}>\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"space-between\">\n <Stack>\n <Text bold={true} variant=\"body1\">\n {goal.name}\n </Text>\n <Text variant=\"caption\">\n {\n buildDynamicCopy(\n copy.completed_label,\n formatDate(\n fromUnixTime(goal.completed_at || 0),\n DATE_FORMATS_INTL.MONTH_SHORT_YEAR,\n ),\n ) as string\n }\n </Text>\n </Stack>\n <Text bold={true} variant=\"body1\">\n {formatCurrency(goal.amount, '0,0.00')}\n </Text>\n </Stack>\n </ListItemText>\n </ListItemButton>\n </ListItem>\n )\n}\n","import React from 'react'\n\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { H3, P, Text } from '@mxenabled/mxui'\n\nimport { Drawer, useGlobalCopyStore, useGoalStore } from '../../common'\nimport { Goal, TrackType } from '../../core'\n\nimport { ContributionAction } from './actions/ContributionAction'\nimport { OngoingListItem } from './managegoals/OngoingListItem'\nimport { CompleteListItem } from './managegoals/CompleteListItem'\n\ninterface ManageGoalProps {\n trackType: TrackType\n}\n\nexport const ManageGoals = ({ trackType }: ManageGoalProps) => {\n const { goals: copy, common: commonCopy } = useGlobalCopyStore()\n const { loadGoals, orderedGoals: allGoals, reorderGoals } = useGoalStore()\n\n const goals = allGoals.filter((goal) => goal.track_type === trackType)\n const ongoing = goals.filter(\n (goal) =>\n (goal.track_type === TrackType.SAVINGS_TRACK && !goal.has_been_spent) ||\n (goal.track_type !== TrackType.SAVINGS_TRACK && !goal.is_complete),\n )\n const complete = goals.filter(\n (goal) =>\n (goal.track_type === TrackType.SAVINGS_TRACK && goal.has_been_spent) ||\n (goal.track_type !== TrackType.SAVINGS_TRACK && goal.is_complete),\n )\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n let manageButtonLabel = copy.manage_saving_goals\n let drawerTitle = copy.manage_saving_drawer_title\n let manageTitle = copy.manage_saving_title\n let manageDescription = copy.manage_saving_description\n\n if (trackType === TrackType.DEBT_TRACK) {\n manageButtonLabel = copy.manage_debt_goals\n drawerTitle = copy.manage_debt_drawer_title\n manageTitle = copy.manage_debt_title\n manageDescription = copy.manage_debt_description\n } else if (trackType === TrackType.RETIREMENT_TRACK) {\n manageButtonLabel = copy.manage_retirement_goals\n drawerTitle = copy.manage_retirement_drawer_title\n manageTitle = copy.manage_retirement_title\n manageDescription = copy.manage_retirement_description\n }\n\n const handleMoveGoalUp = async (goal: Goal) => {\n const reordered = [...ongoing]\n const index = reordered.findIndex((g) => g.guid === goal.guid)\n\n let newIndex = index - 1\n if (newIndex < 0) {\n newIndex = reordered.length - 1\n }\n\n reordered.splice(newIndex, 0, reordered.splice(index, 1)[0])\n\n for (let i = 0; i < reordered.length; i++) {\n reordered[i].position = i + 1\n }\n\n await reorderGoals(reordered)\n await loadGoals()\n }\n\n return (\n <Stack>\n <Button endIcon={<ChevronRight />} onClick={() => setIsOpen(true)}>\n {manageButtonLabel}\n </Button>\n\n <Drawer\n ariaLabelClose={commonCopy.close_aria}\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n title={drawerTitle}\n >\n <Stack>\n <Stack m={24}>\n <H3>{manageTitle}</H3>\n <P color=\"text.secondary\" variant=\"subtitle2\">\n {manageDescription}\n </P>\n </Stack>\n\n <ContributionAction trackType={trackType} />\n\n <Text bold={true} sx={{ mb: 4, mx: 24, mt: 12 }} variant=\"caption\">\n {copy.goal_priority}\n </Text>\n\n <List sx={{ bgcolor: 'background.paper' }}>\n {ongoing.map((goal, index) => {\n const isLast = index >= ongoing.length - 1\n return (\n <Stack key={`ongoing-${goal.guid}`}>\n <OngoingListItem goal={goal} index={index} onUpClick={handleMoveGoalUp} />\n <Divider variant={isLast ? 'fullWidth' : 'inset'} />\n </Stack>\n )\n })}\n </List>\n\n {trackType !== TrackType.RETIREMENT_TRACK && complete.length > 0 && (\n <Stack>\n <Text bold={true} sx={{ mb: 4, mx: 24, mt: 12 }} variant=\"caption\">\n {copy.complete_title}\n </Text>\n\n <List sx={{ bgcolor: 'background.paper' }}>\n {complete.map((goal, index) => {\n const isLast = index > ongoing.length - 1\n return (\n <Stack key={`complete-${goal.guid}`}>\n <CompleteListItem goal={goal} />\n <Divider variant={isLast ? 'fullWidth' : 'inset'} />\n </Stack>\n )\n })}\n </List>\n </Stack>\n )}\n </Stack>\n </Drawer>\n </Stack>\n )\n}\n","import { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport CardActionArea from '@mui/material/CardActionArea'\nimport CardContent from '@mui/material/CardContent'\nimport Grid from '@mui/material/Grid'\nimport Stack from '@mui/material/Stack'\nimport type { Theme } from '@mui/system'\n\nimport { H3, Icon, P, Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore, useGlobalUiStore, useGoalStore, useScreenSize } from '../../common'\nimport { TrackType } from '../../core'\n\nimport { GoalStatusCard } from './GoalStatusCard'\nimport { ManageGoals } from './ManageGoals'\nimport { getZeroStateOngoing } from '../../core/utils/GoalsUtil'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface GoalListProps {\n trackType: TrackType\n onAddGoals: () => void\n}\n\nexport const GoalList = observer(({ trackType, onAddGoals }: GoalListProps) => {\n const { isMobile } = useScreenSize()\n const { goals: copy } = useGlobalCopyStore()\n const { selectedAccountGuids } = useGlobalUiStore()\n const { orderedGoals: allGoals, setSelectedGoal } = useGoalStore()\n\n const goals = allGoals.filter(\n (goal) =>\n goal.track_type === trackType &&\n ((goal.track_type !== TrackType.RETIREMENT_TRACK &&\n selectedAccountGuids.includes(goal.account_guid)) ||\n goal.track_type === TrackType.RETIREMENT_TRACK),\n )\n\n const ongoing = goals.filter(\n (goal) =>\n (goal.track_type === TrackType.SAVINGS_TRACK && !goal.has_been_spent) ||\n (goal.track_type !== TrackType.SAVINGS_TRACK && !goal.is_complete),\n )\n\n const complete = goals.filter(\n (goal) =>\n (goal.track_type === TrackType.SAVINGS_TRACK && goal.has_been_spent) ||\n (goal.track_type !== TrackType.SAVINGS_TRACK && goal.is_complete),\n )\n\n const zeroStateComplete =\n trackType === TrackType.DEBT_TRACK\n ? copy.zero_state_complete_debt\n : copy.zero_state_complete_savings\n\n return (\n <Stack mt={16} mx={isMobile ? 24 : 0}>\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"space-between\" mb={8}>\n <H3 color=\"text.secondary\" variant=\"body2\">\n {copy.ongoing_title}\n </H3>\n <ManageGoals trackType={trackType} />\n </Stack>\n {ongoing.length > 0 ? (\n <Grid container={true} spacing={24}>\n {ongoing.map((goal, index, goals) => (\n // Goal should be full width in mobile or if it's the first goal (unless there are 2)\n <Grid key={index} size={isMobile || (index === 0 && goals.length !== 2) ? 12 : 6}>\n <GoalStatusCard goal={goal} key={goal.guid} onClick={() => setSelectedGoal(goal)} />\n </Grid>\n ))}\n </Grid>\n ) : (\n <Stack\n alignItems=\"center\"\n bgcolor=\"background.default\"\n borderRadius={2}\n height={166}\n justifyContent=\"center\"\n py={18}\n >\n <P\n sx={(theme) => ({\n color: 'text.secondary',\n [(theme as Theme).breakpoints.down('sm')]: {\n px: 10,\n },\n width: { sm: 381 },\n })}\n variant=\"body2\"\n >\n {getZeroStateOngoing(trackType, copy)}\n </P>\n <Button onClick={onAddGoals} sx={{ mt: 16, width: { sm: 224 } }} variant=\"contained\">\n {copy.add_goals_button}\n </Button>\n </Stack>\n )}\n {trackType !== TrackType.RETIREMENT_TRACK && (\n <Stack gap={16} mt={48}>\n <H3 color=\"text.secondary\" variant=\"body2\">\n {copy.complete_title}\n </H3>\n {complete.length === 0 && (\n <Stack alignItems=\"center\" bgcolor=\"background.default\" borderRadius={2} py={18}>\n <P\n sx={(theme) => ({\n color: 'text.secondary',\n width: { sm: 393 },\n [(theme as Theme).breakpoints.down('sm')]: {\n px: 10,\n },\n })}\n variant=\"body2\"\n >\n {zeroStateComplete}\n </P>\n </Stack>\n )}\n {complete.map((goal) => (\n <Card elevation={2} key={goal.guid}>\n <CardActionArea onClick={() => setSelectedGoal(goal)}>\n <CardContent sx={{ ':last-child': { pb: 16 } }}>\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"space-between\">\n <Stack alignItems=\"center\" direction=\"row\" gap={6}>\n <Icon color=\"success\" fill={true} name=\"check_circle\" size={20} />\n <Text color=\"text.secondary\" variant=\"body1\">\n {goal.name}\n </Text>\n </Stack>\n <Text bold={true} variant=\"body1\">\n {formatCurrency(goal.amount, '0,0.00')}\n </Text>\n </Stack>\n </CardContent>\n </CardActionArea>\n </Card>\n ))}\n </Stack>\n )}\n </Stack>\n )\n})\n","import React from 'react'\n\nimport Avatar from '@mui/material/Avatar'\nimport Collapse from '@mui/material/Collapse'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemIcon from '@mui/material/ListItemIcon'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight, ExpandLess, ExpandMore, Icon } from '@mxenabled/mx-icons'\n\nimport { useGlobalCopyStore } from '../../../common'\nimport { MetaType, TrackType } from '../../../core'\nimport { GoalType } from '../../../core/utils/GoalsUtil'\n\ninterface AddGoalListItemProps {\n goalType: GoalType\n onClick: (name: string, metaType: MetaType, type: TrackType) => void\n}\n\nexport const AddGoalListItem = ({ goalType, onClick }: AddGoalListItemProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { bgcolor, icon, label, description, subTypes, type } = goalType\n\n const [isSubListOpen, setIsSubListOpen] = React.useState(false)\n const hasSubTypes = subTypes.length > 0\n\n return (\n <Stack>\n <List sx={{ bgcolor: 'background.paper' }}>\n <ListItem>\n <ListItemButton\n onClick={\n hasSubTypes\n ? () => setIsSubListOpen(!isSubListOpen)\n : () =>\n onClick(\n type === TrackType.RETIREMENT_TRACK ? copy.retirement : '',\n type === TrackType.RETIREMENT_TRACK ? MetaType.RETIREMENT : MetaType.OTHER,\n type,\n )\n }\n >\n <ListItemAvatar>\n <Avatar sx={{ bgcolor }} variant=\"rounded\">\n <Icon name={icon} sx={{ color: 'grey.900' }} />\n </Avatar>\n </ListItemAvatar>\n <ListItemText primary={label} secondary={description} sx={{ mr: 24 }} />\n {!hasSubTypes && <ChevronRight />}\n {hasSubTypes && (isSubListOpen ? <ExpandLess /> : <ExpandMore />)}\n </ListItemButton>\n </ListItem>\n <Divider variant=\"inset\" />\n {hasSubTypes && (\n <Collapse in={isSubListOpen}>\n <List sx={{ bgcolor: 'background.default' }}>\n {subTypes.map((subType, index) => (\n <ListItem key={index} sx={{ pl: 48 }}>\n <ListItemButton onClick={() => onClick(subType.label, subType.metaType, type)}>\n <ListItemIcon sx={{ mr: 8 }}>\n <Icon name={subType.icon} />\n </ListItemIcon>\n <ListItemText\n primary={subType.label}\n slotProps={{ primary: { variant: 'body1' } }}\n />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n ))}\n </List>\n </Collapse>\n )}\n </List>\n </Stack>\n )\n}\n","import React from 'react'\n\nimport Checkbox from '@mui/material/Checkbox'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { InstitutionLogo } from '@mxenabled/mxui'\n\nimport { ConnectCard, Drawer, useGlobalCopyStore, useAppConfig } from '../../common'\nimport { Account } from '../../core'\nimport getAccountDisplayName from '../../common/utils/AccountDisplayName'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface AccountSelectionDrawerProps {\n accounts: Account[]\n isOpen: boolean\n onClose: () => void\n onSave: (accounts: Account[]) => void\n title: string\n}\n\nexport const AccountSelectionDrawer = ({\n accounts,\n isOpen,\n onClose,\n onSave,\n title,\n}: AccountSelectionDrawerProps) => {\n const { goals: copy, common: commonCopy } = useGlobalCopyStore()\n const { config } = useAppConfig()\n\n const [selectedAccounts, setSelectedAccounts] = React.useState<Account[]>([])\n\n const handleClick = (account: Account) => {\n const index = selectedAccounts.findIndex((a) => a.guid === account.guid)\n const updatedSelected = [...selectedAccounts]\n if (index >= 0) {\n updatedSelected.splice(index, 1)\n } else {\n updatedSelected.push(account)\n }\n setSelectedAccounts(updatedSelected)\n }\n\n return (\n <Drawer\n ariaLabelClose={commonCopy.close_aria}\n isOpen={isOpen}\n onClose={onClose}\n onPrimaryAction={() => onSave(selectedAccounts)}\n title={title}\n >\n <List sx={{ bgcolor: 'background.white' }}>\n <Divider variant=\"fullWidth\" />\n {accounts.map((account, index) => (\n <React.Fragment key={account.guid}>\n <ListItem>\n <ListItemButton onClick={() => handleClick(account)}>\n <ListItemAvatar>\n <InstitutionLogo\n alt={account?.name || ''}\n institutionGuid={account?.institution_guid || ''}\n />\n </ListItemAvatar>\n <ListItemText\n primary={getAccountDisplayName(account, {\n allowNickname: config?.show_account_nicknames_in_master,\n })}\n secondary={formatCurrency(account.balance || 0, '0,0.00')}\n />\n <Checkbox checked={selectedAccounts.some((a) => a.guid === account.guid)} />\n </ListItemButton>\n </ListItem>\n <Divider variant={index < accounts.length - 1 ? 'inset' : 'fullWidth'} />\n </React.Fragment>\n ))}\n </List>\n\n {config.show_connections_widget_in_master && (\n <ConnectCard\n description={copy.connect_description}\n label={copy.connect_button}\n title={copy.connect_title}\n />\n )}\n </Drawer>\n )\n}\n","import React from 'react'\n\nimport List from '@mui/material/List'\nimport Stack from '@mui/material/Stack'\n\nimport { useAccountStore, useGlobalCopyStore, useGoalStore, useAppConfig } from '../../common'\nimport { type Account, type Goal, AccountType, GoalType, MetaType, TrackType } from '../../core'\nimport getAccountDisplayName from '../../common/utils/AccountDisplayName'\n\nimport { getGoalTypes } from '../../core/utils/GoalsUtil'\nimport { AddGoalListItem } from './addgoal/AddGoalListItem'\nimport { AccountSelectionDrawer } from './AccountSelectionDrawer'\n\ninterface AddGoalProps {\n onClose?: (trackType: TrackType) => void\n}\n\nexport const AddGoal = ({ onClose }: AddGoalProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { addGoal, debtGoals, setAlert, setSelectedGoal } = useGoalStore()\n const { config } = useAppConfig()\n const { visibleDebtAccounts: debtAccounts } = useAccountStore()\n\n const [isAccountsOpen, setIsAccountsOpen] = React.useState(false)\n\n const goalTypes = getGoalTypes(copy)\n\n const handleClick = (name: string, metaType: MetaType, type: TrackType) => {\n if (type === TrackType.DEBT_TRACK) {\n setIsAccountsOpen(true)\n } else {\n setSelectedGoal({\n amount: 0,\n current_amount: 0,\n goal_type: GoalType.SAVE_AMOUNT,\n initial_amount: 0,\n meta_type: metaType,\n name: name,\n track_type: type,\n } as Goal)\n }\n }\n\n const handleSaveDebtAccounts = async (accounts: Account[]) => {\n for (const account of accounts) {\n let metaType = MetaType.CREDIT_CARD\n if (account.account_type === AccountType.LOAN) {\n metaType = MetaType.LOANS\n } else if (account.account_type === AccountType.LINE_OF_CREDIT) {\n metaType = MetaType.LINE_OF_CREDIT\n }\n\n await addGoal({\n account_guid: account.guid,\n amount: 0,\n current_amount: 0,\n goal_type: GoalType.KEEP_BALANCE_BELOW,\n initial_amount: account.balance || 0,\n interest_rate: account.interest_rate || 0,\n meta_type: metaType,\n monthly_payment: account.minimum_payment || 0,\n name: getAccountDisplayName(account, {\n allowNickname: config?.show_account_nicknames_in_master,\n }),\n track_type: TrackType.DEBT_TRACK,\n } as Goal)\n setAlert(copy.alert_goal_added)\n }\n setIsAccountsOpen(false)\n onClose?.(TrackType.DEBT_TRACK)\n }\n\n return (\n <Stack>\n <List sx={{ bgcolor: 'background.paper' }}>\n {goalTypes.map((goalType, index) => (\n <AddGoalListItem goalType={goalType} key={index} onClick={handleClick} />\n ))}\n </List>\n\n <AccountSelectionDrawer\n accounts={debtAccounts.filter((a) => !debtGoals.find((g) => g.account_guid === a.guid))}\n isOpen={isAccountsOpen}\n onClose={() => setIsAccountsOpen(false)}\n onSave={handleSaveDebtAccounts}\n title={copy.select_debt_accounts_title}\n />\n </Stack>\n )\n}\n","import ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { InstitutionLogo } from '@mxenabled/mxui'\n\nimport { useAccountDisplayName } from '../../../common'\nimport { Account } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface AccountActionProps {\n account: Account\n}\n\nexport const AccountAction = ({ account }: AccountActionProps) => {\n const displayName = useAccountDisplayName(account)\n\n return (\n <ListItem sx={{ bgcolor: 'background.paper', p: 24 }}>\n <ListItemAvatar>\n <InstitutionLogo\n alt={account.name || ''}\n institutionGuid={account.institution_guid || ''}\n />\n </ListItemAvatar>\n <ListItemText\n primary={displayName}\n secondary={formatCurrency(account.balance || 0, '0,0.00')}\n />\n </ListItem>\n )\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { CurrencyInput, ListItemAction, useGlobalCopyStore, useGoalStore } from '../../../common'\nimport { Goal, TrackType } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface AmountToSaveActionProps {\n goal: Goal\n}\n\nexport const AmountToSaveAction = observer(({ goal }: AmountToSaveActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { setAlert, setSelectedGoal, updateGoal, updateRetirementGoal } = useGoalStore()\n\n const [amount, setAmount] = React.useState<number>(goal.amount)\n\n const isNew = !goal.guid\n const isInvalid = amount < 0 || amount > 99999999.99\n const isDisabled =\n (goal.track_type === TrackType.SAVINGS_TRACK && goal.has_been_spent) ||\n (goal.track_type !== TrackType.SAVINGS_TRACK && goal.is_complete)\n\n const handleSave = async () => {\n const updatedGoal = { ...goal, amount }\n goal.amount = amount\n if (isNew) {\n setSelectedGoal(updatedGoal)\n } else {\n if (goal.track_type !== TrackType.RETIREMENT_TRACK) {\n await updateGoal(updatedGoal)\n } else {\n await updateRetirementGoal(updatedGoal)\n }\n\n setAlert(copy.alert_goal_updated_amount)\n }\n }\n\n const handleCancel = () => {\n setTimeout(() => {\n setAmount(goal.amount)\n }, 250)\n }\n\n return (\n <ListItemAction\n isDisabled={isDisabled}\n isSaveDisabled={isInvalid}\n label={copy.details_amount_to_save}\n onCancel={handleCancel}\n onSave={handleSave}\n primaryText={copy.details_amount_to_save}\n secondaryText={formatCurrency(goal.amount, '0,0')}\n zeroStateText={isNew && goal.amount === 0 ? copy.add_amount : undefined}\n >\n <CurrencyInput\n amount={amount}\n autoFocus={true}\n error={isInvalid}\n fullWidth={true}\n minAmount={0}\n setAmount={(v) => setAmount(!isNaN(Number(v)) ? Number(v) : amount)}\n sx={{ '.MuiTypography-body1': { p: 0 } }}\n />\n </ListItemAction>\n )\n})\n","import React from 'react'\n\nimport Button from '@mui/material/Button'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { AddBox, ChevronRight } from '@mxenabled/mx-icons'\n\nimport { InstitutionLogo, Text } from '@mxenabled/mxui'\n\nimport {\n ConnectCard,\n Drawer,\n useAccountStore,\n useAppConfig,\n useGlobalCopyStore,\n useGoalStore,\n} from '../../../common'\nimport { type Account, Goal } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface ChangeAccountProps {\n goal: Goal\n}\n\nexport const ChangeAccountAction = ({ goal }: ChangeAccountProps) => {\n const { visibleCheckingAccounts: checkingAccounts, visibleSavingsAccounts: savingsAccounts } =\n useAccountStore()\n const { accounts: accountsCopy, goals: copy } = useGlobalCopyStore()\n const { config } = useAppConfig()\n const { setAlert, setSelectedGoal, updateGoal } = useGoalStore()\n\n const isNew = !goal.guid\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n const updateAccount = async ({ balance, guid }: Account) => {\n const updatedGoal = { ...goal, account_guid: guid, current_amount: balance || 0 }\n if (isNew) {\n setSelectedGoal(updatedGoal)\n } else {\n await updateGoal(updatedGoal)\n setAlert(copy.alert_account_changed)\n }\n setIsOpen(false)\n }\n\n return (\n <Stack>\n {isNew && !goal.account_guid ? (\n <ListItem disableGutters={true} disablePadding={true} sx={{ bgcolor: 'background.paper' }}>\n <ListItemButton onClick={() => setIsOpen(true)}>\n <ListItemText>\n <Stack alignItems=\"center\" color=\"primary.main\" direction=\"row\" gap={8}>\n <AddBox filled={true} />\n {copy.details_add_account}\n </Stack>\n </ListItemText>\n <ChevronRight color=\"primary\" />\n </ListItemButton>\n </ListItem>\n ) : (\n <Stack sx={{ gap: 8, my: 24, mx: 24 }}>\n <Button onClick={() => setIsOpen(true)} variant=\"text\">\n {copy.details_change_account}\n </Button>\n <Text color=\"text.secondary\" sx={{ textAlign: 'center' }} variant=\"subtitle1\">\n {buildDynamicCopy(copy.details_change_account_description, goal.name) as string}\n </Text>\n </Stack>\n )}\n <Drawer isOpen={isOpen} onClose={() => setIsOpen(false)} title={copy.details_change_account}>\n <Stack>\n {checkingAccounts.length > 0 && (\n <Text bold={true} sx={{ mb: 4, ml: 24, mt: 12 }} variant=\"caption\">\n {accountsCopy.account_types['1']}\n </Text>\n )}\n <List sx={{ bgcolor: 'background.paper' }}>\n {checkingAccounts.map((account) => (\n <ListItem key={account.guid}>\n <ListItemButton onClick={() => updateAccount(account)}>\n <ListItemAvatar>\n <InstitutionLogo\n alt={account?.name || ''}\n institutionGuid={account?.institution_guid || ''}\n />\n </ListItemAvatar>\n <ListItemText\n primary={account?.name || account?.feed_name}\n secondary={formatCurrency(account?.balance || 0, '0,0.00')}\n />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n ))}\n </List>\n {savingsAccounts.length > 0 && (\n <Text bold={true} sx={{ mb: 4, ml: 24, mt: 12 }} variant=\"caption\">\n {accountsCopy.account_types['2']}\n </Text>\n )}\n <List sx={{ bgcolor: 'background.paper' }}>\n {savingsAccounts.map((account) => (\n <ListItem key={account.guid}>\n <ListItemButton onClick={() => updateAccount(account)}>\n <ListItemAvatar>\n <InstitutionLogo\n alt={account?.name || ''}\n institutionGuid={account?.institution_guid || ''}\n />\n </ListItemAvatar>\n <ListItemText\n primary={account?.name || account?.feed_name}\n secondary={formatCurrency(account?.balance || 0, '0,0.00')}\n />\n <ChevronRight />\n </ListItemButton>\n </ListItem>\n ))}\n </List>\n\n {config.show_connections_widget_in_master && (\n <ConnectCard\n description={copy.connect_description}\n label={copy.connect_button}\n title={copy.connect_title}\n />\n )}\n </Stack>\n </Drawer>\n </Stack>\n )\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useGlobalCopyStore, useGoalStore } from '../../../common'\nimport { Goal, TrackType } from '../../../core'\nimport { ListItemAction } from '../../../common'\nimport TextField from '@mui/material/TextField'\n\ninterface GoalNameActionProps {\n goal: Goal\n}\n\nexport const GoalNameAction = observer(({ goal }: GoalNameActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { setAlert, setSelectedGoal, updateGoal } = useGoalStore()\n\n const [name, setName] = React.useState(goal.name)\n\n const isNew = !goal.guid\n const isDisabled =\n (goal.track_type === TrackType.SAVINGS_TRACK && goal.has_been_spent) ||\n (goal.track_type !== TrackType.SAVINGS_TRACK && goal.is_complete)\n\n const handleSaveName = async () => {\n const updatedGoal = { ...goal, name }\n goal.name = name\n if (isNew) {\n setSelectedGoal(updatedGoal)\n } else {\n await updateGoal(updatedGoal)\n setAlert(copy.alert_goal_updated_name)\n }\n }\n\n const handleCancel = () => {\n setTimeout(() => {\n setName(goal.name)\n }, 250)\n }\n\n return (\n <ListItemAction\n isDisabled={isDisabled}\n isSaveDisabled={!name}\n label={copy.details_goal_name}\n onCancel={handleCancel}\n onSave={handleSaveName}\n primaryText={copy.details_goal_name}\n secondaryText={goal.name}\n >\n <TextField\n error={!name}\n fullWidth={true}\n label={copy.details_goal_name}\n onChange={(event) => setName(event.target.value)}\n value={name}\n />\n </ListItemAction>\n )\n})\n","import { ListItemAction, useGlobalCopyStore, useGoalStore } from '../../../common'\nimport { Goal } from '../../../core'\nimport TextField from '@mui/material/TextField'\nimport React from 'react'\n\ninterface RetirementAgeActionProps {\n goal: Goal\n}\n\nexport const RetirementAgeAction = ({ goal }: RetirementAgeActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { setAlert, setSelectedGoal, updateRetirementGoal } = useGoalStore()\n\n const [age, setAge] = React.useState(goal.retirement_age || 65)\n\n const isNew = !goal.guid\n\n const handleSave = async () => {\n if (!isNaN(age)) {\n const updatedGoal = { ...goal, retirement_age: age }\n goal.retirement_age = age\n if (isNew) {\n setSelectedGoal(updatedGoal)\n } else {\n await updateRetirementGoal(updatedGoal)\n setAlert(copy.alert_goal_updated_retirement_age)\n }\n }\n }\n\n const handleCancel = () => {\n setTimeout(() => {\n setAge(goal.retirement_age || 65)\n }, 250)\n }\n\n const isError = !age || isNaN(age) || age < 20 || age >= 100\n\n return (\n <ListItemAction\n isDisabled={goal.is_complete}\n isSaveDisabled={isError}\n label={copy.details_retirement_age}\n onCancel={handleCancel}\n onSave={handleSave}\n primaryText={copy.details_retirement_age}\n secondaryText={`${goal.retirement_age}`}\n zeroStateText={isNew && !goal.retirement_age ? copy.add_age : undefined}\n >\n <TextField\n error={isError}\n fullWidth={true}\n label={copy.details_retirement_age}\n onChange={(e) => setAge(Number(e.target.value))}\n value={isNaN(age) ? '' : age}\n />\n </ListItemAction>\n )\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { getUnixTime } from 'date-fns/getUnixTime'\nimport { isValid } from 'date-fns/isValid'\n\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\nimport { DatePicker, DateValidationError } from '@mui/x-date-pickers'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\n\nimport { ListItemAction, useGlobalCopyStore, useGoalStore, useUserStore } from '../../../common'\nimport { DATE_FORMATS_INTL, formatDate } from '../../../core/constants'\nimport { Goal } from '../../../core'\n\ninterface BirthdayActionProps {\n goal: Goal\n}\n\nexport const BirthdayAction = observer(({ goal }: BirthdayActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { user, updateUser } = useUserStore()\n const { setAlert } = useGoalStore()\n\n const [birthday, setBirthday] = React.useState<Date | null>(fromUnixTime(user.birthday ?? 0))\n const [error, setError] = React.useState<DateValidationError>(null)\n\n const isDisabled = goal.is_complete\n\n const handleSave = async () => {\n if (birthday && isValid(birthday)) {\n await updateUser({ ...user, birthday: getUnixTime(birthday) })\n setAlert(copy.alert_goal_updated_birthday)\n }\n }\n\n return (\n <ListItemAction\n isDisabled={isDisabled}\n isSaveDisabled={Boolean(error)}\n label={copy.details_birthday}\n onSave={handleSave}\n primaryText={copy.details_birthday}\n secondaryText={`${formatDate(fromUnixTime(user.birthday ?? 0), DATE_FORMATS_INTL.MONTH_DAY_YEAR)}`}\n zeroStateText={!goal.guid && !user.birthday ? copy.add_birthday : undefined}\n >\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DatePicker\n label={copy.details_birthday}\n onChange={setBirthday}\n onError={(error) => setError(error)}\n sx={{ width: '100%' }}\n value={birthday}\n />\n </LocalizationProvider>\n </ListItemAction>\n )\n})\n","import React from 'react'\n\nimport Divider from '@mui/material/Divider'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { AddBox, ChevronRight } from '@mxenabled/mx-icons'\n\nimport { useAccountStore, useGlobalCopyStore, useGoalStore } from '../../../common'\nimport { Account, Goal, RetirementGoalAccount } from '../../../core'\n\nimport { AccountSelectionDrawer } from '../AccountSelectionDrawer'\nimport { AccountAction } from './AccountAction'\n\ninterface AddRetirementAccountActionProps {\n goal: Goal\n}\n\nexport const AddRetirementAccountAction = ({ goal }: AddRetirementAccountActionProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { visibleRetirementAccounts: retirementAccounts } = useAccountStore()\n const {\n addRetirementGoalAccount,\n newRetirementGoalAccounts,\n retirementGoalAccounts,\n selectedGoal,\n setAlert,\n setNewRetirementGoalAccounts,\n setSelectedGoal,\n } = useGoalStore()\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n const isNew = !goal.guid\n const accounts = retirementAccounts.filter((a) =>\n isNew\n ? newRetirementGoalAccounts.find((rga) => rga.account_guid === a.guid)\n : retirementGoalAccounts.find((rga) => rga.account_guid === a.guid),\n )\n\n const availableAccounts = retirementAccounts.filter(\n (a) => !retirementGoalAccounts.find((rga) => rga.account_guid === a.guid),\n )\n\n const handleSave = async (accounts: Account[]) => {\n const retirementAccounts = accounts.map((account) => ({\n account_guid: account.guid,\n retirement_goal_guid: goal.guid,\n })) as RetirementGoalAccount[]\n\n if (isNew) {\n setNewRetirementGoalAccounts(retirementAccounts)\n } else {\n for (const account of retirementAccounts) {\n await addRetirementGoalAccount(account)\n setAlert(copy.alert_account_added)\n }\n }\n setSelectedGoal({\n ...selectedGoal!,\n current_amount: accounts.reduce((sum, account) => sum + (account.balance || 0), 0),\n })\n setIsOpen(false)\n }\n\n return (\n <Stack>\n {accounts.map((account) => (\n <Stack key={account.guid}>\n <AccountAction account={account} />\n <Divider />\n </Stack>\n ))}\n <ListItem disableGutters={true} disablePadding={true} sx={{ bgcolor: 'background.paper' }}>\n <ListItemButton onClick={() => setIsOpen(true)}>\n <ListItemText>\n <Stack alignItems=\"center\" color=\"primary.main\" direction=\"row\" gap={8}>\n <AddBox filled={true} />\n {copy.details_add_account}\n </Stack>\n </ListItemText>\n <ChevronRight color=\"primary\" />\n </ListItemButton>\n </ListItem>\n\n <AccountSelectionDrawer\n accounts={availableAccounts}\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onSave={handleSave}\n title={copy.add_select_accounts}\n />\n </Stack>\n )\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useAccountStore, useGlobalCopyStore } from '../../common'\nimport { Goal, TrackType } from '../../core'\n\nimport { AccountAction } from './actions/AccountAction'\nimport { AmountToSaveAction } from './actions/AmountToSaveAction'\nimport { ChangeAccountAction } from './actions/ChangeAccountAction'\nimport { GoalNameAction } from './actions/GoalNameAction'\nimport { GoalStatusCard } from './GoalStatusCard'\nimport { MonthlyPaymentAction } from './actions/MonthlyPaymentAction'\nimport { OriginalBalanceAction } from './actions/OriginalBalanceAction'\nimport { InterestRateAction } from './actions/InterestRateAction'\nimport { RetirementAgeAction } from './actions/RetirementAgeAction'\nimport { BirthdayAction } from './actions/BirthdayAction'\nimport { AddRetirementAccountAction } from './actions/AddRetirementAccountAction'\n\ninterface GoalDetailsProps {\n goal: Goal\n}\n\nexport const GoalDetails = observer(({ goal }: GoalDetailsProps) => {\n const { goals: copy } = useGlobalCopyStore()\n const { visibleAccounts: accounts } = useAccountStore()\n\n const account = React.useMemo(\n () => accounts.find((a) => a.guid === goal.account_guid),\n [accounts, goal],\n )\n\n const goalType = goal.track_type\n\n let goalTitle = copy.details_save_title\n if (goal.track_type === TrackType.DEBT_TRACK) {\n goalTitle = copy.details_debt_title\n } else if (goal.track_type === TrackType.RETIREMENT_TRACK) {\n goalTitle = copy.details_retirement_title\n }\n\n return (\n <Stack>\n <Stack mx={24}>\n <Text color=\"text.secondary\" sx={{ mb: 4, mt: 24 }} variant=\"caption\">\n {goalTitle}\n </Text>\n <GoalStatusCard goal={goal} isInDrawer={true} />\n\n <Text color=\"text.secondary\" sx={{ mb: 4, mt: 24 }} variant=\"caption\">\n {copy.details_title}\n </Text>\n </Stack>\n\n <List sx={{ bgcolor: 'background.paper' }}>\n {goalType !== TrackType.RETIREMENT_TRACK ? (\n <GoalNameAction goal={goal} />\n ) : (\n <ListItem sx={{ px: 24 }}>\n <ListItemText\n primary={\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"space-between\">\n <Text variant=\"body1\">{copy.details_goal_name}</Text>\n <Text bold={true} color={'text.primary'} sx={{ mr: 4 }} variant=\"body1\">\n {copy.retirement}\n </Text>\n </Stack>\n }\n slotProps={{ primary: { variant: 'body1' } }}\n />\n </ListItem>\n )}\n\n <Divider sx={{ ml: 24 }} />\n\n {(goalType === TrackType.SAVINGS_TRACK || goalType === TrackType.RETIREMENT_TRACK) && (\n <>\n <AmountToSaveAction goal={goal} />\n <Divider sx={{ ml: goalType === TrackType.RETIREMENT_TRACK ? 24 : 0 }} />\n </>\n )}\n\n {goal.track_type === TrackType.DEBT_TRACK && (\n <>\n <MonthlyPaymentAction goal={goal} />\n <Divider sx={{ ml: 24 }} />\n\n <InterestRateAction goal={goal} />\n <Divider sx={{ ml: 24 }} />\n\n <OriginalBalanceAction goal={goal} />\n <Divider variant=\"fullWidth\" />\n </>\n )}\n\n {goal.track_type === TrackType.RETIREMENT_TRACK && (\n <>\n <RetirementAgeAction goal={goal} />\n <Divider sx={{ ml: 24 }} />\n\n <BirthdayAction goal={goal} />\n <Divider variant=\"fullWidth\" />\n </>\n )}\n </List>\n\n <Text color=\"text.secondary\" sx={{ mb: 4, ml: 24, mt: 12 }} variant=\"caption\">\n {goal.track_type === TrackType.RETIREMENT_TRACK\n ? copy.details_accounts\n : copy.details_account}\n </Text>\n\n {goal.track_type !== TrackType.RETIREMENT_TRACK && account && (\n <>\n <AccountAction account={account} />\n <Divider />\n </>\n )}\n\n {goal.track_type === TrackType.RETIREMENT_TRACK && (\n <>\n <AddRetirementAccountAction goal={goal} />\n <Divider />\n </>\n )}\n\n {goal.track_type === TrackType.SAVINGS_TRACK && !goal.is_complete && (\n <ChangeAccountAction goal={goal} />\n )}\n </Stack>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport {\n Dialog,\n Drawer,\n useAccountStore,\n useGlobalCopyStore,\n useGoalStore,\n useUserStore,\n} from '../../common'\nimport { type Goal, TrackType } from '../../core'\n\nimport { GoalDetails } from './GoalDetails'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\ninterface GoalDetailsDrawerProps {\n onClose?: (trackType: TrackType) => void\n}\n\nexport const GoalDetailsDrawer = observer(({ onClose }: GoalDetailsDrawerProps) => {\n const { visibleRetirementAccounts: retirementAccounts } = useAccountStore()\n const { goals: copy, common: commonCopy } = useGlobalCopyStore()\n const {\n addGoal,\n addRetirementGoal,\n deleteGoal,\n deleteRetirementGoal,\n newRetirementGoalAccounts,\n retirementGoalAccounts,\n selectedGoal,\n setAlert,\n setSelectedGoal,\n updateGoal,\n } = useGoalStore()\n const { user } = useUserStore()\n\n const [isDeleteOpen, setIsDeleteOpen] = React.useState(false)\n\n const isNew = !selectedGoal?.guid\n const isComplete =\n selectedGoal?.track_type === TrackType.SAVINGS_TRACK &&\n selectedGoal.is_complete &&\n !selectedGoal.has_been_spent\n\n const accounts = React.useMemo(() => {\n const goalAccounts = isNew ? newRetirementGoalAccounts : retirementGoalAccounts\n return retirementAccounts.filter((a) => goalAccounts.some((rga) => rga.account_guid === a.guid))\n }, [isNew, retirementAccounts, newRetirementGoalAccounts, retirementGoalAccounts])\n\n const isValidGoal = React.useMemo(() => {\n if (!selectedGoal) return false\n\n // Allow deletion of existing goals even if the accounts are not associated with the goals,\n // as long as the goal is not new and not already complete.\n if (!isNew && !isComplete) return true\n\n const { account_guid, track_type, name, amount, retirement_age } = selectedGoal\n\n if (track_type === TrackType.SAVINGS_TRACK) {\n if (!account_guid) return false\n return Boolean(name) && Boolean(amount)\n }\n\n if (track_type === TrackType.RETIREMENT_TRACK) {\n if (!accounts.length) return false\n return Boolean(name) && Boolean(amount) && Boolean(retirement_age) && Boolean(user.birthday)\n }\n\n return true\n }, [selectedGoal, accounts, user.birthday])\n\n let primaryText = commonCopy.delete_button\n let primaryAction = () => setIsDeleteOpen(true)\n if (isNew) {\n primaryAction = () => handleSave()\n primaryText = commonCopy.save_button\n } else if (isComplete) {\n primaryAction = () => handleComplete()\n primaryText = copy.mark_as_complete_button\n }\n\n const handleSave = async () => {\n if (selectedGoal) {\n const trackType = selectedGoal.track_type\n if (trackType !== TrackType.RETIREMENT_TRACK) {\n await addGoal(selectedGoal)\n } else if (trackType === TrackType.RETIREMENT_TRACK) {\n await addRetirementGoal({ ...selectedGoal, target_amount: selectedGoal.amount })\n }\n setAlert(copy.alert_goal_added)\n setSelectedGoal(undefined)\n if (trackType) {\n onClose?.(trackType)\n }\n }\n }\n\n const handleDelete = async () => {\n if (!selectedGoal) return\n\n if (selectedGoal.track_type !== TrackType.RETIREMENT_TRACK) {\n await deleteGoal(selectedGoal.guid)\n } else if (selectedGoal.track_type === TrackType.RETIREMENT_TRACK) {\n await deleteRetirementGoal(selectedGoal)\n }\n setAlert(copy.alert_goal_deleted)\n setSelectedGoal(undefined)\n }\n\n const handleComplete = async () => {\n const updatedGoal = {\n ...selectedGoal,\n has_been_spent: true,\n } as Goal\n await updateGoal(updatedGoal)\n setAlert(copy.alert_goal_completed)\n setSelectedGoal(undefined)\n }\n\n return (\n <Stack>\n <Drawer\n ariaLabelClose={commonCopy.close_aria}\n hasSecondaryAction={isNew}\n isOpen={Boolean(selectedGoal)}\n isPrimaryDisabled={!isValidGoal}\n onClose={() => setSelectedGoal(undefined)}\n onPrimaryAction={primaryAction}\n primaryColor={isNew || isComplete ? 'primary' : 'error'}\n primaryText={primaryText}\n secondaryColor=\"primary\"\n title={copy.goal_details}\n >\n {selectedGoal && <GoalDetails goal={selectedGoal} />}\n </Drawer>\n <Dialog\n copy={{ close_aria: commonCopy.close_aria, title: copy.delete_goal }}\n isOpen={isDeleteOpen}\n maxWidth=\"xs\"\n onClose={() => setIsDeleteOpen(false)}\n onPrimaryAction={handleDelete}\n primaryColor=\"error\"\n primaryText={commonCopy.delete_button}\n >\n <Text variant=\"subtitle1\">\n {buildDynamicCopy(copy.delete_description, selectedGoal?.name || '') as string}\n </Text>\n </Dialog>\n </Stack>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Alert from '@mui/material/Alert'\nimport Snackbar from '@mui/material/Snackbar'\nimport Stack from '@mui/material/Stack'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport {\n ANALYTICS_EVENTS,\n Drawer,\n EmptyState,\n Loader,\n useAccountStore,\n useEvent,\n useGlobalCopyStore,\n useGlobalUiStore,\n useGoalStore,\n useScreenSize,\n useWidgetLoadTimer,\n WidgetContainer,\n} from '../common'\nimport { TrackType, WidgetProps } from '../core'\n\nimport { TabTitle } from './components/TabTitle'\nimport { GoalList } from './components/GoalList'\n\nimport { AddGoal } from './components/AddGoal'\nimport { GoalDetailsDrawer } from './components/GoalDetailsDrawer'\nimport { formatCurrency } from '../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../core/utils/Localization'\n\nexport const GoalsWidget = observer(({ onBackClick, onMenuClick, sx }: WidgetProps) => {\n const { onEvent } = useEvent()\n const { isMobile } = useScreenSize()\n const { isAccountDataLoaded, loadAccountData } = useAccountStore()\n const { isInitialized } = useGlobalUiStore()\n const { goals: copy, common: commonCopy } = useGlobalCopyStore()\n const {\n alert,\n allGoals,\n goals,\n isAllGoalDataLoaded,\n loadGoalData,\n monthlyCashFlowProfile,\n setAlert,\n retirmentGoals,\n } = useGoalStore()\n\n const [selectedTab, setSelectedTab] = React.useState(0)\n const [isAddOpen, setIsAddOpen] = React.useState(false)\n\n const savingTotal = monthlyCashFlowProfile?.amount_allocated_for_savings_goals || 0\n const debtTotal = monthlyCashFlowProfile?.amount_allocated_for_debt_goals || 0\n const retirementTotal = monthlyCashFlowProfile?.amount_allocated_for_retirement_goals || 0\n\n useWidgetLoadTimer({\n widgetName: 'GoalsWidget',\n isLoaded: isAllGoalDataLoaded,\n })\n\n React.useEffect(() => {\n if (!isAccountDataLoaded) {\n loadAccountData().finally()\n }\n onEvent(ANALYTICS_EVENTS.GOALS_VIEW)\n }, [])\n\n React.useEffect(() => {\n if (isInitialized) {\n loadGoalData().finally()\n }\n }, [isInitialized])\n\n const handleAccountFilterClick = () => {\n onEvent(ANALYTICS_EVENTS.GOALS_CLICK_FILTER)\n }\n\n const handleAddClick = () => {\n setIsAddOpen(true)\n onEvent(ANALYTICS_EVENTS.GOALS_CLICK_ADD)\n }\n\n const handleDetailsClose = (trackType: TrackType) => {\n setIsAddOpen(false)\n if (trackType === TrackType.SAVINGS_TRACK) {\n setSelectedTab(0)\n } else if (trackType === TrackType.DEBT_TRACK) {\n setSelectedTab(1)\n } else if (trackType === TrackType.RETIREMENT_TRACK) {\n setSelectedTab(2)\n }\n }\n\n const isEmptyGoalsState = React.useMemo(\n () => isAllGoalDataLoaded && allGoals.length === 0,\n [goals, isAllGoalDataLoaded, retirmentGoals],\n )\n\n if (!isInitialized || !isAllGoalDataLoaded) {\n return <Loader />\n }\n\n const savingsTabSubtitle = buildDynamicCopy(\n isMobile ? copy.tab_subtitle_mobile : copy.tab_subtitle,\n formatCurrency(savingTotal, '0,0'),\n ) as string\n\n const debtTabSubtitle = buildDynamicCopy(\n isMobile ? copy.tab_subtitle_mobile : copy.tab_subtitle,\n formatCurrency(debtTotal, '0,0'),\n ) as string\n\n const retireTabSubtitle = buildDynamicCopy(\n isMobile ? copy.tab_subtitle_mobile : copy.tab_subtitle,\n formatCurrency(retirementTotal, '0,0'),\n ) as string\n\n return (\n <WidgetContainer\n actions={[\n {\n iconName: 'add',\n label: copy.add_title,\n onClick: handleAddClick,\n },\n ]}\n onAccountsFilterClick={handleAccountFilterClick}\n onBackClick={onBackClick}\n onMenuClick={onMenuClick}\n sx={sx}\n title={copy.title}\n >\n <Stack mx={isMobile ? 0 : 48} my={24}>\n <Tabs\n onChange={(_, newValue) => setSelectedTab(newValue)}\n sx={{ bgcolor: 'background.paper' }}\n textColor=\"primary\"\n value={!isEmptyGoalsState ? selectedTab : false}\n variant=\"fullWidth\"\n >\n <Tab\n disabled={isEmptyGoalsState}\n label={<TabTitle subtitle={savingsTabSubtitle} title={copy.tab_saving_title} />}\n />\n <Tab\n disabled={isEmptyGoalsState}\n label={<TabTitle subtitle={debtTabSubtitle} title={copy.tab_debt_title} />}\n />\n <Tab\n disabled={isEmptyGoalsState}\n label={<TabTitle subtitle={retireTabSubtitle} title={copy.tab_retirement_title} />}\n />\n </Tabs>\n {isEmptyGoalsState ? (\n <EmptyState\n header={copy.create_goals_header}\n icon=\"trophy\"\n onClick={handleAddClick}\n primaryButton={copy.add_goals_button}\n subText={copy.empty_state_subheader}\n sx={{\n width: { sm: 432 },\n '.buttons-footer': {\n width: 139,\n },\n }}\n />\n ) : (\n <>\n {selectedTab === 0 && (\n <GoalList onAddGoals={handleAddClick} trackType={TrackType.SAVINGS_TRACK} />\n )}\n {selectedTab === 1 && (\n <GoalList onAddGoals={handleAddClick} trackType={TrackType.DEBT_TRACK} />\n )}\n {selectedTab === 2 && (\n <GoalList onAddGoals={handleAddClick} trackType={TrackType.RETIREMENT_TRACK} />\n )}\n </>\n )}\n </Stack>\n\n <GoalDetailsDrawer onClose={handleDetailsClose} />\n\n <Drawer\n ariaLabelClose={commonCopy.close_aria}\n isOpen={isAddOpen}\n onClose={() => setIsAddOpen(false)}\n title={copy.add_goal_title}\n >\n <AddGoal onClose={handleDetailsClose} />\n </Drawer>\n\n <Snackbar onClose={() => setAlert('')} open={Boolean(alert)}>\n <Alert onClose={() => setAlert('')} severity=\"success\" variant=\"filled\">\n {alert}\n </Alert>\n </Snackbar>\n </WidgetContainer>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport Avatar from '@mui/material/Avatar'\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { NoteStack, Payments, Person } from '@mxenabled/mx-icons'\n\nimport { H2, P, Text } from '@mxenabled/mxui'\n\nimport { SingleSegmentDonut, useGlobalCopyStore } from '../../../common'\nimport { type Goal, TrackType } from '../../../core'\n\nimport { getGoalStatusData } from '../../../core/utils/GoalsUtil'\n\ninterface GoalStatusCardProps {\n goal: Goal\n}\n\nexport const GoalMicroStatusCard = observer(({ goal }: GoalStatusCardProps) => {\n const { goals: copy } = useGlobalCopyStore()\n\n const theme = useTheme()\n\n const {\n backgroundColor: bgcolor,\n color,\n percentage,\n projectedText,\n } = getGoalStatusData(copy, goal)\n\n const percentNumber = Math.round(percentage * 100)\n\n let avatarIcon = <Payments />\n if (goal.track_type === TrackType.DEBT_TRACK) {\n avatarIcon = <NoteStack />\n } else if (goal.track_type === TrackType.RETIREMENT_TRACK) {\n avatarIcon = <Person />\n }\n\n return (\n <Stack alignItems=\"center\" direction=\"row\" spacing={12} sx={{ py: 12 }}>\n <Avatar sx={{ bgcolor, color, height: 32, width: 32 }} variant=\"rounded\">\n {avatarIcon}\n </Avatar>\n <Box sx={{ width: '100%' }}>\n <H2 fontSize={15} fontWeight={600} variant=\"body1\">\n {goal.name}\n </H2>\n {goal.projected_to_complete_at && (\n <Text color=\"text.secondary\" variant=\"caption\">\n {projectedText}\n </Text>\n )}\n </Box>\n <SingleSegmentDonut\n backgroundStrokeColor={theme.palette.neutral.light}\n color={theme.palette.primary.main}\n percent={percentNumber}\n size={40}\n strokeWidth={3}\n >\n <P fontWeight={700} variant=\"caption\">\n {`${percentNumber}%`}\n </P>\n </SingleSegmentDonut>\n </Stack>\n )\n})\n","import Stack from '@mui/material/Stack'\nimport { type SxProps } from '@mui/material/styles'\n\nimport { Trophy } from '@mxenabled/mx-icons'\nimport { H2, P } from '@mxenabled/mxui'\n\ninterface EmptyWidgetProps {\n header: string\n subText: string\n sx?: SxProps\n}\n\nexport const GoalsMicroEmptyState = ({ header, subText, sx }: EmptyWidgetProps) => (\n <Stack\n sx={{\n alignItems: 'center',\n alignSelf: 'center',\n px: 24,\n ...sx,\n }}\n >\n <Trophy size={32} />\n <H2 fontSize={15} fontWeight={600}>\n {header}\n </H2>\n <P\n color=\"text.secondary\"\n sx={{ fontWeight: 400, maxWidth: { sm: 424 }, textAlign: 'center' }}\n variant=\"subtitle2\"\n >\n {subText}\n </P>\n </Stack>\n)\n","import React from 'react'\n\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport Divider from '@mui/material/Divider'\n\nimport {\n ANALYTICS_EVENTS,\n Loader,\n MicroWidgetContainer,\n useAccountStore,\n useEvent,\n useGlobalCopyStore,\n useGlobalUiStore,\n useGoalStore,\n useWidgetLoadTimer,\n} from '../common'\n\nimport { GoalMicroStatusCard } from './components/micro/GoalMicroStatusCard'\nimport { GoalsMicroEmptyState } from './components/micro/GoalsMicroEmptyState'\n\ninterface GoalsMicroWidgetProps {\n onCTAClick: () => void\n}\n\nexport const GoalsMicroWidget = observer(({ onCTAClick }: GoalsMicroWidgetProps) => {\n const { isAccountDataLoaded, loadAccountData, visibleAccounts: accounts } = useAccountStore()\n const { onEvent } = useEvent()\n const { goals: copy } = useGlobalCopyStore()\n const { isInitialized } = useGlobalUiStore()\n const { ongoingGoalsForMicroWidget: goals, isAllGoalDataLoaded, loadGoalData } = useGoalStore()\n\n useWidgetLoadTimer({\n widgetName: 'GoalsMicroWidget',\n isLoaded: isAllGoalDataLoaded,\n })\n\n React.useEffect(() => {\n if (!isAccountDataLoaded) {\n loadAccountData().finally()\n }\n }, [])\n\n React.useEffect(() => {\n if (isInitialized) {\n loadGoalData().finally()\n onEvent(ANALYTICS_EVENTS.GOALS_LOAD_WIDGET, {\n state: !accounts?.length ? 'zeroState' : 'default',\n })\n }\n }, [isInitialized])\n\n const isEmptyGoalsState = React.useMemo(\n () => isAllGoalDataLoaded && goals.length === 0,\n [goals, isAllGoalDataLoaded],\n )\n\n const handleCTAClick = () => {\n onEvent(\n isEmptyGoalsState\n ? ANALYTICS_EVENTS.GOALS_CLICK_GET_STARTED\n : ANALYTICS_EVENTS.GOALS_CLICK_VIEW_DETAILS,\n )\n onCTAClick()\n }\n\n if (!isInitialized || !isAllGoalDataLoaded) {\n return <Loader />\n }\n\n return (\n <MicroWidgetContainer\n className=\"mx-goals-microwidget\"\n ctaLabel={!isEmptyGoalsState ? copy.view_details : copy.get_started}\n onCTAClick={handleCTAClick}\n title={copy.title}\n >\n {!isEmptyGoalsState ? (\n <Stack sx={{ justifyContent: 'space-between' }}>\n {goals.map((goal, index) => (\n <React.Fragment key={goal.guid}>\n <GoalMicroStatusCard goal={goal} />\n {index !== goals.length - 1 && <Divider />}\n </React.Fragment>\n ))}\n </Stack>\n ) : (\n <GoalsMicroEmptyState\n header={copy.create_goals_header}\n subText={copy.micro_zero_state_description}\n />\n )}\n </MicroWidgetContainer>\n )\n})\n"],"names":["TabTitle","title","subtitle","Stack","jsx","Text","formatCurrencyForDeviceType","amount","isMobileOrTablet","formatCurrency","GoalStatusCard","observer","goal","isInDrawer","onClick","copy","useGlobalCopyStore","isMobile","isTablet","useScreenSize","bgcolor","color","percentage","percentageText","projectedText","getGoalStatusData","TrackType","data","avatarIcon","Payments","NoteStack","Person","Card","jsxs","CardActionArea","CardHeader","Avatar","CardContent","StatusBar","ContributionAction","trackType","setAlert","monthlyCashFlowProfile","updateMonthlyCashFlowProfile","useGoalStore","contribution","React","setAmount","isInvalid","handleSave","updatedProfile","ListItemAction","CurrencyInput","value","OngoingListItem","index","onUpClick","completionMessage","GoalType","buildDynamicCopy","ListItem","ListItemButton","ListItemAvatar","IconButton","ArrowUpwardAlt","ListItemText","formatDate","fromUnixTime","DATE_FORMATS_INTL","CompleteListItem","CheckCircle","ManageGoals","commonCopy","loadGoals","allGoals","reorderGoals","goals","ongoing","complete","isOpen","setIsOpen","manageButtonLabel","drawerTitle","manageTitle","manageDescription","handleMoveGoalUp","reordered","g","newIndex","i","Button","ChevronRight","Drawer","H3","P","List","isLast","Divider","GoalList","onAddGoals","selectedAccountGuids","useGlobalUiStore","setSelectedGoal","zeroStateComplete","Grid","theme","getZeroStateOngoing","Icon","AddGoalListItem","goalType","icon","label","description","subTypes","type","isSubListOpen","setIsSubListOpen","hasSubTypes","MetaType","ExpandLess","ExpandMore","Collapse","subType","ListItemIcon","AccountSelectionDrawer","accounts","onClose","onSave","config","useAppConfig","selectedAccounts","setSelectedAccounts","handleClick","account","a","updatedSelected","InstitutionLogo","getAccountDisplayName","Checkbox","ConnectCard","AddGoal","addGoal","debtGoals","debtAccounts","useAccountStore","isAccountsOpen","setIsAccountsOpen","goalTypes","getGoalTypes","name","metaType","handleSaveDebtAccounts","AccountType","AccountAction","displayName","useAccountDisplayName","AmountToSaveAction","updateGoal","updateRetirementGoal","isNew","isDisabled","updatedGoal","handleCancel","v","ChangeAccountAction","checkingAccounts","savingsAccounts","accountsCopy","updateAccount","balance","guid","AddBox","GoalNameAction","setName","handleSaveName","TextField","event","RetirementAgeAction","age","setAge","isError","e","BirthdayAction","user","updateUser","useUserStore","birthday","setBirthday","error","setError","isValid","getUnixTime","LocalizationProvider","AdapterDateFns","DatePicker","AddRetirementAccountAction","retirementAccounts","addRetirementGoalAccount","newRetirementGoalAccounts","retirementGoalAccounts","selectedGoal","setNewRetirementGoalAccounts","rga","availableAccounts","sum","GoalDetails","goalTitle","Fragment","MonthlyPaymentAction","InterestRateAction","OriginalBalanceAction","GoalDetailsDrawer","addRetirementGoal","deleteGoal","deleteRetirementGoal","isDeleteOpen","setIsDeleteOpen","isComplete","goalAccounts","isValidGoal","account_guid","track_type","retirement_age","primaryText","primaryAction","handleComplete","handleDelete","Dialog","GoalsWidget","onBackClick","onMenuClick","sx","onEvent","useEvent","isAccountDataLoaded","loadAccountData","isInitialized","alert","isAllGoalDataLoaded","loadGoalData","retirmentGoals","selectedTab","setSelectedTab","isAddOpen","setIsAddOpen","savingTotal","debtTotal","retirementTotal","useWidgetLoadTimer","ANALYTICS_EVENTS","handleAccountFilterClick","handleAddClick","handleDetailsClose","isEmptyGoalsState","Loader","savingsTabSubtitle","debtTabSubtitle","retireTabSubtitle","WidgetContainer","Tabs","_","newValue","Tab","EmptyState","Snackbar","Alert","GoalMicroStatusCard","useTheme","percentNumber","Box","H2","SingleSegmentDonut","GoalsMicroEmptyState","header","subText","Trophy","GoalsMicroWidget","onCTAClick","handleCTAClick","MicroWidgetContainer"],"mappings":"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"}
|
package/dist/help/index.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import { observer as m } from "mobx-react-lite";
|
|
3
|
-
import { H as s } from "../Help-
|
|
3
|
+
import { H as s } from "../Help-aERwhajy.mjs";
|
|
4
4
|
import { a } from "../hooks-97sNJ_lf.mjs";
|
|
5
5
|
import { u as p } from "../useWidgetLoadTimer-B0tB-yzL.mjs";
|
|
6
6
|
import { L as d } from "../Loader-CxeBwuPG.mjs";
|
|
@@ -25,3 +25,4 @@ export {
|
|
|
25
25
|
s as Help,
|
|
26
26
|
L as HelpWidget
|
|
27
27
|
};
|
|
28
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/help/HelpWidget.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\n\nimport { Loader, useGlobalUiStore, WidgetContainer, useWidgetLoadTimer } from '../common'\nimport { WidgetProps } from '../core'\n\nimport { Help } from './components/Help'\n\nexport const HelpWidget = observer(({ onBackClick, onMenuClick, sx }: WidgetProps) => {\n const { isInitialized } = useGlobalUiStore()\n\n useWidgetLoadTimer({\n widgetName: 'HelpWidget',\n isLoaded: isInitialized,\n })\n\n if (!isInitialized) return <Loader />\n\n return (\n <WidgetContainer\n onBackClick={onBackClick}\n onMenuClick={onMenuClick}\n showAccountFilter={false}\n sx={{ p: 16 }}\n >\n <Help sx={sx} />\n </WidgetContainer>\n )\n})\n"],"names":["HelpWidget","observer","onBackClick","onMenuClick","sx","isInitialized","useGlobalUiStore","useWidgetLoadTimer","jsx","WidgetContainer","Help","Loader"],"mappings":";;;;;;;AAOO,MAAMA,IAAaC,EAAS,CAAC,EAAE,aAAAC,GAAa,aAAAC,GAAa,IAAAC,QAAsB;AACpF,QAAM,EAAE,eAAAC,EAAA,IAAkBC,EAAA;AAO1B,SALAC,EAAmB;AAAA,IACjB,YAAY;AAAA,IACZ,UAAUF;AAAA,EAAA,CACX,GAEIA,IAGH,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAAP;AAAA,MACA,aAAAC;AAAA,MACA,mBAAmB;AAAA,MACnB,IAAI,EAAE,GAAG,GAAA;AAAA,MAET,UAAA,gBAAAK,EAACE,KAAK,IAAAN,EAAA,CAAQ;AAAA,IAAA;AAAA,EAAA,IATS,gBAAAI,EAACG,GAAA,CAAA,CAAO;AAYrC,CAAC;"}
|
package/dist/hooks-97sNJ_lf.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-97sNJ_lf.mjs","sources":["../src/common/context/GlobalDataProvider.tsx","../src/common/context/WidgetContainerProvider.tsx","../src/common/context/hooks.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { GlobalErrorHandler, GlobalEventHandler } from '../../core'\nimport { GlobalStore } from '../../core/stores'\n\nexport interface GlobalStoreContextTypes {\n children: React.ReactNode\n onError: GlobalErrorHandler\n onEvent: GlobalEventHandler\n onLoad?: (widgetName: string) => void\n onPageView: (pageViewEvent: string) => void\n globalStore: GlobalStore\n}\nexport const GlobalDataContext = React.createContext<GlobalStoreContextTypes | null>(null)\n\nexport const GlobalDataProvider: React.FC<React.PropsWithChildren<GlobalStoreContextTypes>> = ({\n children,\n globalStore,\n onError,\n onEvent,\n onLoad,\n onPageView,\n}) => {\n return (\n <GlobalDataContext.Provider\n value={{\n globalStore,\n onError,\n onEvent,\n onLoad,\n onPageView,\n children,\n }}\n >\n {children}\n </GlobalDataContext.Provider>\n )\n}\n","import React from 'react'\n\nexport interface WidgetContainerContextTypes {\n children: React.ReactNode\n availableHeight: number\n availableWidth: number\n}\nexport const WidgetContainerContext = React.createContext<WidgetContainerContextTypes | null>(null)\n\nexport const WidgetContainerProvider: React.FC<\n React.PropsWithChildren<WidgetContainerContextTypes>\n> = ({ children, availableHeight, availableWidth }) => {\n return (\n <WidgetContainerContext.Provider\n value={{\n availableHeight,\n availableWidth,\n children,\n }}\n >\n {children}\n </WidgetContainerContext.Provider>\n )\n}\n","import React from 'react'\nimport { GlobalDataContext } from './GlobalDataProvider'\nimport { WidgetContainerContext } from './WidgetContainerProvider'\n\nexport const useGlobalDataContext = (providerName = 'useGlobalStore') => {\n const context = React.useContext(GlobalDataContext)\n\n if (!context) {\n throw new Error(`${providerName}() must be used within the GlobalDataContext`)\n }\n return context\n}\n\nexport const useAccountStore = () =>\n useGlobalDataContext('useAccountStore').globalStore.accountStore\nexport const useAppConfig = () =>\n useGlobalDataContext('useAppConfig').globalStore.appDataStore.appConfig\nexport const useAnalyticsStore = () =>\n useGlobalDataContext('useAnalyticsStore').globalStore.analyticsStore\nexport const useBudgetsStore = () =>\n useGlobalDataContext('useBudgetsStore').globalStore.budgetsStore\nexport const useCashflowStore = () =>\n useGlobalDataContext('useCashflowStore').globalStore.cashflowStore\nexport const useCategoryStore = () =>\n useGlobalDataContext('useCategoryStore').globalStore.categoryStore\nexport const useConnectStore = () =>\n useGlobalDataContext('useConnectStore').globalStore.connectStore\nexport const useDebtStore = () => useGlobalDataContext('useDebtsStore').globalStore.debtsStore\nexport const useFinstrongStore = () =>\n useGlobalDataContext('useFinstrongStore').globalStore.finstrongStore\nexport const useGlobalStore = () => useGlobalDataContext('useGlobalStore').globalStore\nexport const useGlobalUiStore = () =>\n useGlobalDataContext('useGlobalUiStore').globalStore.globalUiStore\nexport const useGlobalCopyStore = () =>\n useGlobalDataContext('globalCopyStore').globalStore.copyStore.copy\nexport const useGoalStore = () => useGlobalDataContext('useGoalStore').globalStore.goalStore\nexport const useHelpStore = () => useGlobalDataContext('useHelpStore').globalStore.helpStore\nexport const useHoldingStore = () =>\n useGlobalDataContext('useHoldingStore').globalStore.holdingStore\nexport const useMerchantStore = () =>\n useGlobalDataContext('useMerchantStore').globalStore.merchantStore\nexport const useNetWorthStore = () =>\n useGlobalDataContext('useNetWorthStore').globalStore.netWorthStore\nexport const useNotificationStore = () =>\n useGlobalDataContext('useNotificationStore').globalStore.notificationStore\nexport const useRecurringTransactionsStore = () =>\n useGlobalDataContext('useRecurringTransactionsStore').globalStore.recurringTransactionsStore\nexport const useSettingsStore = () =>\n useGlobalDataContext('useSettingsStore').globalStore.settingsStore\nexport const useTransactionStore = () =>\n useGlobalDataContext('useTransactionStore').globalStore.transactionStore\nexport const useTrendsStore = () => useGlobalDataContext('useTrendsStore').globalStore.trendsStore\nexport const useUserStore = () => useGlobalDataContext('useUserStore').globalStore.userStore\n\nexport const useError = () => ({ onError: useGlobalDataContext().onError })\nexport const useEvent = () => ({ onEvent: useGlobalDataContext().onEvent })\nexport const useLoad = () => ({ onLoad: useGlobalDataContext().onLoad })\nexport const usePageView = () => ({ onPageView: useGlobalDataContext().onPageView })\n\nexport const useWidgetContainerContext = (providerName = 'useWidgetContainerContext') => {\n const context = React.useContext(WidgetContainerContext)\n\n if (!context) {\n throw new Error(`${providerName}() must be used within the WidgetContainerContext`)\n }\n\n return context\n}\n\nexport const useWidgetContainerProvider = () => useWidgetContainerContext()\n"],"names":["GlobalDataContext","React","GlobalDataProvider","children","globalStore","onError","onEvent","onLoad","onPageView","jsx","WidgetContainerContext","WidgetContainerProvider","availableHeight","availableWidth","useGlobalDataContext","providerName","context","useAccountStore","useAppConfig","useAnalyticsStore","useBudgetsStore","useCashflowStore","useCategoryStore","useConnectStore","useDebtStore","useFinstrongStore","useGlobalStore","useGlobalUiStore","useGlobalCopyStore","useGoalStore","useHelpStore","useHoldingStore","useMerchantStore","useNetWorthStore","useNotificationStore","useRecurringTransactionsStore","useSettingsStore","useTransactionStore","useTrendsStore","useUserStore","useError","useEvent","useLoad","usePageView","useWidgetContainerContext","useWidgetContainerProvider"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as t, jsxs as c, Fragment as N } from "react/jsx-runtime";
|
|
2
2
|
import { BottomSheetTransition as r2, Text as E, MerchantLogo as Q, InstitutionLogo as F, P as J, H3 as h1, H2 as c1, Icon as k1, CategoryIcon as g1, createMXTheme as i2 } from "@mxenabled/mxui";
|
|
3
3
|
import C from "@mui/material/Stack";
|
|
4
|
-
import { e as K, p as n2, B as z1, b as l2 } from "../EmbeddedCard-
|
|
5
|
-
import { f as d5, C as C5, E as m5 } from "../EmbeddedCard-
|
|
4
|
+
import { e as K, p as n2, B as z1, b as l2 } from "../EmbeddedCard-DH8vQ3qN.mjs";
|
|
5
|
+
import { f as d5, C as C5, E as m5 } from "../EmbeddedCard-DH8vQ3qN.mjs";
|
|
6
6
|
import { CardHeader as a2, Stack as v, Button as A1, Card as j1, Box as L1, ToggleButtonGroup as o2, TextField as s2, Grow as c2, Alert as h2, useTheme as d2, useMediaQuery as H1, AppBar as C2, Toolbar as m2, IconButton as u1, List as p2, ListItem as E2, Divider as u2 } from "@mui/material";
|
|
7
7
|
import { useTheme as f2, styled as x2, Stack as f1 } from "@mui/system";
|
|
8
8
|
import { Link as y2, Icon as S, CheckCircle as W1, ChevronRight as M2 } from "@mxenabled/mx-icons";
|
|
@@ -4870,3 +4870,4 @@ export {
|
|
|
4870
4870
|
r5 as WeeklyNoSpendDays,
|
|
4871
4871
|
V as variants
|
|
4872
4872
|
};
|
|
4873
|
+
//# sourceMappingURL=index.es.js.map
|