@mx-cartographer/experiences 9.1.0-alpha.bb1 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -0
- package/README.md +10 -10
- package/dist/Account-DR7Plrqy.mjs +119 -0
- package/dist/Account-DR7Plrqy.mjs.map +1 -0
- package/dist/AccountDetailsDrawer-CZPeLsCq.mjs +922 -0
- package/dist/AccountDetailsDrawer-CZPeLsCq.mjs.map +1 -0
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs +231 -0
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs.map +1 -0
- package/dist/AccountUtils-B8ZzWI-d.mjs +28 -0
- package/dist/AccountUtils-B8ZzWI-d.mjs.map +1 -0
- package/dist/Analytics-CkYXKvco.mjs +54 -0
- package/dist/Analytics-CkYXKvco.mjs.map +1 -0
- package/dist/Analytics-WeZYytR0.mjs +140 -0
- package/dist/Analytics-WeZYytR0.mjs.map +1 -0
- package/dist/ApiEndpoints-DXwIYNUV.mjs +50 -0
- package/dist/ApiEndpoints-DXwIYNUV.mjs.map +1 -0
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs +27 -0
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs.map +1 -0
- package/dist/BudgetUtil-Bg2AQJpQ.mjs +75 -0
- package/dist/BudgetUtil-Bg2AQJpQ.mjs.map +1 -0
- package/dist/Category-DEKZGLYe.mjs +302 -0
- package/dist/Category-DEKZGLYe.mjs.map +1 -0
- package/dist/CategorySelectorDrawer-NJsFsKP1.mjs +431 -0
- package/dist/CategorySelectorDrawer-NJsFsKP1.mjs.map +1 -0
- package/dist/Connect-BH0Pt6zc.mjs +43 -0
- package/dist/Connect-BH0Pt6zc.mjs.map +1 -0
- package/dist/ConnectCard-D7uxoH5Y.mjs +55 -0
- package/dist/ConnectCard-D7uxoH5Y.mjs.map +1 -0
- package/dist/ConnectDrawer-CW4LA3H3.mjs +58 -0
- package/dist/ConnectDrawer-CW4LA3H3.mjs.map +1 -0
- package/dist/ConnectionsDrawer-CZU9ku-k.mjs +54 -0
- package/dist/ConnectionsDrawer-CZU9ku-k.mjs.map +1 -0
- package/dist/CurrencyDialog-DumQCTPO.mjs +374 -0
- package/dist/CurrencyDialog-DumQCTPO.mjs.map +1 -0
- package/dist/CurrencyInput-DaGEQaLW.mjs +88 -0
- package/dist/CurrencyInput-DaGEQaLW.mjs.map +1 -0
- package/dist/CurrencyText-CCbE6MmF.mjs +21 -0
- package/dist/CurrencyText-CCbE6MmF.mjs.map +1 -0
- package/dist/DateFormats-HudZ3Bjs.mjs +65 -0
- package/dist/DateFormats-HudZ3Bjs.mjs.map +1 -0
- package/dist/DateUtil-CzBmbjmA.mjs +75 -0
- package/dist/DateUtil-CzBmbjmA.mjs.map +1 -0
- package/dist/DebtUtils-i4pI2Uoe.mjs +154 -0
- package/dist/DebtUtils-i4pI2Uoe.mjs.map +1 -0
- package/dist/Dialog-Bvd2n8hz.mjs +67 -0
- package/dist/Dialog-Bvd2n8hz.mjs.map +1 -0
- package/dist/Donut-SzzfZDHF.mjs +89 -0
- package/dist/Donut-SzzfZDHF.mjs.map +1 -0
- package/dist/Drawer-DsnW2o0v.mjs +175 -0
- package/dist/Drawer-DsnW2o0v.mjs.map +1 -0
- package/dist/EmbeddedCard-DH8vQ3qN.mjs +859 -0
- package/dist/EmbeddedCard-DH8vQ3qN.mjs.map +1 -0
- package/dist/EmptyState-CJUDc3kD.mjs +85 -0
- package/dist/EmptyState-CJUDc3kD.mjs.map +1 -0
- package/dist/Error-Dtw6yxkf.mjs +85 -0
- package/dist/Error-Dtw6yxkf.mjs.map +1 -0
- package/dist/ErrorBoundary-CsdOcnJ9.mjs +24 -0
- package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +1 -0
- package/dist/ExportCsvAction-C9KWH3Az.mjs +25 -0
- package/dist/ExportCsvAction-C9KWH3Az.mjs.map +1 -0
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs +230 -0
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs.map +1 -0
- package/dist/GlobalCopyApi-wcnDUzMV.mjs +129 -0
- package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +1 -0
- package/dist/GoalsUtil-C9EnLWvC.mjs +108 -0
- package/dist/GoalsUtil-C9EnLWvC.mjs.map +1 -0
- package/dist/HeaderCell-P8w6CmfO.mjs +7 -0
- package/dist/HeaderCell-P8w6CmfO.mjs.map +1 -0
- package/dist/Help-CkQTjORd.mjs +300 -0
- package/dist/Help-CkQTjORd.mjs.map +1 -0
- package/dist/Help-aERwhajy.mjs +3210 -0
- package/dist/Help-aERwhajy.mjs.map +1 -0
- package/dist/IconBacking-DgT8DCeh.mjs +40 -0
- package/dist/IconBacking-DgT8DCeh.mjs.map +1 -0
- package/dist/InformationTooltip-4su8bn1e.mjs +42 -0
- package/dist/InformationTooltip-4su8bn1e.mjs.map +1 -0
- package/dist/InvestmentUtil-BItV7uEs.mjs +135 -0
- package/dist/InvestmentUtil-BItV7uEs.mjs.map +1 -0
- package/dist/LineChart-CUfiH86G.mjs +613 -0
- package/dist/LineChart-CUfiH86G.mjs.map +1 -0
- package/dist/ListItemAction-BqUCLj_w.mjs +70 -0
- package/dist/ListItemAction-BqUCLj_w.mjs.map +1 -0
- package/dist/ListItemRow-kH1rn8Xu.mjs +68 -0
- package/dist/ListItemRow-kH1rn8Xu.mjs.map +1 -0
- package/dist/ListItemWrapper-DRse79Iu.mjs +44 -0
- package/dist/ListItemWrapper-DRse79Iu.mjs.map +1 -0
- package/dist/Loader-CxeBwuPG.mjs +22 -0
- package/dist/Loader-CxeBwuPG.mjs.map +1 -0
- package/dist/Localization-DnoVyBNK.mjs +39 -0
- package/dist/Localization-DnoVyBNK.mjs.map +1 -0
- package/dist/ManageIncome-Dcsnnz86.mjs +906 -0
- package/dist/ManageIncome-Dcsnnz86.mjs.map +1 -0
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs +46 -0
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs.map +1 -0
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs +67 -0
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs.map +1 -0
- package/dist/NetWorthUtils-DfSH3z70.mjs +96 -0
- package/dist/NetWorthUtils-DfSH3z70.mjs.map +1 -0
- package/dist/Notification-DTNYSd8P.mjs +8 -0
- package/dist/Notification-DTNYSd8P.mjs.map +1 -0
- package/dist/NotificationSettings-CW7okUrk.mjs +678 -0
- package/dist/NotificationSettings-CW7okUrk.mjs.map +1 -0
- package/dist/NotificationUtils-BRGFTePr.mjs +24 -0
- package/dist/NotificationUtils-BRGFTePr.mjs.map +1 -0
- package/dist/NumberFormatting--XMeeBfr.mjs +50 -0
- package/dist/NumberFormatting--XMeeBfr.mjs.map +1 -0
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs +115 -0
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs.map +1 -0
- package/dist/RecurringSettings-D8hBbXV_.mjs +89 -0
- package/dist/RecurringSettings-D8hBbXV_.mjs.map +1 -0
- package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs +299 -0
- package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs.map +1 -0
- package/dist/ResponsiveButton-CC9F_Ezk.mjs +46 -0
- package/dist/ResponsiveButton-CC9F_Ezk.mjs.map +1 -0
- package/dist/SearchBox-Cpgu_gdO.mjs +51 -0
- package/dist/SearchBox-Cpgu_gdO.mjs.map +1 -0
- package/dist/Select-CSpkK5cR.mjs +62 -0
- package/dist/Select-CSpkK5cR.mjs.map +1 -0
- package/dist/SelectionBox-B4xELRgp.mjs +49 -0
- package/dist/SelectionBox-B4xELRgp.mjs.map +1 -0
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs +70 -0
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs.map +1 -0
- package/dist/Sizes-DISGrlUg.mjs +7 -0
- package/dist/Sizes-DISGrlUg.mjs.map +1 -0
- package/dist/SkeletonLoader-BaNboJjD.mjs +39 -0
- package/dist/SkeletonLoader-BaNboJjD.mjs.map +1 -0
- package/dist/SpendingData-Fii_xATx.mjs +54 -0
- package/dist/SpendingData-Fii_xATx.mjs.map +1 -0
- package/dist/SpendingLegend-CxvNOg3c.mjs +204 -0
- package/dist/SpendingLegend-CxvNOg3c.mjs.map +1 -0
- package/dist/StatusBar-CPfSXe80.mjs +31 -0
- package/dist/StatusBar-CPfSXe80.mjs.map +1 -0
- package/dist/TabContentContainer-B0eYJP5p.mjs +49 -0
- package/dist/TabContentContainer-B0eYJP5p.mjs.map +1 -0
- package/dist/ToggleListItem-Dl1lXNwj.mjs +92 -0
- package/dist/ToggleListItem-Dl1lXNwj.mjs.map +1 -0
- package/dist/TransactionDetails-roZ5xLq8.mjs +1708 -0
- package/dist/TransactionDetails-roZ5xLq8.mjs.map +1 -0
- package/dist/TransactionUtils-BphBJBbU.mjs +235 -0
- package/dist/TransactionUtils-BphBJBbU.mjs.map +1 -0
- package/dist/TrendsUtil-D9z3kIj_.mjs +70 -0
- package/dist/TrendsUtil-D9z3kIj_.mjs.map +1 -0
- package/dist/UserStore-C1fdL3Iu.mjs +3054 -0
- package/dist/UserStore-C1fdL3Iu.mjs.map +1 -0
- package/dist/ViewMoreMicroCard-fnwE0hqd.mjs +1280 -0
- package/dist/ViewMoreMicroCard-fnwE0hqd.mjs.map +1 -0
- package/dist/WidgetContainer-DJnp6t6c.mjs +483 -0
- package/dist/WidgetContainer-DJnp6t6c.mjs.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.d.ts +6 -0
- package/dist/accounts/index.d.ts +1 -0
- package/dist/accounts/index.es.js +784 -12
- package/dist/accounts/index.es.js.map +1 -0
- package/dist/analytics/index.es.js +140 -155
- package/dist/analytics/index.es.js.map +1 -0
- package/dist/budgets/index.es.js +1267 -1317
- package/dist/budgets/index.es.js.map +1 -0
- package/dist/cashflow/index.es.js +943 -1047
- package/dist/cashflow/index.es.js.map +1 -0
- package/dist/categories/index.es.js +5 -4
- package/dist/categories/index.es.js.map +1 -0
- package/dist/common/components/DataRow.d.ts +1 -0
- package/dist/common/components/ListItemWrapper.d.ts +2 -1
- package/dist/common/constants/Analytics.d.ts +3 -0
- package/dist/common/index.es.js +310 -101
- package/dist/common/index.es.js.map +1 -0
- package/dist/core/index.es.js +105 -80
- package/dist/core/index.es.js.map +1 -0
- package/dist/core/stores/RecurringTransactionsStore.d.ts +29 -1
- package/dist/core/stores/TransactionStore.d.ts +1 -0
- package/dist/core/types/localization/RecurringCopy.d.ts +14 -1
- package/dist/core/types/localization/SpendingCopy.d.ts +1 -0
- package/dist/core/utils/DateUtil.d.ts +2 -0
- package/dist/core/utils/RecurringTransactionsUtil.d.ts +2 -1
- package/dist/dashboard/index.es.js +142 -185
- package/dist/dashboard/index.es.js.map +1 -0
- package/dist/debts/index.es.js +1273 -1384
- package/dist/debts/index.es.js.map +1 -0
- package/dist/finstrong/index.es.js +3473 -3367
- package/dist/finstrong/index.es.js.map +1 -0
- package/dist/goals/index.es.js +984 -1103
- package/dist/goals/index.es.js.map +1 -0
- package/dist/help/index.es.js +26 -3
- package/dist/help/index.es.js.map +1 -0
- package/dist/hooks-97sNJ_lf.mjs +78 -0
- package/dist/hooks-97sNJ_lf.mjs.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/BubbleWeek.d.ts +4 -1
- package/dist/insights/components/insights/WeeklyNoSpendDays/WeeklyNoSpendDays.d.ts +4 -2
- package/dist/insights/index.es.js +4871 -93
- package/dist/insights/index.es.js.map +1 -0
- package/dist/investments/index.es.js +1523 -1533
- package/dist/investments/index.es.js.map +1 -0
- package/dist/merchants/index.es.js +65 -75
- package/dist/merchants/index.es.js.map +1 -0
- package/dist/microinsights/index.es.js +826 -15
- package/dist/microinsights/index.es.js.map +1 -0
- package/dist/networth/index.es.js +504 -550
- package/dist/networth/index.es.js.map +1 -0
- package/dist/notifications/index.es.js +162 -169
- package/dist/notifications/index.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringTransactionDetails.d.ts +3 -2
- package/dist/recurringtransactions/components/RecurringTransactionDetailsDrawer.d.ts +3 -0
- package/dist/recurringtransactions/components/RecurringTransactionList.d.ts +11 -0
- package/dist/recurringtransactions/components/UpcomingRecurrenceCard.d.ts +8 -0
- package/dist/recurringtransactions/components/actions/LinkTransactionDrawer.d.ts +10 -0
- package/dist/recurringtransactions/components/actions/MarkAsPaidDialog.d.ts +7 -0
- package/dist/recurringtransactions/components/actions/MarkAsUnpaidDialog.d.ts +7 -0
- package/dist/recurringtransactions/index.es.js +1012 -10
- package/dist/recurringtransactions/index.es.js.map +1 -0
- package/dist/settings/index.es.js +892 -13
- package/dist/settings/index.es.js.map +1 -0
- package/dist/spending/index.es.js +457 -400
- package/dist/spending/index.es.js.map +1 -0
- package/dist/transactions/components/shared/transactionlist/TransactionRow.d.ts +1 -0
- package/dist/transactions/index.es.js +604 -10
- package/dist/transactions/index.es.js.map +1 -0
- package/dist/trends/index.es.js +1408 -1268
- package/dist/trends/index.es.js.map +1 -0
- package/dist/useAccountDisplayName-BsiXA0qf.mjs +24 -0
- package/dist/useAccountDisplayName-BsiXA0qf.mjs.map +1 -0
- package/dist/useAriaLive-MkYebyUR.mjs +36 -0
- package/dist/useAriaLive-MkYebyUR.mjs.map +1 -0
- package/dist/useDimensions-CeDR9V8N.mjs +37 -0
- package/dist/useDimensions-CeDR9V8N.mjs.map +1 -0
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs +12 -0
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs.map +1 -0
- package/dist/useScreenSize-mWpmnh5w.mjs +37 -0
- package/dist/useScreenSize-mWpmnh5w.mjs.map +1 -0
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs +20 -0
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs.map +1 -0
- package/package.json +30 -30
- package/dist/Analytics-BKzTPees.mjs +0 -61
- package/dist/GlobalCopyApi-BeXzaDH9.mjs +0 -487
- package/dist/HeaderCell-EhCUSjvj.mjs +0 -10
- package/dist/Loader-BlVzRtUd.mjs +0 -73
- package/dist/MiniWidgetContainer-COwnjfy7.mjs +0 -110
- package/dist/OriginalBalanceAction-sbiqaxok.mjs +0 -110
- package/dist/SpendingLegend-D15ixlQ1.mjs +0 -222
- package/dist/accounts-DkyAiLpg.mjs +0 -15632
- package/dist/core-BexP5oiV.mjs +0 -4047
- package/dist/help-CctDYrAH.mjs +0 -2308
- package/dist/insights/components/insights/P2pCategorization/_tests_/P2pCategorizationMultipleTransaction.test.d.ts +0 -0
- package/dist/insights/components/insights/P2pCategorization/_tests_/P2pCategorizationSingleTransaction.test.d.ts +0 -0
- package/dist/microinsights-CRf3ChsJ.mjs +0 -1814
- package/dist/recurringtransactions-gbJ_NA8u.mjs +0 -1564
- package/dist/settings-ZMHe439l.mjs +0 -1526
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/settings/components/profile/ProfileTab.tsx","../../src/settings/constants/Settings.ts","../../src/settings/components/devices/DeviceTable.tsx","../../src/settings/components/devices/DeviceList.tsx","../../src/settings/components/devices/DeviceDialog.tsx","../../src/settings/components/devices/DeviceTab.tsx","../../src/settings/components/transactionrules/components/RuleListItem.tsx","../../src/settings/components/transactionrules/actions/EditCategoryAction.tsx","../../src/settings/components/transactionrules/actions/EditPayeeAction.tsx","../../src/settings/components/transactionrules/actions/DeleteRuleAction.tsx","../../src/settings/components/transactionrules/components/EditRuleDetails.tsx","../../src/settings/components/transactionrules/actions/EditRuleAction.tsx","../../src/settings/components/transactionrules/TransactionRulesTab.tsx","../../src/settings/components/SettingsWidgetContents.tsx","../../src/settings/SettingsWidget.tsx","../../src/settings/NotificationSettingsWidget.tsx","../../src/settings/TransactionRulesWidget.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n\nimport React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { getUnixTime } from 'date-fns/getUnixTime'\n\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\nimport { DatePicker } from '@mui/x-date-pickers'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\n\nimport { alpha, useTheme } from '@mui/material/styles'\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport TextField from '@mui/material/TextField'\n\nimport { H3, P } from '@mxenabled/mxui'\n\nimport {\n useAppConfig,\n useGlobalCopyStore,\n useScreenSize,\n useSettingsStore,\n useUserStore,\n Dialog,\n} from '../../../common'\nimport { type EditableUser } from '../../../core'\nimport VerifyEmailAction from './actions/VerifyEmailAction'\nimport VerifyPhoneAction from './actions/VerifyPhoneAction'\n\ninterface ProfileFormProps {\n availableWidth?: number\n handleOnLeavClick?: () => void\n}\n\ntype UserInput = {\n [U in keyof EditableUser]: EditableUser[U]\n}\n\nconst ProfileForm: React.FC<ProfileFormProps> = ({ availableWidth, handleOnLeavClick }) => {\n const theme = useTheme()\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { isDesktop, isMobile, isSmallMobile, isTablet } = useScreenSize(availableWidth)\n const { config } = useAppConfig()\n const { updateUser } = useSettingsStore()\n const { user } = useUserStore()\n\n const [modifiedUser, setModifiedUser] = React.useState<EditableUser>({\n first_name: user.first_name,\n last_name: user.last_name,\n email: user.email,\n phone: user.phone,\n birthday: user.birthday,\n postal_code: user.postal_code,\n credit_score: user.credit_score,\n })\n const [hasUnsavedChanges, setHasUnsavedChanges] = React.useState(false)\n const [showLeaveDialog, setShowLeaveDialog] = React.useState(false)\n const boxRef = React.useRef<HTMLDivElement>(null)\n\n const showVerifyEmail = modifiedUser.email && !user.email_is_verified && !hasUnsavedChanges\n const showVerifyPhone = modifiedUser.phone && !user.phone_is_verified && !hasUnsavedChanges\n\n React.useEffect(() => {\n if (handleOnLeavClick) {\n const handleClickOutside = (event: MouseEvent) => {\n if (boxRef.current && !boxRef.current.contains(event.target as Node) && hasUnsavedChanges) {\n setShowLeaveDialog(true)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }\n return undefined\n }, [hasUnsavedChanges])\n\n // eslint-disable-next-line consistent-return\n const formatReadableBirthday = () => {\n if (modifiedUser.birthday) {\n const utc = new Date(modifiedUser.birthday * 1000)\n const year = utc.getUTCFullYear()\n const month = utc.getUTCMonth()\n const day = utc.getUTCDate()\n return new Date(year, month, day)\n }\n }\n\n const handleSave = async () => {\n await updateUser({ ...user, ...modifiedUser })\n setHasUnsavedChanges(false)\n }\n\n const handleLeaveDialog = () => {\n setShowLeaveDialog(false)\n\n if (handleOnLeavClick) {\n handleOnLeavClick()\n }\n }\n\n const handleKeepEditing = () => {\n setShowLeaveDialog(false)\n }\n\n const handleInput = (update: UserInput) => {\n const changedUser = {\n ...modifiedUser,\n ...update,\n }\n setModifiedUser(changedUser)\n setHasUnsavedChanges(JSON.stringify({ ...user, ...changedUser }) !== JSON.stringify(user))\n }\n\n return (\n <>\n <Box\n component=\"form\"\n ref={boxRef}\n sx={{\n backgroundColor: 'background.paper',\n p: 24,\n width: isSmallMobile ? 320 : isTablet ? 680 : isDesktop ? 990 : 400,\n '& .MuiTextField-root': {\n width: isSmallMobile ? 272 : isTablet ? 328 : isDesktop ? 483 : 352,\n },\n }}\n >\n <H3>{settingsCopy.personal_details}</H3>\n <P variant=\"body1\">{settingsCopy.update_information}</P>\n <Stack\n direction={isMobile ? 'column' : 'row'}\n spacing={isMobile ? 44 : 24}\n sx={{ mb: 44, pt: 32 }}\n >\n <TextField\n defaultValue={modifiedUser.first_name}\n label={settingsCopy.first_name}\n onChange={(e) => handleInput({ first_name: e.target.value })}\n />\n <TextField\n defaultValue={modifiedUser.last_name}\n label={settingsCopy.last_name}\n onChange={(e) => handleInput({ last_name: e.target.value })}\n />\n </Stack>\n <Stack direction={isMobile ? 'column' : 'row'}>\n {config.display_email_edit_field_in_settings && (\n <Stack sx={{ mb: showVerifyEmail ? 20 : 44, mr: isMobile ? 0 : 24 }}>\n <TextField\n defaultValue={modifiedUser.email}\n label={settingsCopy.email_address}\n onChange={(e) => handleInput({ email: e.target.value })}\n />\n {showVerifyEmail && <VerifyEmailAction />}\n </Stack>\n )}\n {config.display_sms_edit_field_in_settings && (\n <Stack sx={{ mb: showVerifyPhone ? 20 : 44 }}>\n <TextField\n defaultValue={modifiedUser.phone}\n label={settingsCopy.mobile_number}\n onChange={(e) => handleInput({ phone: e.target.value })}\n type=\"tel\"\n />\n {showVerifyPhone && <VerifyPhoneAction />}\n </Stack>\n )}\n </Stack>\n <Stack direction={isMobile ? 'column' : 'row'} spacing={isMobile ? 44 : 24} sx={{ mb: 44 }}>\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DatePicker\n label={settingsCopy.birthdate}\n onChange={(value) => handleInput({ birthday: getUnixTime(value as Date) })}\n slotProps={{\n nextIconButton: {\n sx: {\n color: 'primary.main',\n '&:hover': { backgroundColor: alpha(theme.palette.primary.light, 0.1) },\n },\n },\n previousIconButton: {\n sx: {\n color: 'primary.main',\n '&:hover': { backgroundColor: alpha(theme.palette.primary.light, 0.1) },\n },\n },\n }}\n sx={{\n width: '100%',\n '& .MuiIconButton-edgeEnd': {\n color: 'primary.main',\n '&:hover': { backgroundColor: alpha(theme.palette.primary.light, 0.1) },\n },\n }}\n value={formatReadableBirthday()}\n />\n </LocalizationProvider>\n <TextField\n defaultValue={modifiedUser.postal_code}\n label={settingsCopy.zip_code}\n onChange={(e) => handleInput({ postal_code: e.target.value })}\n />\n </Stack>\n <Stack>\n <TextField\n defaultValue={modifiedUser.credit_score}\n label={settingsCopy.credit_score}\n onChange={(e) => handleInput({ credit_score: Number(e.target.value) })}\n sx={{ mb: 44 }}\n />\n <Button\n disabled={!hasUnsavedChanges}\n onClick={handleSave}\n sx={{ width: isSmallMobile ? 272 : 124 }}\n variant=\"contained\"\n >\n {commonCopy.save_button}\n </Button>\n </Stack>\n </Box>\n <Dialog\n copy={{ title: settingsCopy.discard_changes }}\n isOpen={showLeaveDialog}\n onClose={handleKeepEditing}\n onSecondaryAction={handleLeaveDialog}\n primaryText={settingsCopy.keep_editing}\n secondaryText={settingsCopy.leave}\n >\n {settingsCopy.discard_changes_message}\n </Dialog>\n </>\n )\n}\n\nexport default observer(ProfileForm)\n","export enum DialogType {\n Delete = 'delete',\n Edit = 'edit',\n Token = 'token',\n}\n","import React from 'react'\nimport { formatDistanceToNow } from 'date-fns/formatDistanceToNow'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\n\nimport { useTheme } from '@mui/material/styles'\nimport { alpha } from '@mui/material/styles'\n\nimport IconButton from '@mui/material/IconButton'\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport { Icon, Text } from '@mxenabled/mxui'\nimport { DataGridPro, GridColDef } from '@mui/x-data-grid-pro'\n\nimport { useGlobalCopyStore } from '../../../common'\nimport { Device } from '../../../core'\nimport { HeaderCell } from '../../../trends/components/trendstable/HeaderCell'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface DeviceTableProps {\n devices: Device[]\n onClickDeviceEdit: (device: Device) => void\n onClickDeviceDelete: (device: Device) => void\n}\n\nexport const DeviceTable: React.FC<DeviceTableProps> = ({\n devices,\n onClickDeviceEdit,\n onClickDeviceDelete,\n}) => {\n const theme = useTheme()\n const { settings: settingsCopy } = useGlobalCopyStore()\n\n const columns: GridColDef[] = [\n {\n field: 'name',\n headerName: settingsCopy.mobile_devices_column_name,\n renderHeader: HeaderCell,\n renderCell: (params) => (\n <Stack alignItems=\"center\" direction=\"row\" gap={4}>\n <Text variant=\"body2\">{params.value}</Text>\n <IconButton\n aria-label={settingsCopy.mobile_devices_edit_label}\n color=\"secondary\"\n onClick={() => onClickDeviceEdit(params.row as Device)}\n >\n <Icon name=\"edit\" />\n </IconButton>\n </Stack>\n ),\n sortable: true,\n flex: 1,\n minWidth: 200,\n },\n {\n field: 'device_type',\n headerName: settingsCopy.mobile_devices_column_type,\n renderHeader: HeaderCell,\n sortable: true,\n hideSortIcons: false,\n flex: 1,\n minWidth: 150,\n },\n {\n field: 'created_at',\n headerName: settingsCopy.mobile_devices_column_added,\n renderHeader: HeaderCell,\n valueFormatter: (value: number) =>\n formatDistanceToNow(fromUnixTime(value), { addSuffix: true }),\n sortable: true,\n hideSortIcons: false,\n flex: 1,\n minWidth: 150,\n },\n {\n field: 'delete',\n headerName: '',\n renderHeader: HeaderCell,\n renderCell: (params) => (\n <Stack mr={4}>\n <IconButton\n aria-label={settingsCopy.mobile_devices_delete_label}\n color=\"secondary\"\n onClick={() => onClickDeviceDelete(params.row as Device)}\n >\n <Icon name=\"delete\" />\n </IconButton>\n </Stack>\n ),\n sortable: false,\n hideSortIcons: false,\n width: 58,\n },\n ]\n\n const rows = React.useMemo(() => {\n return devices.map((device) => ({\n id: device.guid,\n ...device,\n device_type: `${device.make} ${device.model}`,\n }))\n }, [devices])\n\n return (\n <Box sx={{ width: '100%' }}>\n <DataGridPro\n columns={columns}\n disableColumnFilter={true}\n disableColumnMenu={true}\n disableRowSelectionOnClick={true}\n rows={rows}\n slotProps={{\n footer: {\n sx: { justifyContent: 'flex-end' },\n },\n }}\n slots={{\n footer: () => (\n <Box\n sx={{\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n p: '12px 16px',\n }}\n >\n <Text color={theme.palette.text.secondary} variant=\"body2\">\n {\n buildDynamicCopy(\n settingsCopy.mobile_devices_count,\n <b>{devices.length}</b>,\n <b>{devices.length}</b>,\n ) as string\n }\n </Text>\n </Box>\n ),\n }}\n sx={{\n border: '1px solid',\n borderColor: theme.palette.neutral.light,\n borderRadius: '8px',\n '& .MuiDataGrid-columnHeader .MuiIconButton-root': {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n },\n },\n '& .MuiDataGrid-sortIcon': {\n color: theme.palette.primary.main,\n },\n }}\n />\n </Box>\n )\n}\n\nexport default DeviceTable\n","import React from 'react'\nimport { formatDistanceToNow } from 'date-fns/formatDistanceToNow'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\n\nimport { useTheme } from '@mui/material/styles'\nimport Accordion from '@mui/material/Accordion'\nimport AccordionDetails from '@mui/material/AccordionDetails'\nimport AccordionSummary from '@mui/material/AccordionSummary'\nimport Box from '@mui/material/Box'\nimport IconButton from '@mui/material/IconButton'\nimport Stack from '@mui/material/Stack'\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../../common'\nimport { Device } from '../../../core'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface DeviceListProps {\n devices: Device[]\n onClickDeviceEdit: (device: Device) => void\n onClickDeviceDelete: (device: Device) => void\n}\n\nexport const DeviceList: React.FC<DeviceListProps> = ({\n devices,\n onClickDeviceEdit,\n onClickDeviceDelete,\n}) => {\n const theme = useTheme()\n const { settings: settingsCopy } = useGlobalCopyStore()\n const [expanded, setExpanded] = React.useState<string | false>(false)\n\n const handleChange = (guid: string) => (_: React.SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? guid : false)\n }\n\n return (\n <Stack mx={-28} sx={{ '& .MuiAccordion-root': { mb: 0, mt: 0 } }}>\n {devices.map((device) => (\n <Accordion\n expanded={expanded === device.guid}\n key={device.guid}\n onChange={handleChange(device.guid)}\n sx={{ boxShadow: 'none' }}\n >\n <AccordionSummary\n expandIcon={<Icon color={'secondary'} name=\"keyboard_arrow_down\" size={24} />}\n sx={{\n padding: '14px 24px',\n borderBottom: '1px solid',\n borderColor: theme.palette.divider,\n }}\n >\n <Stack gap={4}>\n <Text bold={true} variant=\"body1\">\n {device.name}\n </Text>\n <Text color={theme.palette.text.secondary} variant=\"body2\">\n {`${device.make} ${device.model}`}\n </Text>\n <Text color={theme.palette.text.secondary} variant=\"body2\">\n {formatDistanceToNow(fromUnixTime(device.created_at), { addSuffix: true })}\n </Text>\n </Stack>\n </AccordionSummary>\n <AccordionDetails\n sx={{ backgroundColor: theme.palette.background.default, p: '0 0 0 24px' }}\n >\n <Stack\n onClick={() => onClickDeviceEdit(device)}\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n width: '100%',\n gap: 12,\n py: 16,\n cursor: 'pointer',\n borderBottom: '1px solid',\n borderColor: theme.palette.divider,\n }}\n >\n <IconButton aria-label={settingsCopy.mobile_devices_edit_label} color=\"secondary\">\n <Icon name=\"edit\" />\n </IconButton>\n <Text variant=\"body1\">{settingsCopy.mobile_devices_edit_label}</Text>\n </Stack>\n <Stack\n onClick={() => onClickDeviceDelete(device)}\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n width: '100%',\n gap: 12,\n py: 16,\n cursor: 'pointer',\n }}\n >\n <IconButton aria-label={settingsCopy.mobile_devices_delete_label} color=\"secondary\">\n <Icon name=\"delete\" />\n </IconButton>\n <Text variant=\"body1\">{settingsCopy.mobile_devices_delete_label}</Text>\n </Stack>\n </AccordionDetails>\n </Accordion>\n ))}\n <Box\n sx={{\n backgroundColor: theme.palette.background.default,\n borderTop: '1px solid',\n borderColor: theme.palette.divider,\n p: '12px 16px',\n }}\n >\n <Text color={theme.palette.text.secondary} variant=\"body2\">\n {\n buildDynamicCopy(\n settingsCopy.mobile_devices_count,\n <b>{devices.length}</b>,\n <b>{devices.length}</b>,\n ) as string\n }\n </Text>\n </Box>\n </Stack>\n )\n}\n\nexport default DeviceList\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useTheme } from '@mui/material/styles'\nimport Stack from '@mui/material/Stack'\nimport TextField from '@mui/material/TextField'\nimport { P, Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore, useSettingsStore } from '../../../common'\nimport { Device } from '../../../core'\nimport { Dialog } from '../../../common/components'\nimport { DialogType } from '../../constants/Settings'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface DeviceDialogProps {\n dialogType: string\n isOpen: boolean\n onClose: () => void\n device?: Device\n deviceToken?: string\n}\n\nconst DeviceDialog: React.FC<DeviceDialogProps> = ({\n dialogType,\n isOpen,\n onClose,\n device,\n deviceToken = '',\n}) => {\n const theme = useTheme()\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { updateDevice, deleteDevice, setAlert, loadDevices } = useSettingsStore()\n\n const [deviceName, setDeviceName] = React.useState('')\n\n React.useEffect(() => {\n if (device) setDeviceName(device.name)\n }, [device, dialogType])\n\n const getDialogTitle = () => {\n switch (dialogType) {\n case DialogType.Edit:\n return settingsCopy.mobile_devices_edit_label\n case DialogType.Delete:\n return settingsCopy.mobile_devices_delete_label\n default:\n return ''\n }\n }\n\n const getDialogPrimaryText = () => {\n switch (dialogType) {\n case DialogType.Token:\n return commonCopy.done_button\n case DialogType.Edit:\n return commonCopy.save_button\n case DialogType.Delete:\n return commonCopy.delete_button\n default:\n return ''\n }\n }\n\n const getDialogStyles = () => {\n const baseStyles = {\n '& .MuiDialogContent-root': {\n width: 400,\n pt: 0,\n },\n }\n\n if (dialogType === DialogType.Token) {\n return {\n ...baseStyles,\n '& .MuiToolbar-root:last-child': {\n padding: '32px 60px 48px',\n justifyContent: 'center',\n },\n '& .MuiButton-root:first-child': {\n display: 'none',\n },\n '& .MuiButton-root:last-child': {\n flex: 1,\n },\n }\n }\n\n return {\n ...baseStyles,\n '& .MuiToolbar-root:last-child': {\n gap: 8,\n padding: 24,\n justifyContent: 'flex-end',\n },\n ...(dialogType === DialogType.Delete && {\n '& .MuiTypography-body1': {\n padding: 0,\n },\n }),\n }\n }\n\n const handlePrimaryAction = async () => {\n if (dialogType === DialogType.Token) {\n onClose()\n }\n\n if (dialogType === DialogType.Edit && device) {\n const updatedDevice = { ...device, name: deviceName }\n const res = await updateDevice(updatedDevice)\n\n if (res.success) {\n setAlert(settingsCopy.mobile_devices_edit_success, 'success')\n loadDevices()\n } else {\n setAlert(\n buildDynamicCopy(settingsCopy.mobile_devices_edit_error, device.name) as string,\n 'error',\n )\n }\n onClose()\n }\n\n if (dialogType === DialogType.Delete && device) {\n const res = await deleteDevice(device.guid)\n\n if (res.success) {\n setAlert(\n buildDynamicCopy(settingsCopy.mobile_devices_delete_success, device.name) as string,\n 'success',\n )\n loadDevices()\n } else {\n setAlert(\n buildDynamicCopy(settingsCopy.mobile_devices_delete_error, device.name) as string,\n 'error',\n )\n }\n onClose()\n }\n }\n\n return (\n <Dialog\n copy={{ title: getDialogTitle() }}\n isOpen={isOpen}\n onClose={onClose}\n onPrimaryAction={handlePrimaryAction}\n onSecondaryAction={onClose}\n primaryColor={dialogType === DialogType.Delete ? 'error' : undefined}\n primaryText={getDialogPrimaryText()}\n secondaryText={dialogType === DialogType.Token ? commonCopy.back : commonCopy.cancel_button}\n sx={getDialogStyles()}\n >\n {dialogType === DialogType.Token && (\n <Stack spacing={16} sx={{ px: 40, textAlign: 'center', width: '100%' }}>\n <Text bold={true} truncate={false} variant=\"body1\">\n {settingsCopy.mobile_devices_access_label}\n </Text>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.mobile_devices_access_info_1}\n </Text>\n <P\n sx={{\n border: `1px solid ${theme.palette.neutral.light}`,\n borderRadius: '4px',\n p: '16px 32px',\n }}\n variant=\"h1\"\n >\n {deviceToken}\n </P>\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.mobile_devices_access_info_2}\n </Text>\n </Stack>\n )}\n {dialogType === DialogType.Edit && (\n <Stack>\n <TextField onChange={(e) => setDeviceName(e.target.value)} value={deviceName} />\n </Stack>\n )}\n {dialogType === DialogType.Delete && <P>{settingsCopy.mobile_devices_delete_info}</P>}\n </Dialog>\n )\n}\n\nexport default observer(DeviceDialog)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { H3, P, Text } from '@mxenabled/mxui'\n\nimport {\n Loader,\n useGlobalCopyStore,\n useGlobalUiStore,\n useScreenSize,\n useSettingsStore,\n} from '../../../common'\n\nimport type { Device } from '../../../core'\n\nimport { DialogType } from '../../constants/Settings'\nimport DeviceTable from './DeviceTable'\nimport DeviceList from './DeviceList'\nimport DeviceDialog from './DeviceDialog'\n\nexport const DeviceTab = observer(() => {\n const { isMobile } = useScreenSize()\n const { settings: settingsCopy } = useGlobalCopyStore()\n const { isCopyLoaded, isInitialized } = useGlobalUiStore()\n const { setAlert, devices, loadDevices, generateDeviceToken } = useSettingsStore()\n\n const [dialog, setDialog] = React.useState({ open: false, type: '' })\n const [selectedDevice, setSelectedDevice] = React.useState<Device | undefined>()\n const [deviceToken, setDeviceToken] = React.useState('')\n\n React.useEffect(() => {\n if (isInitialized) {\n loadDevices()\n }\n }, [isInitialized])\n\n const handleGenerateDeviceToken = async () => {\n const token = await generateDeviceToken()\n if (token) {\n setDeviceToken(token)\n setDialog({ open: true, type: DialogType.Token })\n } else {\n setAlert(settingsCopy.mobile_devices_access_error, 'error')\n }\n }\n\n const handleClickDeviceEdit = (device: Device) => {\n setSelectedDevice(device)\n setDialog({ open: true, type: DialogType.Edit })\n }\n\n const handleClickDeviceDelete = (device: Device) => {\n setSelectedDevice(device)\n setDialog({ open: true, type: DialogType.Delete })\n }\n\n const handleCloseDialog = () => {\n setDialog({ open: false, type: '' })\n setSelectedDevice(undefined)\n }\n\n if (!isCopyLoaded || !isInitialized) {\n return <Loader />\n }\n\n return (\n <Stack\n sx={{\n backgroundColor: 'background.paper',\n p: 24,\n gap: 24,\n }}\n >\n <Stack gap={4}>\n <H3>{settingsCopy.mobile_devices_title}</H3>\n <P variant=\"body1\">{settingsCopy.mobile_devices_info}</P>\n </Stack>\n\n {/* Device Table/List */}\n {isMobile ? (\n <DeviceList\n devices={devices}\n onClickDeviceDelete={handleClickDeviceDelete}\n onClickDeviceEdit={handleClickDeviceEdit}\n />\n ) : (\n <DeviceTable\n devices={devices}\n onClickDeviceDelete={handleClickDeviceDelete}\n onClickDeviceEdit={handleClickDeviceEdit}\n />\n )}\n\n {/* Token CTA */}\n <Stack sx={{ alignItems: 'center', px: 24, py: 12, gap: 4 }}>\n <Text bold={true} variant=\"body1\">\n {settingsCopy.mobile_devices_access_title}\n </Text>\n <P align=\"center\" variant=\"body2\">\n {settingsCopy.mobile_devices_access_description}\n </P>\n <Button onClick={handleGenerateDeviceToken} variant=\"text\">\n {settingsCopy.mobile_devices_access_cta}\n </Button>\n </Stack>\n\n {/* Dialogs (Token, Edit, or Delete) */}\n <DeviceDialog\n device={selectedDevice}\n deviceToken={deviceToken}\n dialogType={dialog.type}\n isOpen={dialog.open}\n onClose={handleCloseDialog}\n />\n </Stack>\n )\n})\n\nexport default DeviceTab\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemIcon from '@mui/material/ListItemIcon'\nimport ListItemText from '@mui/material/ListItemText'\nimport { useTheme } from '@mui/material/styles'\nimport { type SxProps } from '@mui/material/styles'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\ninterface RuleListItemProps {\n onClick: () => void\n primaryText?: string\n secondaryText?: string\n sx?: SxProps\n}\n\nconst RuleListItem: React.FC<RuleListItemProps> = observer(\n ({ onClick, primaryText, secondaryText, sx }) => {\n const theme = useTheme()\n\n return (\n <ListItem sx={{ bgcolor: theme.palette.background.paper }}>\n <ListItemButton alignItems=\"flex-start\" onClick={onClick} sx={sx}>\n <ListItemText primary={primaryText} secondary={secondaryText} />\n <ListItemIcon>\n <ChevronRight />\n </ListItemIcon>\n </ListItemButton>\n </ListItem>\n )\n },\n)\n\nexport default RuleListItem\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport { useCategoryStore, useGlobalCopyStore, useSettingsStore } from '../../../../common'\n\nimport { CategorySelectorDrawer } from '../../../../categories'\nimport RulesListItem from '../components/RuleListItem'\n\nconst EditCategoryAction = observer(() => {\n const { settings: settingsCopy } = useGlobalCopyStore()\n const { categories } = useCategoryStore()\n const { selectedRule: rule, updateRuleCategory } = useSettingsStore()\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n const handleClose = (): void => {\n setIsOpen(false)\n }\n\n const handleOpen = (): void => {\n setIsOpen(true)\n }\n\n const getCategoryName = (categoryGuid: string) => {\n return categories.find((category) => category.guid === categoryGuid)?.name\n }\n\n const handleCategorySelect = async (guid: string) => {\n if (rule && rule.category_guid !== guid) {\n rule.category_guid = guid\n await updateRuleCategory(rule)\n }\n handleClose()\n }\n\n return (\n <React.Fragment>\n <RulesListItem\n onClick={handleOpen}\n primaryText={rule?.category_guid ? getCategoryName(rule.category_guid) : ''}\n secondaryText={settingsCopy.category}\n />\n <CategorySelectorDrawer\n initialSelected={rule?.category_guid ? rule.category_guid : undefined}\n onClose={handleClose}\n onSelect={handleCategorySelect}\n showDrawer={isOpen}\n title={settingsCopy.select_category}\n />\n </React.Fragment>\n )\n})\n\nexport default EditCategoryAction\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport TextField from '@mui/material/TextField'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Dialog, useGlobalCopyStore, useSettingsStore } from '../../../../common'\nimport RuleListItem from '../components/RuleListItem'\n\nconst EditPayeeAction = observer(() => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n const { selectedRule: rule, updateRulePayee } = useSettingsStore()\n\n const theme = useTheme()\n\n const [isOpen, setIsOpen] = React.useState(false)\n const initialPayeeName = rule?.description ? rule.description : rule?.match_description\n\n const [payeeName, setPayeeName] = React.useState(initialPayeeName ? initialPayeeName : '')\n\n const handleOpen = (): void => {\n setIsOpen(true)\n }\n\n const handleSave = async () => {\n if (payeeName !== initialPayeeName && rule) {\n rule.description = payeeName\n await updateRulePayee(rule)\n setIsOpen(false)\n }\n }\n\n return (\n <React.Fragment>\n <RuleListItem\n onClick={handleOpen}\n primaryText={initialPayeeName}\n secondaryText={settingsCopy.payee}\n />\n <Dialog\n copy={{ title: settingsCopy.edit_payee }}\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onPrimaryAction={handleSave}\n onSecondaryAction={() => setIsOpen(false)}\n primaryText={commonCopy.save_button}\n secondaryText={commonCopy.cancel_button}\n sx={{\n '& .MuiDialogContent-root': { pt: 0, width: 400 },\n path: { fill: theme.palette.secondary.darker },\n }}\n >\n <TextField\n onChange={(e) => setPayeeName(e.target.value)}\n sx={{ width: 352 }}\n value={payeeName}\n />\n </Dialog>\n </React.Fragment>\n )\n})\n\nexport default EditPayeeAction\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\nimport { Text } from '@mxenabled/mxui'\nimport { Dialog, useGlobalCopyStore } from '../../../../common'\n\ninterface ActionProps {\n isOpen: boolean\n onClose: () => void\n onDelete: () => void\n}\n\nconst DeleteRuleAction: React.FC<ActionProps> = observer(({ onClose, onDelete, isOpen }) => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n\n return (\n <Dialog\n copy={{ title: settingsCopy.delete_rule }}\n isOpen={isOpen}\n onClose={onClose}\n onPrimaryAction={onDelete}\n onSecondaryAction={onClose}\n primaryColor=\"error\"\n primaryText={commonCopy.delete_button}\n secondaryColor=\"secondary\"\n secondaryText={commonCopy.cancel_button}\n sx={{ '& .MuiDialogContent-root': { pt: 0, width: 400 } }}\n >\n <Text truncate={false} variant=\"body2\">\n {settingsCopy.delete_rule_confirm}\n </Text>\n </Dialog>\n )\n})\n\nexport default DeleteRuleAction\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Divider from '@mui/material/Divider'\nimport ListSubheader from '@mui/material/ListSubheader'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { Drawer, useGlobalCopyStore } from '../../../../common'\n\nimport EditCategoryAction from '../actions/EditCategoryAction'\nimport EditPayeeAction from '../actions/EditPayeeAction'\nimport DeleteRuleAction from '../actions/DeleteRuleAction'\n\ninterface EditRuleDetailsProps {\n isOpen: boolean\n onClose: () => void\n onDelete: () => void\n}\n\nconst EditRuleDetails: React.FC<EditRuleDetailsProps> = observer(\n ({ isOpen, onClose, onDelete }) => {\n const { common: commonCopy, settings: settingsCopy } = useGlobalCopyStore()\n\n const [showDeleteDialog, setShowDeleteDialog] = React.useState(false)\n\n return (\n <Drawer\n hasSecondaryAction={false}\n isOpen={isOpen}\n onClose={onClose}\n onPrimaryAction={() => {\n setShowDeleteDialog(true)\n }}\n primaryColor=\"error\"\n primaryText={commonCopy.delete_button}\n title={settingsCopy.edit_rule}\n >\n <ListSubheader>\n <Text bold={true} variant=\"caption\">\n {settingsCopy.details}\n </Text>\n </ListSubheader>\n\n <EditPayeeAction />\n <Divider sx={{ ml: 24 }} />\n <EditCategoryAction />\n <Divider sx={{ ml: 24 }} />\n <DeleteRuleAction\n isOpen={showDeleteDialog}\n onClose={() => setShowDeleteDialog(false)}\n onDelete={onDelete}\n />\n </Drawer>\n )\n },\n)\n\nexport default EditRuleDetails\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\nimport Divider from '@mui/material/Divider'\n\nimport { useCategoryStore, useScreenSize, useSettingsStore } from '../../../../common'\nimport { type TransactionRule } from '../../../../core'\n\nimport EditRuleDetails from '../components/EditRuleDetails'\nimport RuleListItem from '../components/RuleListItem'\nimport { useCategoryUiStore } from '../../../../categories'\n\ninterface ActionProps {\n rule: TransactionRule\n}\n\nconst EditRuleAction: React.FC<ActionProps> = observer(({ rule }) => {\n const { categories } = useCategoryStore()\n const { setSelectedGuid } = useCategoryUiStore()\n const { deleteTransactionRule, setSelectedRule } = useSettingsStore()\n const { isDesktop, isTablet } = useScreenSize()\n const [isOpen, setIsOpen] = React.useState(false)\n\n const handleClose = (): void => {\n setIsOpen(false)\n setSelectedGuid(null) // this resets the selected value in the category selector drawer when the edit rule drawer closes\n setSelectedRule(undefined)\n }\n\n const handleDelete = async () => {\n await deleteTransactionRule()\n handleClose()\n }\n\n const handleOpen = (): void => {\n setIsOpen(true)\n setSelectedRule(rule)\n }\n\n const getCategoryName = (categoryGuid: string) => {\n return categories.find((category) => category.guid === categoryGuid)?.name\n }\n\n return (\n <React.Fragment>\n <RuleListItem\n onClick={handleOpen}\n primaryText={rule.description ? rule.description : rule.match_description}\n secondaryText={rule.category_guid ? getCategoryName(rule.category_guid) : ''}\n />\n <Divider sx={{ ml: isTablet || isDesktop ? 0 : 24 }} />\n <EditRuleDetails isOpen={isOpen} onClose={handleClose} onDelete={handleDelete} />\n </React.Fragment>\n )\n})\n\nexport default EditRuleAction\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\nimport Stack from '@mui/material/Stack'\n\nimport { H3, P } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore, useSettingsStore, useWidgetLoadTimer } from '../../../common'\nimport { TransactionRule } from '../../../core'\n\nimport EditRuleAction from './actions/EditRuleAction'\n\nconst TransactionRulesTab = observer(() => {\n const { settings: settingsCopy } = useGlobalCopyStore()\n const { loadTransactionRules, transactionRules } = useSettingsStore()\n const [isTabInitialized, setIsTabInitialized] = React.useState(false)\n\n useWidgetLoadTimer({\n widgetName: 'TransactionRulesTab',\n isLoaded: isTabInitialized,\n })\n\n React.useEffect(() => {\n loadTransactionRules().finally(() => setIsTabInitialized(true))\n }, [])\n\n return (\n <Stack sx={{ gap: 24, py: 24 }}>\n <Stack sx={{ px: 24 }}>\n <H3>{settingsCopy.transaction_rules_label}</H3>\n <P variant=\"body1\">{settingsCopy.transaction_rules_description}</P>\n </Stack>\n <List>\n {transactionRules.map((rule: TransactionRule, index: number) => (\n <EditRuleAction key={index} rule={rule} />\n ))}\n </List>\n </Stack>\n )\n})\n\nexport default TransactionRulesTab\n","import { observer } from 'mobx-react-lite'\n\nimport Alert from '@mui/material/Alert'\nimport Snackbar from '@mui/material/Snackbar'\n\nimport { useAppConfig, useSettingsStore } from '../../common'\n\nimport ProfileTab from './profile/ProfileTab'\nimport DeviceTab from './devices/DeviceTab'\nimport TransactionRulesTab from './transactionrules/TransactionRulesTab'\nimport { NotificationSettings } from './notifications/NotificationSettings'\nimport { SettingsTabs } from '../SettingsWidget'\nimport { Help } from '../../help'\nimport Stack from '@mui/material/Stack'\n\ninterface SettingsWidgetContentsProps {\n selectedTab: SettingsTabs\n}\n\nexport const SettingsWidgetContents = observer(({ selectedTab }: SettingsWidgetContentsProps) => {\n const { alert, setAlert } = useSettingsStore()\n const {\n config: { display_user_profile_in_settings },\n } = useAppConfig()\n\n return (\n <>\n {selectedTab === SettingsTabs.Profile && <ProfileTab />}\n {selectedTab === SettingsTabs.Devices && <DeviceTab />}\n {selectedTab === SettingsTabs.Notifications && (\n <NotificationSettings showPersonalDetails={!display_user_profile_in_settings} />\n )}\n {selectedTab === SettingsTabs.TransactionRules && <TransactionRulesTab />}\n {selectedTab === SettingsTabs.Help && (\n <Stack sx={{ px: 24 }}>\n <Help />\n </Stack>\n )}\n\n <Snackbar\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n autoHideDuration={3500}\n onClose={() => setAlert('')}\n open={Boolean(alert.message)}\n >\n <Alert\n onClose={() => {\n setAlert('')\n }}\n severity={alert.severity}\n variant=\"filled\"\n >\n {alert.message}\n </Alert>\n </Snackbar>\n </>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport {\n Loader,\n useAppConfig,\n useCategoryStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n useScreenSize,\n useWidgetLoadTimer,\n WidgetContainer,\n} from '../common'\nimport { WidgetProps } from '../core'\n\nimport { SettingsWidgetContents } from './components/SettingsWidgetContents'\n\nexport enum SettingsTabs {\n Profile = 0,\n Devices = 1,\n Notifications = 2,\n TransactionRules = 3,\n Help = 4,\n}\n\nexport const SettingsWidget = observer(({ onBackClick, onMenuClick, sx }: WidgetProps) => {\n const { settings: copy } = useGlobalCopyStore()\n const { isCopyLoaded, isInitialized } = useGlobalUiStore()\n const { config } = useAppConfig()\n const { isMobile } = useScreenSize()\n const { categoriesLoaded, loadCategories } = useCategoryStore()\n\n useWidgetLoadTimer({\n widgetName: 'SettingsWidget',\n isLoaded: isInitialized && isCopyLoaded,\n })\n\n React.useEffect(() => {\n if (!categoriesLoaded) {\n loadCategories().finally()\n }\n }, [])\n\n const {\n display_user_profile_in_settings: userProfileEnabled,\n display_mobile_devices_in_settings: mobileDevicesEnabled,\n display_notification_settings_in_settings: notificationsEnabled,\n display_user_transaction_rules_in_settings: transactionRulesEnabled,\n show_help_widget_in_master: helpEnabled,\n } = config\n\n const tabs = [\n { enabled: userProfileEnabled, index: 0, label: copy?.profile_label },\n { enabled: mobileDevicesEnabled, index: 1, label: copy?.mobile_devices_label },\n { enabled: notificationsEnabled, index: 2, label: copy?.notifications_label },\n { enabled: transactionRulesEnabled, index: 3, label: copy?.transaction_rules_label },\n { enabled: helpEnabled, index: 4, label: copy?.help_label },\n ]\n\n const firstEnabledTab = tabs.find((tab) => tab.enabled)\n const [selectedTab, setSelectedTab] = React.useState(firstEnabledTab ? firstEnabledTab.index : -1)\n\n if (!isCopyLoaded || !isInitialized) {\n return <Loader />\n }\n\n return (\n <WidgetContainer\n onBackClick={onBackClick}\n onMenuClick={onMenuClick}\n showAccountFilter={false}\n sx={{ height: 'calc(100dvh - 24px)', overflow: 'auto', ...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={selectedTab}\n variant=\"scrollable\"\n >\n {tabs.map(\n (tab) => tab.enabled && <Tab key={tab.index} label={tab.label} value={tab.index} />,\n )}\n </Tabs>\n\n <SettingsWidgetContents selectedTab={selectedTab} />\n </Stack>\n </WidgetContainer>\n )\n})\n","import { observer } from 'mobx-react-lite'\n\nimport IconButton from '@mui/material/IconButton'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronLeft } from '@mxenabled/mx-icons'\n\nimport { useAppConfig, WidgetContainer } from '../common'\nimport { WidgetProps } from '../core'\n\nimport { NotificationSettings } from './components/notifications/NotificationSettings'\n\nexport const NotificationSettingsWidget = observer((props: WidgetProps) => {\n const { clientConfig } = useAppConfig()\n\n const view = clientConfig?.master?.deep_link_params?.view\n const showBackButton = clientConfig?.master?.show_back_button\n\n if (view) {\n return (\n <Stack>\n {showBackButton && props.onBackClick && (\n <IconButton\n color=\"primary\"\n onClick={props.onBackClick}\n sx={{ p: 10, alignSelf: 'flex-start' }}\n >\n <ChevronLeft size={24} />\n </IconButton>\n )}\n <NotificationSettings view={view} />\n </Stack>\n )\n }\n\n return (\n <WidgetContainer {...props} showAccountFilter={false}>\n <Stack my={24}>\n <NotificationSettings />\n </Stack>\n </WidgetContainer>\n )\n})\n","import React from 'react'\nimport Stack from '@mui/material/Stack'\n\nimport { useCategoryStore, useScreenSize, WidgetContainer } from '../common'\nimport { WidgetProps } from '../core'\n\nimport TransactionRulesTab from './components/transactionrules/TransactionRulesTab'\n\nexport const TransactionRulesWidget = (props: WidgetProps) => {\n const { isMobile } = useScreenSize()\n const { categoriesLoaded, loadCategories } = useCategoryStore()\n\n React.useEffect(() => {\n if (!categoriesLoaded) {\n loadCategories().finally()\n }\n })\n\n return (\n <WidgetContainer {...props} showAccountFilter={false}>\n <Stack sx={{ mx: isMobile ? 0 : 48, my: 24 }}>\n <TransactionRulesTab />\n </Stack>\n </WidgetContainer>\n )\n}\n"],"names":["ProfileForm","availableWidth","handleOnLeavClick","theme","useTheme","commonCopy","settingsCopy","useGlobalCopyStore","isDesktop","isMobile","isSmallMobile","isTablet","useScreenSize","config","useAppConfig","updateUser","useSettingsStore","user","useUserStore","modifiedUser","setModifiedUser","React","hasUnsavedChanges","setHasUnsavedChanges","showLeaveDialog","setShowLeaveDialog","boxRef","showVerifyEmail","showVerifyPhone","handleClickOutside","event","formatReadableBirthday","utc","year","month","day","handleSave","handleLeaveDialog","handleKeepEditing","handleInput","update","changedUser","jsxs","Fragment","Box","jsx","H3","P","Stack","TextField","e","VerifyEmailAction","VerifyPhoneAction","LocalizationProvider","AdapterDateFns","DatePicker","value","getUnixTime","alpha","Button","Dialog","ProfileTab","observer","DialogType","DeviceTable","devices","onClickDeviceEdit","onClickDeviceDelete","columns","HeaderCell","params","Text","IconButton","Icon","formatDistanceToNow","fromUnixTime","rows","device","DataGridPro","buildDynamicCopy","DeviceList","expanded","setExpanded","handleChange","guid","_","isExpanded","Accordion","AccordionSummary","AccordionDetails","DeviceDialog","dialogType","isOpen","onClose","deviceToken","updateDevice","deleteDevice","setAlert","loadDevices","deviceName","setDeviceName","getDialogTitle","getDialogPrimaryText","getDialogStyles","baseStyles","handlePrimaryAction","updatedDevice","DeviceDialog$1","DeviceTab","isCopyLoaded","isInitialized","useGlobalUiStore","generateDeviceToken","dialog","setDialog","selectedDevice","setSelectedDevice","setDeviceToken","handleGenerateDeviceToken","token","handleClickDeviceEdit","handleClickDeviceDelete","handleCloseDialog","Loader","RuleListItem","onClick","primaryText","secondaryText","sx","ListItem","ListItemButton","ListItemText","ListItemIcon","ChevronRight","EditCategoryAction","categories","useCategoryStore","rule","updateRuleCategory","setIsOpen","handleClose","handleOpen","getCategoryName","categoryGuid","category","handleCategorySelect","RulesListItem","CategorySelectorDrawer","EditPayeeAction","updateRulePayee","initialPayeeName","payeeName","setPayeeName","DeleteRuleAction","onDelete","EditRuleDetails","showDeleteDialog","setShowDeleteDialog","Drawer","ListSubheader","Divider","EditRuleAction","setSelectedGuid","useCategoryUiStore","deleteTransactionRule","setSelectedRule","handleDelete","TransactionRulesTab","loadTransactionRules","transactionRules","isTabInitialized","setIsTabInitialized","useWidgetLoadTimer","List","index","SettingsWidgetContents","selectedTab","alert","display_user_profile_in_settings","SettingsTabs","NotificationSettings","Help","Snackbar","Alert","SettingsWidget","onBackClick","onMenuClick","copy","categoriesLoaded","loadCategories","userProfileEnabled","mobileDevicesEnabled","notificationsEnabled","transactionRulesEnabled","helpEnabled","tabs","firstEnabledTab","tab","setSelectedTab","WidgetContainer","Tabs","newValue","Tab","NotificationSettingsWidget","props","clientConfig","view","showBackButton","ChevronLeft","TransactionRulesWidget"],"mappings":"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"}
|