@mx-cartographer/experiences 6.26.0 → 6.26.1-alpha.mega1

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.
Files changed (84) hide show
  1. package/dist/AccountStore-DkL93tXL.mjs +317 -0
  2. package/dist/AccountStore-DkL93tXL.mjs.map +1 -0
  3. package/dist/BudgetUtil-CVqAdv-j.mjs +187 -0
  4. package/dist/BudgetUtil-CVqAdv-j.mjs.map +1 -0
  5. package/dist/CashflowStore-gPEEBiXo.mjs +53 -0
  6. package/dist/CashflowStore-gPEEBiXo.mjs.map +1 -0
  7. package/dist/CategoryStore-m7oieLzP.mjs +260 -0
  8. package/dist/CategoryStore-m7oieLzP.mjs.map +1 -0
  9. package/dist/ConnectMiniWidget-CQWafYtQ.mjs +22966 -0
  10. package/dist/ConnectMiniWidget-CQWafYtQ.mjs.map +1 -0
  11. package/dist/DebtsStore-cUhIgJx6.mjs +145 -0
  12. package/dist/DebtsStore-cUhIgJx6.mjs.map +1 -0
  13. package/dist/Donut-CGNFni9y.mjs +58 -0
  14. package/dist/Donut-CGNFni9y.mjs.map +1 -0
  15. package/dist/FinstrongStore-BDG7l0nI.mjs +183 -0
  16. package/dist/FinstrongStore-BDG7l0nI.mjs.map +1 -0
  17. package/dist/GoalStore-o2waGeyf.mjs +293 -0
  18. package/dist/GoalStore-o2waGeyf.mjs.map +1 -0
  19. package/dist/Loader-CwdK8lfx.mjs +147 -0
  20. package/dist/Loader-CwdK8lfx.mjs.map +1 -0
  21. package/dist/MerchantStore-Cck9IGIH.mjs +125 -0
  22. package/dist/MerchantStore-Cck9IGIH.mjs.map +1 -0
  23. package/dist/NetWorthStore-D5eUfGQt.mjs +66 -0
  24. package/dist/NetWorthStore-D5eUfGQt.mjs.map +1 -0
  25. package/dist/NotificationStore-DCxw8W7u.mjs +141 -0
  26. package/dist/NotificationStore-DCxw8W7u.mjs.map +1 -0
  27. package/dist/RecurringTransactionsStore-Bijrgllq.mjs +337 -0
  28. package/dist/RecurringTransactionsStore-Bijrgllq.mjs.map +1 -0
  29. package/dist/SettingsStore-BhOYgUOa.mjs +352 -0
  30. package/dist/SettingsStore-BhOYgUOa.mjs.map +1 -0
  31. package/dist/TransactionApi-Dnbyi1JL.mjs +175 -0
  32. package/dist/TransactionApi-Dnbyi1JL.mjs.map +1 -0
  33. package/dist/TransactionStore-CiEtt5XJ.mjs +417 -0
  34. package/dist/TransactionStore-CiEtt5XJ.mjs.map +1 -0
  35. package/dist/TrendsStore-Idq3QfoA.mjs +131 -0
  36. package/dist/TrendsStore-Idq3QfoA.mjs.map +1 -0
  37. package/dist/accounts/index.es.js +18 -0
  38. package/dist/accounts/index.es.js.map +1 -0
  39. package/dist/analytics/index.es.js +170 -0
  40. package/dist/analytics/index.es.js.map +1 -0
  41. package/dist/budgets/index.es.js +1116 -0
  42. package/dist/budgets/index.es.js.map +1 -0
  43. package/dist/cashflow/index.es.js +118 -0
  44. package/dist/cashflow/index.es.js.map +1 -0
  45. package/dist/categories/index.es.js +10 -0
  46. package/dist/categories/index.es.js.map +1 -0
  47. package/dist/common/context/hooks.d.ts +13 -13
  48. package/dist/common/index.es.js +1549 -0
  49. package/dist/common/index.es.js.map +1 -0
  50. package/dist/dashboard/index.es.js +257 -0
  51. package/dist/dashboard/index.es.js.map +1 -0
  52. package/dist/debts/index.es.js +9 -0
  53. package/dist/debts/index.es.js.map +1 -0
  54. package/dist/finstrong/index.es.js +11 -0
  55. package/dist/finstrong/index.es.js.map +1 -0
  56. package/dist/goals/index.es.js +9 -0
  57. package/dist/goals/index.es.js.map +1 -0
  58. package/dist/help/components/content/section/index.d.ts +15 -15
  59. package/dist/help/index.es.js +6 -0
  60. package/dist/help/index.es.js.map +1 -0
  61. package/dist/investments/index.es.js +1694 -0
  62. package/dist/investments/index.es.js.map +1 -0
  63. package/dist/merchants/index.es.js +7 -0
  64. package/dist/merchants/index.es.js.map +1 -0
  65. package/dist/microinsights/index.es.js +21 -0
  66. package/dist/microinsights/index.es.js.map +1 -0
  67. package/dist/networth/index.es.js +11 -0
  68. package/dist/networth/index.es.js.map +1 -0
  69. package/dist/notifications/index.es.js +116 -0
  70. package/dist/notifications/index.es.js.map +1 -0
  71. package/dist/recurringtransactions/index.es.js +14 -0
  72. package/dist/recurringtransactions/index.es.js.map +1 -0
  73. package/dist/settings/index.es.js +112 -0
  74. package/dist/settings/index.es.js.map +1 -0
  75. package/dist/spending/index.es.js +632 -0
  76. package/dist/spending/index.es.js.map +1 -0
  77. package/dist/transactions/index.es.js +19 -0
  78. package/dist/transactions/index.es.js.map +1 -0
  79. package/dist/trends/index.es.js +10 -0
  80. package/dist/trends/index.es.js.map +1 -0
  81. package/package.json +91 -3
  82. package/dist/index.d.ts +0 -22
  83. package/dist/index.es.js +0 -29907
  84. package/dist/index.es.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../src/spending/utils/SpendingData.ts","../../src/spending/components/SpendingTabLabel.tsx","../../src/spending/components/SpendingDonut.tsx","../../src/spending/components/SpendingLegend.tsx","../../src/spending/components/MiniSpendingChart.tsx","../../src/spending/SpendingMiniWidget.tsx","../../src/spending/components/SpendingList.tsx","../../src/spending/components/SpendingChart.tsx","../../src/spending/components/Spending.tsx","../../src/spending/SpendingWidget.tsx"],"sourcesContent":["import { Theme } from '@mui/material'\n\nimport {\n Category,\n CategoryGuids,\n DateRangeCategoryTotals,\n DonutData,\n GoalsCopy,\n} from '../../common'\n\nimport { getCategoryColor } from '../../categories/util/CategoryUtil'\n\nconst TOP_CATEGORY_LENGTH = 5\n\nexport interface CategoryTotal {\n guid: string\n name: string\n color: string\n categoryTotals?: CategoryTotal[]\n amount: number\n}\n\nexport interface SpendingData {\n categoryData: CategoryTotal[]\n donutData: DonutData[]\n totalAmount: number\n}\n\n/**\n * Rolls all categories up into parent categories and return an array of CategoryTotal items.\n * @param categories - Array of all categories\n * @param theme - The current theme to use for colors\n * @param totals - And array of type DateRangeCategoryTotals\n */\nconst getTotalsByParentCategory = (\n categories: Category[],\n theme: Theme,\n totals: DateRangeCategoryTotals[],\n): CategoryTotal[] => {\n // Iterate over the category data from BE and roll up all categories into parent categories\n // acc is the accumulated category totals of type CategoryTotal that is initialized as an empty []\n // curr is the current DateRangeCategoryTotal\n return totals.reduce((acc, curr) => {\n if (curr.total > 0) {\n // Find category and if it doesn't exist, return acc\n const category = categories.find((c) => c.guid === curr.category_guid)\n if (!category) return acc\n\n // Find parent category and if it doesn't exist, return acc\n const parentGuid = category.parent_guid ?? category.guid\n const parentCategory = categories.find((c) => c.guid === parentGuid)\n if (!parentCategory) return acc\n\n const categoryTotal = {\n guid: category.guid,\n name: category.guid === parentGuid ? `General ${category.name}` : category.name,\n color: getCategoryColor(parentCategory.guid, theme),\n amount: curr.total,\n }\n\n // If parent category has already been added to acc then find it and add the current total,\n // otherwise add the parent category to acc.\n const parentCategoryTotal = acc.find((ct) => ct.guid === parentGuid)\n if (parentCategoryTotal) {\n parentCategoryTotal.amount += curr.total\n parentCategoryTotal.categoryTotals?.push(categoryTotal)\n } else {\n acc.push({\n guid: parentGuid,\n name: parentCategory.name,\n color: getCategoryColor(parentCategory.guid, theme),\n categoryTotals: [categoryTotal],\n amount: curr.total,\n })\n }\n }\n\n return acc\n }, [] as CategoryTotal[])\n}\n\n/**\n * Returns an object of type SpendingData containing a subset of category totals related to spending\n * Excludes Income and Transfers\n *\n * @param categories - Array of all categories\n * @param copy - Localized copy\n * @param theme - The current theme to use for colors\n * @param totals - And array of type DateRangeCategoryTotals\n */\nexport const getSpendingData = (\n categories: Category[],\n copy: GoalsCopy, // TODO: Replace after `Other` is added to SpendingCopy\n theme: Theme,\n totals: DateRangeCategoryTotals[],\n): SpendingData => {\n const parentCategoryTotals = getTotalsByParentCategory(categories, theme, totals)\n\n // Filter out Income and Transfers from spending totals\n // Sort in decending order by amount\n const spendingTotals = parentCategoryTotals\n .filter(\n (ct) =>\n ct.guid !== CategoryGuids.INCOME &&\n ct.guid !== CategoryGuids.INVESTMENTS &&\n ct.guid !== CategoryGuids.TRANSFER,\n )\n .sort((cat1, cat2) => cat2.amount - cat1.amount)\n\n // Calculate the total spend\n const totalAmount = spendingTotals.reduce(\n (acc: number, total: CategoryTotal) => acc + total.amount,\n 0,\n )\n\n // Find the number of top categories to include\n const length =\n spendingTotals.length > TOP_CATEGORY_LENGTH ? TOP_CATEGORY_LENGTH : spendingTotals.length\n\n // Only include the top categories\n const categoryData = spendingTotals.slice(0, length)\n\n // Map the category data to donut data\n const donutData = categoryData.map((categoryTotal) => ({\n id: categoryTotal.guid,\n color: getCategoryColor(categoryTotal.guid, theme),\n label: categoryTotal.name,\n value: (categoryTotal.amount / totalAmount) * 100,\n }))\n\n // If there additional categories outside of the top categories, combine them into an Other category\n if (spendingTotals.length > 5) {\n const otherCategories = spendingTotals.slice(TOP_CATEGORY_LENGTH, parentCategoryTotals.length)\n const otherTotal = otherCategories.reduce(\n (acc: number, total: CategoryTotal) => acc + total.amount,\n 0,\n )\n categoryData.push({\n guid: 'other',\n color: theme.palette.categories.others || '',\n name: copy.saving_goal_other,\n categoryTotals: otherCategories,\n amount: otherTotal,\n })\n\n donutData.push({\n id: 'other',\n color: theme.palette.categories.others || '',\n label: copy.saving_goal_other,\n value: (otherTotal / totalAmount) * 100,\n })\n }\n\n // Return an object of type SpendingData\n return {\n categoryData,\n donutData,\n totalAmount,\n }\n}\n\n/**\n * Returns an object of type SpendingData containing a subset of category totals related to income\n * Only includes Income subcategories\n *\n * @param categories - Array of all categories\n * @param monthlyTotals - And array of type DateRangeCategoryTotals\n * @param colors - An array of color strings to use for income colors\n */\nexport const getIncomeData = (\n categories: Category[],\n monthlyTotals: DateRangeCategoryTotals[],\n colors: string[],\n): SpendingData => {\n // Get all income subcategories\n const incomeCategories = categories.filter(\n (category) =>\n category.guid === CategoryGuids.INCOME || category.parent_guid === CategoryGuids.INCOME,\n )\n\n // Filter, sort & map DateRangeCategoryTotals to CategoryTotal objects\n // The filter return only subcategories with a parent category of Income\n // The sort is in acending order due to amounts being negative\n const incomeTotals: CategoryTotal[] = monthlyTotals\n .filter((total) => incomeCategories.some((category) => category.guid === total.category_guid))\n .sort((total1, total2) => total1.total - total2.total)\n .map((total, index) => {\n return {\n guid: total.category_guid,\n name: categories.find((cat) => cat.guid === total.category_guid)?.name,\n color: colors[index],\n categoryTotals: [],\n amount: Math.abs(total.total),\n }\n }) as CategoryTotal[]\n\n // Calculates the total income amount\n const totalAmount = incomeTotals.reduce(\n (acc: number, total: CategoryTotal) => acc + total.amount,\n 0,\n )\n\n // Maps the income totals to donut data\n const donutData = incomeTotals.map((incomeTotal) => ({\n id: incomeTotal.guid,\n color: incomeTotal.color,\n label: incomeTotal.name,\n value: (incomeTotal.amount / totalAmount) * 100,\n }))\n\n // Return an object of type SpendingData\n return {\n categoryData: incomeTotals,\n donutData,\n totalAmount,\n }\n}\n","import React from 'react'\n\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { formatCurrency } from '../../common'\n\ninterface SpendingTabLabelProps {\n amount: number\n label: string\n}\n\nconst SpendingTabLabel: React.FC<SpendingTabLabelProps> = ({ amount, label }) => {\n return (\n <Stack direction=\"column\">\n <Text bold={true} sx={{ textTransform: 'none' }} variant=\"Body\">\n {label}\n </Text>\n <Text variant=\"XSmall\">{formatCurrency(amount, '0,0')}</Text>\n </Stack>\n )\n}\n\nexport default SpendingTabLabel\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { CategoryIcon, CategoryIconVariants, Text } from '@mxenabled/mxui'\n\nimport {\n CategoryGuids,\n Donut,\n formatCurrency,\n useGlobalCopyStore,\n useScreenSize,\n} from '../../common'\n\nimport type { SpendingData } from '../utils/SpendingData'\nimport Button from '@mui/material/Button'\nimport { useTheme } from '@mui/material'\n\ninterface SpendingDonutProps {\n data: SpendingData\n isIncome?: boolean\n onSelected: (id: string) => void\n onViewTransactions?: (id: string) => void\n selectedId: string\n size?: number\n totalLabel: string\n variant?: 'mini' | 'full'\n}\n\nconst SpendingDonut: React.FC<SpendingDonutProps> = ({\n data,\n isIncome = false,\n onSelected,\n onViewTransactions,\n selectedId,\n size = 150,\n totalLabel,\n variant = 'mini',\n}) => {\n const { spending: spendingCopy } = useGlobalCopyStore()\n const theme = useTheme()\n const { isTablet } = useScreenSize()\n\n const selectedCategory = React.useMemo(\n () => (selectedId ? data.categoryData.find((cd) => cd.guid === selectedId) : undefined),\n [selectedId],\n )\n\n const donutData = React.useMemo(() => {\n if (data.donutData.length > 0) return data.donutData\n\n // Empty Donut zero state\n return [{ id: '0', color: theme.palette.divider, value: 100 }]\n }, [data, theme])\n\n const handleViewTransactions = () => {\n onViewTransactions?.(selectedId)\n }\n\n const iconSize = isTablet ? 32 : 48\n\n return (\n <Donut data={donutData} onClick={onSelected} selectedId={selectedId} size={size}>\n <Stack alignItems=\"center\" height=\"100%\" justifyContent=\"center\" width=\"100%\">\n <Stack alignItems=\"center\" justifyContent=\"center\" minHeight={size} minWidth={size}>\n {selectedCategory && (\n <Stack\n alignItems=\"center\"\n gap={variant === 'mini' ? 0 : 8}\n mb={variant === 'mini' ? 0 : 8}\n mt={variant === 'mini' ? 0 : -16}\n sx={\n variant === 'mini'\n ? { gap: 0, mb: 0 }\n : { gap: { xs: 4, xl: 8 }, mb: { xs: 4, xl: 8 } }\n }\n >\n <CategoryIcon\n categoryGuid={isIncome ? CategoryGuids.INCOME : selectedCategory.guid}\n size={variant === 'mini' ? 24 : iconSize}\n variant={CategoryIconVariants.Transparent}\n />\n <Text color=\"secondary\" noWrap={true} variant={variant === 'mini' ? 'Tiny' : 'Body'}>\n {selectedCategory ? selectedCategory.name : totalLabel}\n </Text>\n </Stack>\n )}\n\n {!selectedCategory && variant === 'full' && (\n <Text bold={true} color=\"secondary\" sx={{ mb: { xs: 4, xl: 8 } }}>\n {totalLabel}\n </Text>\n )}\n\n <Text variant={variant === 'mini' ? 'H2' : 'H1'}>\n {selectedCategory\n ? formatCurrency(selectedCategory.amount, '0,0')\n : formatCurrency(data.totalAmount, '0,0')}\n </Text>\n\n {!selectedCategory && variant === 'mini' && (\n <Text color=\"secondary\" noWrap={true} variant=\"Tiny\">\n {totalLabel}\n </Text>\n )}\n\n {variant === 'full' && (\n <Button\n aria-label={`View ${selectedCategory?.name || ''} Transactions`}\n disabled={data.categoryData.length === 0}\n onClick={handleViewTransactions}\n sx={{ mt: { xl: 4, xs: 0 }, zIndex: 1 }}\n variant=\"text\"\n >\n {spendingCopy.view_transactions}\n </Button>\n )}\n </Stack>\n </Stack>\n </Donut>\n )\n}\n\nexport default observer(SpendingDonut)\n","import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport type { SpendingData } from '../utils/SpendingData'\n\ninterface SpendingLegendProps {\n data: SpendingData\n onSelected: (id: string) => void\n selectedId: string\n}\n\nconst SpendingLegend: React.FC<SpendingLegendProps> = ({ data, onSelected, selectedId }) => {\n return (\n <Stack gap={8} height=\"100%\" justifyContent=\"center\" my=\"auto\">\n {data.categoryData.map((item) => (\n <Stack\n alignItems=\"center\"\n aria-label={item.name}\n aria-selected={item.guid === selectedId}\n direction=\"row\"\n gap={8}\n key={item.guid}\n onClick={() => onSelected(item.guid)}\n role=\"button\"\n sx={{ cursor: 'pointer' }}\n >\n <Box borderRadius={4} height={8} sx={{ backgroundColor: item.color }} width={8} />\n <Text bold={item.guid === selectedId} variant=\"XSmall\">\n {item.name}\n </Text>\n </Stack>\n ))}\n </Stack>\n )\n}\n\nexport default SpendingLegend\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { endOfMonth } from 'date-fns/endOfMonth'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\nimport useTheme from '@mui/material/styles/useTheme'\n\nimport { Loader, useCategoryStore, useGlobalCopyStore, useGlobalUiStore } from '../../common'\nimport { getIncomeData, getSpendingData } from '../utils/SpendingData'\n\nimport SpendingTabLabel from './SpendingTabLabel'\nimport SpendingDonut from './SpendingDonut'\nimport SpendingLegend from './SpendingLegend'\n\nconst MiniSpendingChart = () => {\n const theme = useTheme()\n const { goals: goalsCopy, spending: spendingCopy } = useGlobalCopyStore()\n const { selectedAccounts } = useGlobalUiStore()\n const {\n categories,\n dateRangeCategoryTotals,\n dataRangeTotalsLoaded,\n loadDateRangeCategoryTotals,\n } = useCategoryStore()\n\n const incomeColors = React.useMemo(\n () => [\n theme.palette.chartMono.chartMono5,\n theme.palette.chartMono.chartMono4,\n theme.palette.chartMono.chartMono3,\n theme.palette.chartMono.chartMono2,\n theme.palette.chartMono.chartMono1,\n theme.palette.chartMono.chartMono6,\n ],\n [theme],\n ) as string[]\n\n React.useEffect(() => {\n loadDateRangeCategoryTotals(\n selectedAccounts,\n startOfMonth(new Date()),\n endOfMonth(new Date()),\n ).finally()\n }, [selectedAccounts])\n\n const [selectedId, setSelectedId] = React.useState('')\n const [selectedTab, setSelectedTab] = React.useState(0)\n\n const spendingData = React.useMemo(\n () => getSpendingData(categories, goalsCopy, theme, dateRangeCategoryTotals),\n [categories, dateRangeCategoryTotals],\n )\n\n const incomeData = React.useMemo(\n () => getIncomeData(categories, dateRangeCategoryTotals, incomeColors),\n [categories, dateRangeCategoryTotals, incomeColors],\n )\n\n const handleTabChange = (_event: React.SyntheticEvent, newValue: number) => {\n setSelectedTab(newValue)\n setSelectedId('')\n }\n\n const handleSelected = (id: string) => {\n setSelectedId(selectedId === id ? '' : id)\n }\n\n if (!dataRangeTotalsLoaded) {\n return <Loader height={250} />\n }\n\n return (\n <Box width=\"100%\">\n <Tabs onChange={handleTabChange} value={selectedTab} variant=\"fullWidth\">\n <Tab\n label={\n <SpendingTabLabel\n amount={spendingData.totalAmount}\n label={spendingCopy.spend_tab_title}\n />\n }\n />\n <Tab\n label={\n <SpendingTabLabel\n amount={incomeData.totalAmount}\n label={spendingCopy.income_tab_title}\n />\n }\n />\n </Tabs>\n {selectedTab === 0 && (\n <Box>\n <Stack direction=\"row\" gap={16} justifyContent={'center'} p={24}>\n <SpendingDonut\n data={spendingData}\n onSelected={handleSelected}\n selectedId={selectedId}\n totalLabel={spendingCopy.total_spending}\n />\n\n <SpendingLegend\n data={spendingData}\n onSelected={handleSelected}\n selectedId={selectedId}\n />\n </Stack>\n </Box>\n )}\n {selectedTab === 1 && (\n <Box>\n <Stack direction=\"row\" gap={16} justifyContent={'center'} p={24}>\n <SpendingDonut\n data={incomeData}\n isIncome={true}\n onSelected={handleSelected}\n selectedId={selectedId}\n totalLabel={spendingCopy.total_income}\n />\n\n <SpendingLegend data={incomeData} onSelected={handleSelected} selectedId={selectedId} />\n </Stack>\n </Box>\n )}\n </Box>\n )\n}\n\nexport default observer(MiniSpendingChart)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport {\n Loader,\n MiniWidgetContainer,\n MiniWidgetProps,\n useAccountStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n} from '../common'\n\nimport MiniSpendingChart from './components/MiniSpendingChart'\n\nconst SpendingMiniWidget: React.FC<MiniWidgetProps> = ({ onPrimaryCtaClick, sx = {} }) => {\n const { visibleAccounts: accounts } = useAccountStore()\n const { spending: spendingCopy } = useGlobalCopyStore()\n const { isCopyLoaded, isInitialized, setSelectedAccounts } = useGlobalUiStore()\n\n // TODO: Optimize by avoiding setting this on each widget individually.\n React.useEffect(() => {\n setSelectedAccounts(accounts)\n }, [accounts])\n\n if (!isCopyLoaded || !isInitialized) {\n return <Loader />\n }\n\n return (\n <MiniWidgetContainer\n className=\"mx-exp-spending-miniwidget\"\n onPrimaryCtaClick={onPrimaryCtaClick}\n primaryCtaLabel={spendingCopy.primary_cta}\n sx={sx}\n title={spendingCopy.mini_title}\n >\n <MiniSpendingChart />\n </MiniWidgetContainer>\n )\n}\n\nexport default observer(SpendingMiniWidget)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\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 Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { formatCurrency, useGlobalCopyStore } from '../../common'\nimport { SpendingData } from '../utils/SpendingData'\nimport ListItemButton from '@mui/material/ListItemButton'\n\ninterface SpendingListProps {\n data: SpendingData\n onSelected: (id: string) => void\n selectedId?: string\n title: string\n}\n\nconst SpendingList: React.FC<SpendingListProps> = ({\n data,\n onSelected,\n selectedId = '',\n title,\n}) => {\n const { spending: spendingCopy } = useGlobalCopyStore()\n const selectedCategory = data.categoryData.find((parent) => parent.guid === selectedId)\n\n return (\n <Stack direction=\"column\" justifyContent=\"center\" maxWidth={400} minWidth={275} width=\"100%\">\n <Text bold={true} sx={{ py: 12 }}>\n {`${title} ${spendingCopy.by_category}`}\n </Text>\n\n <Divider aria-hidden=\"true\" />\n\n <List>\n {data.categoryData.map((item) => (\n <React.Fragment key={item.guid}>\n <ListItem\n disableGutters={true}\n disablePadding={true}\n sx={{\n minHeight: 44,\n }}\n >\n <ListItemButton\n aria-expanded={Boolean(selectedCategory?.guid === item.guid)}\n onClick={() => onSelected(item.guid)}\n sx={{ minHeight: 44, px: 8, py: 0 }}\n >\n <Box\n borderRadius={4}\n flexShrink={0}\n height={8}\n sx={{ backgroundColor: item.color, mr: 8 }}\n width={8}\n />\n <Stack\n alignItems=\"center\"\n direction=\"row\"\n justifyContent=\"space-between\"\n width=\"100%\"\n >\n <Text bold={selectedId === item.guid}>{item.name}</Text>\n <Text bold={selectedId === item.guid} variant=\"Body\">\n {formatCurrency(item.amount, '0,0')}\n </Text>\n </Stack>\n </ListItemButton>\n </ListItem>\n\n <Divider />\n\n {item.categoryTotals && item.categoryTotals.length > 0 && (\n <Collapse in={Boolean(selectedCategory?.guid === item.guid)} unmountOnExit={true}>\n <List>\n {selectedCategory?.categoryTotals?.map((subItem) => (\n <ListItem\n key={subItem.guid}\n sx={{\n pl: 24,\n pr: 8,\n py: 0,\n }}\n >\n <Stack direction=\"row\" justifyContent=\"space-between\" width=\"100%\">\n <Text>{subItem.name} </Text>\n <Text>{formatCurrency(subItem.amount, '0,0')}</Text>\n </Stack>\n </ListItem>\n ))}\n <Divider />\n </List>\n </Collapse>\n )}\n </React.Fragment>\n ))}\n </List>\n\n <Text bold={true} sx={{ mt: 12, pr: 8, textAlign: 'right' }}>\n {`${spendingCopy.total}: ${formatCurrency(data.totalAmount, '0,0')}`}\n </Text>\n </Stack>\n )\n}\n\nexport default observer(SpendingList)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useCategoryStore, useGlobalCopyStore, useScreenSize } from '../../common'\n\nimport { SpendingData } from '../utils/SpendingData'\nimport SpendingDonut from './SpendingDonut'\nimport SpendingList from './SpendingList'\n\ninterface SpendingChartProps {\n data: SpendingData\n title: string\n onSelected: (id: string) => void\n onViewTransactions: (id: string) => void\n selectedId: string\n}\n\nconst SpendingChart: React.FC<SpendingChartProps> = ({\n data,\n onSelected,\n onViewTransactions,\n selectedId,\n title,\n}) => {\n const { isDesktop, isMobile } = useScreenSize()\n const { isLoadingCategoryTotals } = useCategoryStore()\n const { spending: spendingCopy } = useGlobalCopyStore()\n\n const loadingDonut = (\n <SpendingDonut\n data={{\n categoryData: [],\n donutData: [],\n totalAmount: 0,\n }}\n onSelected={() => {}}\n selectedId={''}\n size={isDesktop ? 400 : 300}\n totalLabel={'Loading ...'}\n variant=\"full\"\n />\n )\n\n return (\n <Stack\n alignItems={isMobile ? 'center' : 'flex-start'}\n direction={isMobile ? 'column' : 'row'}\n gap={{ xs: 16, md: 64, xl: 100 }}\n justifyContent=\"center\"\n pt={50}\n px={8}\n >\n {isLoadingCategoryTotals && loadingDonut}\n {/* Not using a ternary here because it doesn't show the animation */}\n {!isLoadingCategoryTotals && (\n <SpendingDonut\n data={data}\n onSelected={onSelected}\n onViewTransactions={onViewTransactions}\n selectedId={selectedId}\n size={isDesktop ? 400 : 300}\n totalLabel={spendingCopy.total_amount}\n variant=\"full\"\n />\n )}\n\n <SpendingList data={data} onSelected={onSelected} selectedId={selectedId} title={title} />\n </Stack>\n )\n}\n\nexport default observer(SpendingChart)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\nimport { useTheme } from '@mui/material'\nimport type { Theme } from '@mui/system'\n\nimport {\n CategoryGuids,\n Drawer,\n Transaction,\n useAppConfig,\n useCategoryStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n useTransactionStore,\n} from '../../common'\n\nimport { TransactionDetails, TransactionList } from '../../transactions'\nimport { getIncomeData, getSpendingData } from '../utils/SpendingData'\nimport SpendingChart from './SpendingChart'\nimport SpendingTabLabel from './SpendingTabLabel'\n\nconst getIncomeColors = (theme: Theme) => {\n return [\n theme.palette.chartMono.chartMono5,\n theme.palette.chartMono.chartMono4,\n theme.palette.chartMono.chartMono3,\n theme.palette.chartMono.chartMono2,\n theme.palette.chartMono.chartMono1,\n theme.palette.chartMono.chartMono6,\n ]\n}\n\nconst Spending = () => {\n const theme = useTheme()\n\n const { clientConfig } = useAppConfig()\n const { categories, dateRangeCategoryTotals, loadDateRangeCategoryTotals } = useCategoryStore()\n const { goals: goalsCopy, spending: spendingCopy } = useGlobalCopyStore()\n const { displayedDateRange, selectedAccounts, selectedAccountGuids } = useGlobalUiStore()\n const { setFilter, sortedTransactions: transactions } = useTransactionStore()\n\n const accountGuids = clientConfig?.master?.deep_link_params?.account_guids\n const view = clientConfig?.master?.deep_link_params?.view\n\n const [selectedId, setSelectedId] = React.useState('')\n const [selectedTab, setSelectedTab] = React.useState(view === 'income' ? 1 : 0)\n const [transactionGuid, setTransactionGuid] = React.useState('')\n const [transactionsOpen, setTransactionsOpen] = React.useState(false)\n\n React.useEffect(() => {\n loadDateRangeCategoryTotals(\n selectedAccounts,\n displayedDateRange.start,\n displayedDateRange.end,\n ).finally()\n }, [selectedAccounts, displayedDateRange])\n\n const spendingData = React.useMemo(\n () => getSpendingData(categories, goalsCopy, theme, dateRangeCategoryTotals),\n [categories, dateRangeCategoryTotals],\n )\n\n const incomeData = React.useMemo(\n () => getIncomeData(categories, dateRangeCategoryTotals, getIncomeColors(theme)),\n [categories, dateRangeCategoryTotals],\n )\n\n const transaction = React.useMemo(\n () => transactions.find((t) => t.guid === transactionGuid),\n [transactionGuid, transactions],\n )\n\n const handleTabChange = (_event: React.SyntheticEvent, newValue: number) => {\n setSelectedTab(newValue)\n setSelectedId('')\n }\n\n const handleSelected = (id: string) => {\n setSelectedId(selectedId === id || id === '0' ? '' : id)\n }\n\n const handleViewTransactions = (id: string) => {\n const transactionFilter = {\n accounts: accountGuids ? accountGuids : selectedAccountGuids,\n dateRange: displayedDateRange,\n }\n\n if (selectedTab === 0) {\n // Spending\n if (id === 'other') {\n const other = spendingData.categoryData.find((c) => c.guid === 'other')\n setFilter({\n ...transactionFilter,\n custom: (t: Transaction) =>\n Boolean(other?.categoryTotals?.find((ct) => ct.guid === t.top_level_category_guid)),\n })\n } else {\n setFilter({\n ...transactionFilter,\n custom: (t: Transaction) =>\n id\n ? t.top_level_category_guid === id\n : t.top_level_category_guid !== CategoryGuids.INCOME &&\n t.top_level_category_guid !== CategoryGuids.INVESTMENTS &&\n t.top_level_category_guid !== CategoryGuids.TRANSFER,\n })\n }\n } else {\n // Income\n setFilter({\n ...transactionFilter,\n custom: (t: Transaction) =>\n id\n ? t.category_guid === id\n : t.category_guid === CategoryGuids.INCOME ||\n t.top_level_category_guid === CategoryGuids.INCOME,\n })\n }\n\n setTransactionsOpen(true)\n }\n\n return (\n <Box>\n <Tabs onChange={handleTabChange} value={selectedTab} variant=\"fullWidth\">\n <Tab\n label={\n <SpendingTabLabel\n amount={spendingData.totalAmount}\n label={spendingCopy.spend_tab_title}\n />\n }\n />\n <Tab\n label={\n <SpendingTabLabel\n amount={incomeData.totalAmount}\n label={spendingCopy.income_tab_title}\n />\n }\n />\n </Tabs>\n {selectedTab === 0 && (\n <SpendingChart\n data={spendingData}\n onSelected={handleSelected}\n onViewTransactions={handleViewTransactions}\n selectedId={selectedId}\n title={spendingCopy.spend_tab_title}\n />\n )}\n {selectedTab === 1 && (\n <SpendingChart\n data={incomeData}\n onSelected={handleSelected}\n onViewTransactions={handleViewTransactions}\n selectedId={selectedId}\n title={spendingCopy.income_tab_title}\n />\n )}\n <Drawer\n ariaLabelClose={spendingCopy.close_drawer_aria}\n isOpen={transactionsOpen}\n onClose={() => setTransactionsOpen(false)}\n title={spendingCopy.transactions_drawer_title}\n >\n <TransactionList onClick={setTransactionGuid} />\n </Drawer>\n <Drawer\n ariaLabelClose={spendingCopy.close_drawer_aria}\n isOpen={Boolean(transaction)}\n onClose={() => setTransactionGuid('')}\n title={spendingCopy.transaction_details_drawer_title}\n >\n {transaction && <TransactionDetails transaction={transaction} />}\n </Drawer>\n </Box>\n )\n}\n\nexport default observer(Spending)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { endOfMonth } from 'date-fns/endOfMonth'\n\nimport Box from '@mui/material/Box'\n\nimport type { DateRange } from '@mui/x-date-pickers-pro'\n\nimport {\n Loader,\n useAccountStore,\n useGlobalUiStore,\n WidgetContainer,\n useEvent,\n ANALYTICS_EVENTS,\n useGlobalCopyStore,\n useAppConfig,\n} from '../common'\n\nimport type { WidgetProps } from '../common'\n\nimport Spending from './components/Spending'\n\ninterface RSpendingWidgetProps extends WidgetProps {\n onBackClick?: () => void\n}\n\nconst SpendingWidget: React.FC<RSpendingWidgetProps> = ({ onBackClick, sx = {} }) => {\n const { visibleAccounts: accounts } = useAccountStore()\n const { spending: spendingCopy } = useGlobalCopyStore()\n const { isCopyLoaded, isInitialized, setDisplayedDate, setSelectedAccounts } = useGlobalUiStore()\n const { onEvent } = useEvent()\n\n const { clientConfig } = useAppConfig()\n\n const date_range = clientConfig?.master?.deep_link_params?.date_range\n\n const [isWidgetInitialized, setIsWidgetInitialized] = React.useState(false)\n\n React.useEffect(() => {\n setSelectedAccounts(accounts)\n }, [accounts])\n\n React.useEffect(() => {\n if (date_range && Array.isArray(date_range) && date_range.length === 2) {\n setDisplayedDate(date_range[0] as Date, date_range[1] as Date)\n } else {\n setDisplayedDate(startOfMonth(startOfToday()), endOfMonth(startOfToday()))\n }\n setIsWidgetInitialized(true)\n onEvent(ANALYTICS_EVENTS.SPENDING_VIEW)\n }, [])\n\n const handleDateChanged = (range: DateRange<Date>) => {\n setDisplayedDate(range[0] as Date, range[1] as Date)\n }\n\n if (!isCopyLoaded || !isInitialized || !isWidgetInitialized) {\n return <Loader />\n }\n\n return (\n <WidgetContainer\n accountOptions={accounts}\n calendarActions={{ onRangeChanged: handleDateChanged }}\n onAccountsFilterClick={() => onEvent(ANALYTICS_EVENTS.SPENDING_CLICK_FILTER)}\n onBackClick={onBackClick}\n sx={sx}\n title={spendingCopy.title}\n >\n <Box height=\"calc(100dvh - 150px)\" overflow=\"scroll\" width=\"100%\">\n <Spending />\n </Box>\n </WidgetContainer>\n )\n}\n\nexport default observer(SpendingWidget)\n"],"names":["TOP_CATEGORY_LENGTH","getTotalsByParentCategory","categories","theme","totals","acc","curr","category","c","parentGuid","parentCategory","categoryTotal","getCategoryColor","parentCategoryTotal","ct","getSpendingData","copy","parentCategoryTotals","spendingTotals","CategoryGuids","cat1","cat2","totalAmount","total","length","categoryData","donutData","otherCategories","otherTotal","getIncomeData","monthlyTotals","colors","incomeCategories","incomeTotals","total1","total2","index","cat","incomeTotal","SpendingTabLabel","amount","label","jsxs","Stack","jsx","Text","formatCurrency","SpendingDonut","data","isIncome","onSelected","onViewTransactions","selectedId","size","totalLabel","variant","spendingCopy","useGlobalCopyStore","useTheme","isTablet","useScreenSize","selectedCategory","React","cd","handleViewTransactions","iconSize","Donut","CategoryIcon","CategoryIconVariants","Button","SpendingDonut$1","observer","SpendingLegend","item","Box","MiniSpendingChart","goalsCopy","selectedAccounts","useGlobalUiStore","dateRangeCategoryTotals","dataRangeTotalsLoaded","loadDateRangeCategoryTotals","useCategoryStore","incomeColors","startOfMonth","endOfMonth","setSelectedId","selectedTab","setSelectedTab","spendingData","incomeData","handleTabChange","_event","newValue","handleSelected","id","Tabs","Tab","Loader","MiniSpendingChart$1","SpendingMiniWidget","onPrimaryCtaClick","sx","accounts","useAccountStore","isCopyLoaded","isInitialized","setSelectedAccounts","MiniWidgetContainer","SpendingMiniWidget$1","SpendingList","title","parent","Divider","List","ListItem","ListItemButton","Collapse","subItem","SpendingList$1","SpendingChart","isDesktop","isMobile","isLoadingCategoryTotals","SpendingChart$1","getIncomeColors","Spending","clientConfig","useAppConfig","displayedDateRange","selectedAccountGuids","setFilter","transactions","useTransactionStore","accountGuids","view","transactionGuid","setTransactionGuid","transactionsOpen","setTransactionsOpen","transaction","t","transactionFilter","other","Drawer","TransactionList","TransactionDetails","Spending$1","SpendingWidget","onBackClick","setDisplayedDate","onEvent","useEvent","date_range","isWidgetInitialized","setIsWidgetInitialized","startOfToday","ANALYTICS_EVENTS","handleDateChanged","range","WidgetContainer","SpendingWidget$1"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { T as o } from "../TransactionApi-Dnbyi1JL.mjs";
2
+ import { a8 as n, $ as r, a1 as T, a0 as i, a7 as c, a5 as e, a4 as A, a6 as p, a9 as S, a3 as d, a2 as m } from "../ConnectMiniWidget-CQWafYtQ.mjs";
3
+ import { T as f } from "../TransactionStore-CiEtt5XJ.mjs";
4
+ export {
5
+ n as AddAccountModal,
6
+ r as BottomActions,
7
+ T as TRANSACTION_EVENTS,
8
+ i as TopActions,
9
+ o as TransactionApi,
10
+ c as TransactionDetails,
11
+ e as TransactionList,
12
+ A as TransactionRow,
13
+ f as TransactionStore,
14
+ p as TransactionTable,
15
+ S as TransactionWidget,
16
+ d as exportTransactionsToCSV,
17
+ m as useTransactionsUiStore
18
+ };
19
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,10 @@
1
+ import { aa as a, ac as d, ab as s, ad as i } from "../ConnectMiniWidget-CQWafYtQ.mjs";
2
+ import { T as n } from "../TrendsStore-Idq3QfoA.mjs";
3
+ export {
4
+ a as TrendsFullWidget,
5
+ d as TrendsMicroWidget,
6
+ s as TrendsMiniWidget,
7
+ n as TrendsStore,
8
+ i as TrendsWidget
9
+ };
10
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
package/package.json CHANGED
@@ -1,11 +1,99 @@
1
1
  {
2
2
  "name": "@mx-cartographer/experiences",
3
- "version": "6.26.0",
3
+ "version": "6.26.1-alpha.mega1",
4
4
  "description": "Library containing experience widgets",
5
- "main": "dist/index.es.js",
6
- "types": "dist/index.d.ts",
7
5
  "author": "MX",
8
6
  "license": "MIT",
7
+ "exports": {
8
+ "./accounts": {
9
+ "types": "./dist/accounts/index.d.ts",
10
+ "import": "./dist/accounts/index.es.js"
11
+ },
12
+ "./analytics": {
13
+ "types": "./dist/analytics/index.d.ts",
14
+ "import": "./dist/analytics/index.es.js"
15
+ },
16
+ "./budgets": {
17
+ "types": "./dist/budgets/index.d.ts",
18
+ "import": "./dist/budgets/index.es.js"
19
+ },
20
+ "./cashflow": {
21
+ "types": "./dist/cashflow/index.d.ts",
22
+ "import": "./dist/cashflow/index.es.js"
23
+ },
24
+ "./categories": {
25
+ "types": "./dist/categories/index.d.ts",
26
+ "import": "./dist/categories/index.es.js"
27
+ },
28
+ "./common": {
29
+ "types": "./dist/common/index.d.ts",
30
+ "import": "./dist/common/index.es.js"
31
+ },
32
+ "./dashboard": {
33
+ "types": "./dist/dashboard/index.d.ts",
34
+ "import": "./dist/dashboard/index.es.js"
35
+ },
36
+ "./debts": {
37
+ "types": "./dist/debts/index.d.ts",
38
+ "import": "./dist/debts/index.es.js"
39
+ },
40
+ "./finstrong": {
41
+ "types": "./dist/finstrong/index.d.ts",
42
+ "import": "./dist/finstrong/index.es.js"
43
+ },
44
+ "./goals": {
45
+ "types": "./dist/goals/index.d.ts",
46
+ "import": "./dist/goals/index.es.js"
47
+ },
48
+ "./help": {
49
+ "types": "./dist/help/index.d.ts",
50
+ "import": "./dist/help/index.es.js"
51
+ },
52
+ "./insights": {
53
+ "types": "./dist/insights/index.d.ts",
54
+ "import": "./dist/insights/index.es.js"
55
+ },
56
+ "./investments": {
57
+ "types": "./dist/investments/index.d.ts",
58
+ "import": "./dist/investments/index.es.js"
59
+ },
60
+ "./merchants": {
61
+ "types": "./dist/merchants/index.d.ts",
62
+ "import": "./dist/merchants/index.es.js"
63
+ },
64
+ "./microinsights": {
65
+ "types": "./dist/microinsights/index.d.ts",
66
+ "import": "./dist/microinsights/index.es.js"
67
+ },
68
+ "./networth": {
69
+ "types": "./dist/networth/index.d.ts",
70
+ "import": "./dist/networth/index.es.js"
71
+ },
72
+ "./notifications": {
73
+ "types": "./dist/notifications/index.d.ts",
74
+ "import": "./dist/notifications/index.es.js"
75
+ },
76
+ "./recurringtransactions": {
77
+ "types": "./dist/recurringtransactions/index.d.ts",
78
+ "import": "./dist/recurringtransactions/index.es.js"
79
+ },
80
+ "./settings": {
81
+ "types": "./dist/settings/index.d.ts",
82
+ "import": "./dist/settings/index.es.js"
83
+ },
84
+ "./spending": {
85
+ "types": "./dist/spending/index.d.ts",
86
+ "import": "./dist/spending/index.es.js"
87
+ },
88
+ "./transactions": {
89
+ "types": "./dist/transactions/index.d.ts",
90
+ "import": "./dist/transactions/index.es.js"
91
+ },
92
+ "./trends": {
93
+ "types": "./dist/trends/index.d.ts",
94
+ "import": "./dist/trends/index.es.js"
95
+ }
96
+ },
9
97
  "publishConfig": {
10
98
  "access": "public"
11
99
  },
package/dist/index.d.ts DELETED
@@ -1,22 +0,0 @@
1
- export * from './accounts';
2
- export * from './analytics';
3
- export * from './budgets';
4
- export * from './cashflow';
5
- export * from './categories';
6
- export * from './common';
7
- export * from './dashboard';
8
- export * from './debts';
9
- export * from './finstrong';
10
- export * from './goals';
11
- export * from './help';
12
- export * from './investments';
13
- export * from './merchants';
14
- export * from './microinsights';
15
- export * from './networth';
16
- export * from './notifications';
17
- export * from './recurringtransactions';
18
- export * from './spending';
19
- export * from './settings';
20
- export * from './transactions';
21
- export * from './trends';
22
- export * from './finstrong';