diff --git a/eslint.config.mjs b/eslint.config.mjs index 6b702bd18c..34356c013d 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -9,6 +9,7 @@ import pluginReact from 'eslint-plugin-react'; import pluginReactHooks from 'eslint-plugin-react-hooks'; import pluginRulesDir from 'eslint-plugin-rulesdir'; import pluginTypescript from 'typescript-eslint'; +import pluginTypescriptPaths from 'eslint-plugin-typescript-paths'; import tsParser from '@typescript-eslint/parser'; @@ -84,8 +85,7 @@ const confusingBrowserGlobals = [ 'top', ]; -/** @type {import('eslint').Linter.Config[]} */ -export default [ +export default pluginTypescript.config( { ignores: [ 'packages/api/app/bundle.api.js', @@ -120,8 +120,8 @@ export default [ { // Temporary until the sync-server is migrated to TypeScript files: [ - 'packages/sync-server/**/*.spec.js?(x)', - 'packages/sync-server/**/*.test.js?(x)', + 'packages/sync-server/**/*.spec.{js,jsx}', + 'packages/sync-server/**/*.test.{js,jsx}', ], languageOptions: { globals: { @@ -164,13 +164,14 @@ export default [ }, pluginReact.configs.flat.recommended, pluginReact.configs.flat['jsx-runtime'], - ...pluginTypescript.configs.recommended, + pluginTypescript.configs.recommended, pluginImport.flatConfigs.recommended, { plugins: { 'react-hooks': pluginReactHooks, 'jsx-a11y': pluginJSXA11y, rulesdir: pluginRulesDir, + 'typescript-paths': pluginTypescriptPaths, }, }, { @@ -539,7 +540,7 @@ export default [ }, }, { - files: ['**/*.ts?(x)'], + files: ['**/*.{ts,tsx}'], languageOptions: { parser: tsParser, @@ -607,6 +608,16 @@ export default [ '@typescript-eslint/no-useless-constructor': 'warn', }, }, + { + files: ['packages/desktop-client/**/*.{js,ts,jsx,tsx}'], + rules: { + 'typescript-paths/absolute-parent-import': [ + 'error', + { preferPathOverBaseUrl: true }, + ], + 'typescript-paths/absolute-import': ['error', { enableAlias: false }], + }, + }, { files: [ 'packages/desktop-client/**/*.{ts,tsx}', @@ -872,4 +883,4 @@ export default [ '@typescript-eslint/no-unused-vars': 'off', }, }, -]; +); diff --git a/package.json b/package.json index 7fd337bb03..a260e47e8d 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-rulesdir": "^0.2.2", + "eslint-plugin-typescript-paths": "^0.0.33", "globals": "^15.15.0", "html-to-image": "^1.11.13", "husky": "^9.1.7", diff --git a/packages/desktop-client/src/accounts/accountsSlice.ts b/packages/desktop-client/src/accounts/accountsSlice.ts index 178770d0a7..e95c686dc7 100644 --- a/packages/desktop-client/src/accounts/accountsSlice.ts +++ b/packages/desktop-client/src/accounts/accountsSlice.ts @@ -10,15 +10,15 @@ import { type SyncServerPluggyAiAccount, } from 'loot-core/types/models'; -import { resetApp } from '../app/appSlice'; -import { addNotification } from '../notifications/notificationsSlice'; +import { resetApp } from '@desktop-client/app/appSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; import { getAccounts, getPayees, setNewTransactions, -} from '../queries/queriesSlice'; -import { createAppAsyncThunk } from '../redux'; -import { type AppDispatch } from '../redux/store'; +} from '@desktop-client/queries/queriesSlice'; +import { createAppAsyncThunk } from '@desktop-client/redux'; +import { type AppDispatch } from '@desktop-client/redux/store'; const sliceName = 'account'; diff --git a/packages/desktop-client/src/app/appSlice.ts b/packages/desktop-client/src/app/appSlice.ts index c3dd3311f0..5f42f95999 100644 --- a/packages/desktop-client/src/app/appSlice.ts +++ b/packages/desktop-client/src/app/appSlice.ts @@ -9,10 +9,10 @@ import { getUploadError } from 'loot-core/shared/errors'; import { type AccountEntity } from 'loot-core/types/models'; import { type AtLeastOne } from 'loot-core/types/util'; -import { syncAccounts } from '../accounts/accountsSlice'; -import { pushModal } from '../modals/modalsSlice'; -import { loadPrefs } from '../prefs/prefsSlice'; -import { createAppAsyncThunk } from '../redux'; +import { syncAccounts } from '@desktop-client/accounts/accountsSlice'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { loadPrefs } from '@desktop-client/prefs/prefsSlice'; +import { createAppAsyncThunk } from '@desktop-client/redux'; const sliceName = 'app'; diff --git a/packages/desktop-client/src/auth/AuthProvider.tsx b/packages/desktop-client/src/auth/AuthProvider.tsx index 987184f6b2..9a3086efc9 100644 --- a/packages/desktop-client/src/auth/AuthProvider.tsx +++ b/packages/desktop-client/src/auth/AuthProvider.tsx @@ -1,10 +1,10 @@ import React, { createContext, useContext, type ReactNode } from 'react'; -import { useServerURL } from '../components/ServerContext'; -import { useSelector } from '../redux'; - import { type Permissions } from './types'; +import { useServerURL } from '@desktop-client/components/ServerContext'; +import { useSelector } from '@desktop-client/redux'; + type AuthContextType = { hasPermission: (permission?: Permissions) => boolean; }; diff --git a/packages/desktop-client/src/auth/ProtectedRoute.tsx b/packages/desktop-client/src/auth/ProtectedRoute.tsx index f2d208fad0..911d88ff12 100644 --- a/packages/desktop-client/src/auth/ProtectedRoute.tsx +++ b/packages/desktop-client/src/auth/ProtectedRoute.tsx @@ -4,12 +4,11 @@ import { View } from '@actual-app/components/view'; import { type RemoteFile, type SyncedLocalFile } from 'loot-core/types/file'; -import { useSelector } from '../redux'; - import { useAuth } from './AuthProvider'; import { type Permissions } from './types'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { useSelector } from '@desktop-client/redux'; type ProtectedRouteProps = { permission: Permissions; diff --git a/packages/desktop-client/src/browser-preload.browser.js b/packages/desktop-client/src/browser-preload.browser.js index f1409f4828..74e46e8c72 100644 --- a/packages/desktop-client/src/browser-preload.browser.js +++ b/packages/desktop-client/src/browser-preload.browser.js @@ -4,6 +4,7 @@ import { registerSW } from 'virtual:pwa-register'; import * as Platform from 'loot-core/shared/platform'; +// eslint-disable-next-line typescript-paths/absolute-parent-import import packageJson from '../package.json'; const backendWorkerUrl = new URL('./browser-server.js', import.meta.url); diff --git a/packages/desktop-client/src/budgets/budgetsSlice.ts b/packages/desktop-client/src/budgets/budgetsSlice.ts index e89e3b3f11..5e6f34fece 100644 --- a/packages/desktop-client/src/budgets/budgetsSlice.ts +++ b/packages/desktop-client/src/budgets/budgetsSlice.ts @@ -8,11 +8,11 @@ import { type Budget } from 'loot-core/types/budget'; import { type File } from 'loot-core/types/file'; import { type Handlers } from 'loot-core/types/handlers'; -import { resetApp, setAppState } from '../app/appSlice'; -import { closeModal, pushModal } from '../modals/modalsSlice'; -import { loadGlobalPrefs, loadPrefs } from '../prefs/prefsSlice'; -import { createAppAsyncThunk } from '../redux'; -import { signOut } from '../users/usersSlice'; +import { resetApp, setAppState } from '@desktop-client/app/appSlice'; +import { closeModal, pushModal } from '@desktop-client/modals/modalsSlice'; +import { loadGlobalPrefs, loadPrefs } from '@desktop-client/prefs/prefsSlice'; +import { createAppAsyncThunk } from '@desktop-client/redux'; +import { signOut } from '@desktop-client/users/usersSlice'; const sliceName = 'budgets'; diff --git a/packages/desktop-client/src/components/App.tsx b/packages/desktop-client/src/components/App.tsx index f7c7534072..250a2f33c1 100644 --- a/packages/desktop-client/src/components/App.tsx +++ b/packages/desktop-client/src/components/App.tsx @@ -17,18 +17,6 @@ import { View } from '@actual-app/components/view'; import { init as initConnection, send } from 'loot-core/platform/client/fetch'; import * as Platform from 'loot-core/shared/platform'; -import { setAppState, sync } from '../app/appSlice'; -import { closeBudget, loadBudget } from '../budgets/budgetsSlice'; -import { handleGlobalEvents } from '../global-events'; -import { setI18NextLanguage } from '../i18n'; -import { addNotification } from '../notifications/notificationsSlice'; -import { installPolyfills } from '../polyfills'; -import { loadGlobalPrefs } from '../prefs/prefsSlice'; -import { useDispatch, useSelector, useStore } from '../redux'; -import { hasHiddenScrollbars, ThemeStyle, useTheme } from '../style'; -import { signOut } from '../users/usersSlice'; -import { ExposeNavigate } from '../util/router-tools'; - import { AppBackground } from './AppBackground'; import { BudgetMonthCountProvider } from './budget/BudgetMonthCountContext'; import { DevelopmentTopBar } from './DevelopmentTopBar'; @@ -39,8 +27,23 @@ import { Modals } from './Modals'; import { SidebarProvider } from './sidebar/SidebarProvider'; import { UpdateNotification } from './UpdateNotification'; +import { setAppState, sync } from '@desktop-client/app/appSlice'; +import { closeBudget, loadBudget } from '@desktop-client/budgets/budgetsSlice'; +import { handleGlobalEvents } from '@desktop-client/global-events'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; import { SpreadsheetProvider } from '@desktop-client/hooks/useSpreadsheet'; +import { setI18NextLanguage } from '@desktop-client/i18n'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { installPolyfills } from '@desktop-client/polyfills'; +import { loadGlobalPrefs } from '@desktop-client/prefs/prefsSlice'; +import { useDispatch, useSelector, useStore } from '@desktop-client/redux'; +import { + hasHiddenScrollbars, + ThemeStyle, + useTheme, +} from '@desktop-client/style'; +import { signOut } from '@desktop-client/users/usersSlice'; +import { ExposeNavigate } from '@desktop-client/util/router-tools'; function AppInner() { const [budgetId] = useMetadataPref('id'); diff --git a/packages/desktop-client/src/components/AppBackground.tsx b/packages/desktop-client/src/components/AppBackground.tsx index d599a3b78f..072ece8f16 100644 --- a/packages/desktop-client/src/components/AppBackground.tsx +++ b/packages/desktop-client/src/components/AppBackground.tsx @@ -7,10 +7,10 @@ import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; import { css } from '@emotion/css'; -import { useSelector } from '../redux'; - import { Background } from './Background'; +import { useSelector } from '@desktop-client/redux'; + type AppBackgroundProps = { isLoading?: boolean; }; diff --git a/packages/desktop-client/src/components/BankSyncStatus.tsx b/packages/desktop-client/src/components/BankSyncStatus.tsx index b92767de9e..cb0443a552 100644 --- a/packages/desktop-client/src/components/BankSyncStatus.tsx +++ b/packages/desktop-client/src/components/BankSyncStatus.tsx @@ -7,10 +7,10 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { useSelector } from '../redux'; - import { AnimatedRefresh } from './AnimatedRefresh'; +import { useSelector } from '@desktop-client/redux'; + export function BankSyncStatus() { const accountsSyncing = useSelector(state => state.account.accountsSyncing); const accountsSyncingCount = accountsSyncing.length; diff --git a/packages/desktop-client/src/components/FinancesApp.tsx b/packages/desktop-client/src/components/FinancesApp.tsx index c9976a7016..692b5783bd 100644 --- a/packages/desktop-client/src/components/FinancesApp.tsx +++ b/packages/desktop-client/src/components/FinancesApp.tsx @@ -15,13 +15,6 @@ import { View } from '@actual-app/components/view'; import * as undo from 'loot-core/platform/client/undo'; -import { sync } from '../app/appSlice'; -import { ProtectedRoute } from '../auth/ProtectedRoute'; -import { Permissions } from '../auth/types'; -import { addNotification } from '../notifications/notificationsSlice'; -import { useSelector, useDispatch } from '../redux'; -import { getIsOutdated, getLatestVersion } from '../util/versions'; - import { UserAccessPage } from './admin/UserAccess/UserAccessPage'; import { BankSync } from './banksync'; import { BankSyncStatus } from './BankSyncStatus'; @@ -42,10 +35,16 @@ import { Settings } from './settings'; import { FloatableSidebar } from './sidebar'; import { Titlebar } from './Titlebar'; +import { sync } from '@desktop-client/app/appSlice'; +import { ProtectedRoute } from '@desktop-client/auth/ProtectedRoute'; +import { Permissions } from '@desktop-client/auth/types'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; import { useMetaThemeColor } from '@desktop-client/hooks/useMetaThemeColor'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; +import { getIsOutdated, getLatestVersion } from '@desktop-client/util/versions'; function NarrowNotSupported({ redirectTo = '/budget', diff --git a/packages/desktop-client/src/components/HelpMenu.tsx b/packages/desktop-client/src/components/HelpMenu.tsx index e6b2fd6c82..d38a51c963 100644 --- a/packages/desktop-client/src/components/HelpMenu.tsx +++ b/packages/desktop-client/src/components/HelpMenu.tsx @@ -10,10 +10,9 @@ import { Popover } from '@actual-app/components/popover'; import { SpaceBetween } from '@actual-app/components/space-between'; import { useToggle } from 'usehooks-ts'; -import { pushModal } from '../modals/modalsSlice'; -import { useDispatch } from '../redux'; - import { useFeatureFlag } from '@desktop-client/hooks/useFeatureFlag'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; const getPageDocs = (page: string) => { switch (page) { diff --git a/packages/desktop-client/src/components/LoggedInUser.tsx b/packages/desktop-client/src/components/LoggedInUser.tsx index 6c301fa984..89b2ad845c 100644 --- a/packages/desktop-client/src/components/LoggedInUser.tsx +++ b/packages/desktop-client/src/components/LoggedInUser.tsx @@ -14,17 +14,16 @@ import { listen } from 'loot-core/platform/client/fetch'; import { type RemoteFile, type SyncedLocalFile } from 'loot-core/types/file'; import { type TransObjectLiteral } from 'loot-core/types/util'; -import { useAuth } from '../auth/AuthProvider'; -import { Permissions } from '../auth/types'; -import { closeBudget } from '../budgets/budgetsSlice'; -import { useSelector, useDispatch } from '../redux'; -import { getUserData, signOut } from '../users/usersSlice'; - import { PrivacyFilter } from './PrivacyFilter'; import { useMultiuserEnabled, useServerURL } from './ServerContext'; +import { useAuth } from '@desktop-client/auth/AuthProvider'; +import { Permissions } from '@desktop-client/auth/types'; +import { closeBudget } from '@desktop-client/budgets/budgetsSlice'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useSelector, useDispatch } from '@desktop-client/redux'; +import { getUserData, signOut } from '@desktop-client/users/usersSlice'; type LoggedInUserProps = { hideIfNoServer?: boolean; diff --git a/packages/desktop-client/src/components/ManageRules.tsx b/packages/desktop-client/src/components/ManageRules.tsx index 166b38a181..e5b97c0c66 100644 --- a/packages/desktop-client/src/components/ManageRules.tsx +++ b/packages/desktop-client/src/components/ManageRules.tsx @@ -23,10 +23,6 @@ import { mapField, friendlyOp } from 'loot-core/shared/rules'; import { describeSchedule } from 'loot-core/shared/schedules'; import { type RuleEntity, type NewRuleEntity } from 'loot-core/types/models'; -import { pushModal } from '../modals/modalsSlice'; -import { initiallyLoadPayees } from '../queries/queriesSlice'; -import { useDispatch } from '../redux'; - import { InfiniteScrollWrapper } from './common/InfiniteScrollWrapper'; import { Link } from './common/Link'; import { Search } from './common/Search'; @@ -41,6 +37,9 @@ import { useSelected, SelectedProvider, } from '@desktop-client/hooks/useSelected'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { initiallyLoadPayees } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; function mapValue( field, diff --git a/packages/desktop-client/src/components/Modals.tsx b/packages/desktop-client/src/components/Modals.tsx index db268bdf63..c5ed8e7c1e 100644 --- a/packages/desktop-client/src/components/Modals.tsx +++ b/packages/desktop-client/src/components/Modals.tsx @@ -5,9 +5,6 @@ import { useLocation } from 'react-router-dom'; import { send } from 'loot-core/platform/client/fetch'; import * as monthUtils from 'loot-core/shared/months'; -import { closeModal } from '../modals/modalsSlice'; -import { useDispatch } from '../redux'; - import { EditSyncAccount } from './banksync/EditSyncAccount'; import { AccountAutocompleteModal } from './modals/AccountAutocompleteModal'; import { AccountMenuModal } from './modals/AccountMenuModal'; @@ -80,6 +77,8 @@ import { NamespaceContext } from './spreadsheet/NamespaceContext'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; import { useModalState } from '@desktop-client/hooks/useModalState'; +import { closeModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; export function Modals() { const location = useLocation(); diff --git a/packages/desktop-client/src/components/Notes.tsx b/packages/desktop-client/src/components/Notes.tsx index 49c54fd76b..55f7eafed2 100644 --- a/packages/desktop-client/src/components/Notes.tsx +++ b/packages/desktop-client/src/components/Notes.tsx @@ -11,7 +11,10 @@ import { css } from '@emotion/css'; import rehypeExternalLinks from 'rehype-external-links'; import remarkGfm from 'remark-gfm'; -import { remarkBreaks, sequentialNewlinesPlugin } from '../util/markdown'; +import { + remarkBreaks, + sequentialNewlinesPlugin, +} from '@desktop-client/util/markdown'; const remarkPlugins = [sequentialNewlinesPlugin, remarkGfm, remarkBreaks]; diff --git a/packages/desktop-client/src/components/Notifications.tsx b/packages/desktop-client/src/components/Notifications.tsx index 096a08e188..0573083596 100644 --- a/packages/desktop-client/src/components/Notifications.tsx +++ b/packages/desktop-client/src/components/Notifications.tsx @@ -21,13 +21,13 @@ import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; import { css } from '@emotion/css'; +import { Link } from './common/Link'; + import { removeNotification, type NotificationWithId, -} from '../notifications/notificationsSlice'; -import { useSelector, useDispatch } from '../redux'; - -import { Link } from './common/Link'; +} from '@desktop-client/notifications/notificationsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; function compileMessage( message: string, diff --git a/packages/desktop-client/src/components/ServerContext.tsx b/packages/desktop-client/src/components/ServerContext.tsx index 48e71ac23a..b9440ffa06 100644 --- a/packages/desktop-client/src/components/ServerContext.tsx +++ b/packages/desktop-client/src/components/ServerContext.tsx @@ -12,8 +12,8 @@ import { t } from 'i18next'; import { send } from 'loot-core/platform/client/fetch'; import { type Handlers } from 'loot-core/types/handlers'; -import { addNotification } from '../notifications/notificationsSlice'; -import { useDispatch } from '../redux'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; type LoginMethod = { method: string; diff --git a/packages/desktop-client/src/components/ThemeSelector.tsx b/packages/desktop-client/src/components/ThemeSelector.tsx index 3a57796645..c7e4c8167f 100644 --- a/packages/desktop-client/src/components/ThemeSelector.tsx +++ b/packages/desktop-client/src/components/ThemeSelector.tsx @@ -13,7 +13,7 @@ import { Popover } from '@actual-app/components/popover'; import type { Theme } from 'loot-core/types/prefs'; -import { themeOptions, useTheme } from '../style'; +import { themeOptions, useTheme } from '@desktop-client/style'; type ThemeSelectorProps = { style?: CSSProperties; diff --git a/packages/desktop-client/src/components/Titlebar.tsx b/packages/desktop-client/src/components/Titlebar.tsx index b177a8abf5..2ba9f758af 100644 --- a/packages/desktop-client/src/components/Titlebar.tsx +++ b/packages/desktop-client/src/components/Titlebar.tsx @@ -26,10 +26,6 @@ import { } from 'loot-core/shared/environment'; import * as Platform from 'loot-core/shared/platform'; -import { sync } from '../app/appSlice'; -import * as queries from '../queries/queries'; -import { useDispatch } from '../redux'; - import { AccountSyncCheck } from './accounts/AccountSyncCheck'; import { AnimatedRefresh } from './AnimatedRefresh'; import { MonthCountSelector } from './budget/MonthCountSelector'; @@ -41,10 +37,13 @@ import { useSidebar } from './sidebar/SidebarProvider'; import { useSheetValue } from './spreadsheet/useSheetValue'; import { ThemeSelector } from './ThemeSelector'; +import { sync } from '@desktop-client/app/appSlice'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import * as queries from '@desktop-client/queries/queries'; +import { useDispatch } from '@desktop-client/redux'; function UncategorizedButton() { const count: number | null = useSheetValue(queries.uncategorizedCount()); diff --git a/packages/desktop-client/src/components/UpdateNotification.tsx b/packages/desktop-client/src/components/UpdateNotification.tsx index ae4bb3f0bf..9290bc1d96 100644 --- a/packages/desktop-client/src/components/UpdateNotification.tsx +++ b/packages/desktop-client/src/components/UpdateNotification.tsx @@ -7,11 +7,11 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { setAppState, updateApp } from '../app/appSlice'; -import { useSelector, useDispatch } from '../redux'; - import { Link } from './common/Link'; +import { setAppState, updateApp } from '@desktop-client/app/appSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; + export function UpdateNotification() { const { t } = useTranslation(); const updateInfo = useSelector(state => state.app.updateInfo); diff --git a/packages/desktop-client/src/components/accounts/Account.tsx b/packages/desktop-client/src/components/accounts/Account.tsx index 34f0321310..27b57b0924 100644 --- a/packages/desktop-client/src/components/accounts/Account.tsx +++ b/packages/desktop-client/src/components/accounts/Account.tsx @@ -39,34 +39,14 @@ import { type TransactionFilterEntity, } from 'loot-core/types/models'; -import { unlinkAccount } from '../../accounts/accountsSlice'; -import { syncAndDownload } from '../../app/appSlice'; -import { - openAccountCloseModal, - pushModal, - replaceModal, -} from '../../modals/modalsSlice'; -import { addNotification } from '../../notifications/notificationsSlice'; -import { aqlQuery } from '../../queries/aqlQuery'; -import { pagedQuery, type PagedQuery } from '../../queries/pagedQuery'; -import * as queries from '../../queries/queries'; -import { - createPayee, - initiallyLoadPayees, - markAccountRead, - reopenAccount, - updateAccount, - updateNewTransactions, -} from '../../queries/queriesSlice'; -import { useSelector, useDispatch } from '../../redux'; -import { type AppDispatch } from '../../redux/store'; -import { type SavedFilter } from '../filters/SavedFilterMenuButton'; -import { TransactionList } from '../transactions/TransactionList'; -import { validateAccountName } from '../util/accountValidation'; - import { AccountEmptyMessage } from './AccountEmptyMessage'; import { AccountHeader } from './Header'; +import { unlinkAccount } from '@desktop-client/accounts/accountsSlice'; +import { syncAndDownload } from '@desktop-client/app/appSlice'; +import { type SavedFilter } from '@desktop-client/components/filters/SavedFilterMenuButton'; +import { TransactionList } from '@desktop-client/components/transactions/TransactionList'; +import { validateAccountName } from '@desktop-client/components/util/accountValidation'; import { useAccountPreviewTransactions } from '@desktop-client/hooks/useAccountPreviewTransactions'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { SchedulesProvider } from '@desktop-client/hooks/useCachedSchedules'; @@ -87,6 +67,28 @@ import { import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useTransactionBatchActions } from '@desktop-client/hooks/useTransactionBatchActions'; import { useTransactionFilters } from '@desktop-client/hooks/useTransactionFilters'; +import { + openAccountCloseModal, + pushModal, + replaceModal, +} from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; +import { + pagedQuery, + type PagedQuery, +} from '@desktop-client/queries/pagedQuery'; +import * as queries from '@desktop-client/queries/queries'; +import { + createPayee, + initiallyLoadPayees, + markAccountRead, + reopenAccount, + updateAccount, + updateNewTransactions, +} from '@desktop-client/queries/queriesSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; +import { type AppDispatch } from '@desktop-client/redux/store'; type ConditionEntity = Partial | TransactionFilterEntity; diff --git a/packages/desktop-client/src/components/accounts/AccountSyncCheck.tsx b/packages/desktop-client/src/components/accounts/AccountSyncCheck.tsx index 80ea254662..f28e3e92d8 100644 --- a/packages/desktop-client/src/components/accounts/AccountSyncCheck.tsx +++ b/packages/desktop-client/src/components/accounts/AccountSyncCheck.tsx @@ -10,13 +10,12 @@ import { View } from '@actual-app/components/view'; import { type AccountEntity } from 'loot-core/types/models'; -import { unlinkAccount } from '../../accounts/accountsSlice'; -import { authorizeBank } from '../../gocardless'; -import { useDispatch } from '../../redux'; -import { Link } from '../common/Link'; - +import { unlinkAccount } from '@desktop-client/accounts/accountsSlice'; +import { Link } from '@desktop-client/components/common/Link'; +import { authorizeBank } from '@desktop-client/gocardless'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useFailedAccounts } from '@desktop-client/hooks/useFailedAccounts'; +import { useDispatch } from '@desktop-client/redux'; function useErrorMessage() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/accounts/Balance.tsx b/packages/desktop-client/src/components/accounts/Balance.tsx index ab3b8eaf3a..129ef05037 100644 --- a/packages/desktop-client/src/components/accounts/Balance.tsx +++ b/packages/desktop-client/src/components/accounts/Balance.tsx @@ -13,12 +13,14 @@ import { getScheduledAmount } from 'loot-core/shared/schedules'; import { isPreviewId } from 'loot-core/shared/transactions'; import { type AccountEntity } from 'loot-core/types/models'; -import { PrivacyFilter } from '../PrivacyFilter'; -import { type Binding } from '../spreadsheet'; -import { CellValue, CellValueText } from '../spreadsheet/CellValue'; -import { useFormat } from '../spreadsheet/useFormat'; -import { useSheetValue } from '../spreadsheet/useSheetValue'; - +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { type Binding } from '@desktop-client/components/spreadsheet'; +import { + CellValue, + CellValueText, +} from '@desktop-client/components/spreadsheet/CellValue'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; import { useCachedSchedules } from '@desktop-client/hooks/useCachedSchedules'; import { useSelectedItems } from '@desktop-client/hooks/useSelected'; diff --git a/packages/desktop-client/src/components/accounts/Header.tsx b/packages/desktop-client/src/components/accounts/Header.tsx index 561a0c9f43..250a4d1b31 100644 --- a/packages/desktop-client/src/components/accounts/Header.tsx +++ b/packages/desktop-client/src/components/accounts/Header.tsx @@ -39,18 +39,17 @@ import { type TransactionFilterEntity, } from 'loot-core/types/models'; -import { AnimatedRefresh } from '../AnimatedRefresh'; -import { Search } from '../common/Search'; -import { FilterButton } from '../filters/FiltersMenu'; -import { FiltersStack } from '../filters/FiltersStack'; -import { type SavedFilter } from '../filters/SavedFilterMenuButton'; -import { NotesButton } from '../NotesButton'; -import { SelectedTransactionsButton } from '../transactions/SelectedTransactionsButton'; - import { type TableRef } from './Account'; import { Balances } from './Balance'; import { ReconcileMenu, ReconcilingMessage } from './Reconcile'; +import { AnimatedRefresh } from '@desktop-client/components/AnimatedRefresh'; +import { Search } from '@desktop-client/components/common/Search'; +import { FilterButton } from '@desktop-client/components/filters/FiltersMenu'; +import { FiltersStack } from '@desktop-client/components/filters/FiltersStack'; +import { type SavedFilter } from '@desktop-client/components/filters/SavedFilterMenuButton'; +import { NotesButton } from '@desktop-client/components/NotesButton'; +import { SelectedTransactionsButton } from '@desktop-client/components/transactions/SelectedTransactionsButton'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; import { useSplitsExpanded } from '@desktop-client/hooks/useSplitsExpanded'; diff --git a/packages/desktop-client/src/components/accounts/Reconcile.tsx b/packages/desktop-client/src/components/accounts/Reconcile.tsx index 9886fb177f..dbbbbe7d78 100644 --- a/packages/desktop-client/src/components/accounts/Reconcile.tsx +++ b/packages/desktop-client/src/components/accounts/Reconcile.tsx @@ -17,11 +17,10 @@ import { currencyToInteger, tsToRelativeTime } from 'loot-core/shared/util'; import { type AccountEntity } from 'loot-core/types/models'; import { type TransObjectLiteral } from 'loot-core/types/util'; -import * as queries from '../../queries/queries'; -import { useFormat } from '../spreadsheet/useFormat'; -import { useSheetValue } from '../spreadsheet/useSheetValue'; - +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; import { useLocale } from '@desktop-client/hooks/useLocale'; +import * as queries from '@desktop-client/queries/queries'; type ReconcilingMessageProps = { balanceQuery: { name: `balance-query-${string}`; query: Query }; diff --git a/packages/desktop-client/src/components/admin/UserAccess/UserAccess.tsx b/packages/desktop-client/src/components/admin/UserAccess/UserAccess.tsx index 532b0862bc..bbd63f4106 100644 --- a/packages/desktop-client/src/components/admin/UserAccess/UserAccess.tsx +++ b/packages/desktop-client/src/components/admin/UserAccess/UserAccess.tsx @@ -25,17 +25,16 @@ import { type UserAccessEntity, } from 'loot-core/types/models'; -import { pushModal } from '../../../modals/modalsSlice'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { InfiniteScrollWrapper } from '../../common/InfiniteScrollWrapper'; -import { Link } from '../../common/Link'; -import { Search } from '../../common/Search'; - import { UserAccessHeader } from './UserAccessHeader'; import { UserAccessRow } from './UserAccessRow'; +import { InfiniteScrollWrapper } from '@desktop-client/components/common/InfiniteScrollWrapper'; +import { Link } from '@desktop-client/components/common/Link'; +import { Search } from '@desktop-client/components/common/Search'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; type ManageUserAccessContentProps = { isModal: boolean; diff --git a/packages/desktop-client/src/components/admin/UserAccess/UserAccessHeader.tsx b/packages/desktop-client/src/components/admin/UserAccess/UserAccessHeader.tsx index 66f0a33064..a0b0292482 100644 --- a/packages/desktop-client/src/components/admin/UserAccess/UserAccessHeader.tsx +++ b/packages/desktop-client/src/components/admin/UserAccess/UserAccessHeader.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { Cell, TableHeader } from '../../table'; +import { Cell, TableHeader } from '@desktop-client/components/table'; export function UserAccessHeader() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/admin/UserAccess/UserAccessPage.tsx b/packages/desktop-client/src/components/admin/UserAccess/UserAccessPage.tsx index 3760768e48..9073002a45 100644 --- a/packages/desktop-client/src/components/admin/UserAccess/UserAccessPage.tsx +++ b/packages/desktop-client/src/components/admin/UserAccess/UserAccessPage.tsx @@ -1,10 +1,10 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { Page } from '../../Page'; - import { UserAccess } from './UserAccess'; +import { Page } from '@desktop-client/components/Page'; + export function UserAccessPage() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/admin/UserAccess/UserAccessRow.tsx b/packages/desktop-client/src/components/admin/UserAccess/UserAccessRow.tsx index d3b597afd4..6536472855 100644 --- a/packages/desktop-client/src/components/admin/UserAccess/UserAccessRow.tsx +++ b/packages/desktop-client/src/components/admin/UserAccess/UserAccessRow.tsx @@ -9,13 +9,12 @@ import { send } from 'loot-core/platform/client/fetch'; import { getUserAccessErrors } from 'loot-core/shared/errors'; import { type UserAvailable } from 'loot-core/types/models'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { signOut } from '../../../users/usersSlice'; -import { Checkbox } from '../../forms'; -import { Row, Cell } from '../../table'; - +import { Checkbox } from '@desktop-client/components/forms'; +import { Row, Cell } from '@desktop-client/components/table'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; +import { signOut } from '@desktop-client/users/usersSlice'; type UserAccessProps = { access: UserAvailable; diff --git a/packages/desktop-client/src/components/admin/UserDirectory/UserDirectory.tsx b/packages/desktop-client/src/components/admin/UserDirectory/UserDirectory.tsx index b2ff1628e5..a9c7e6cadf 100644 --- a/packages/desktop-client/src/components/admin/UserDirectory/UserDirectory.tsx +++ b/packages/desktop-client/src/components/admin/UserDirectory/UserDirectory.tsx @@ -20,21 +20,20 @@ import { send } from 'loot-core/platform/client/fetch'; import * as undo from 'loot-core/platform/client/undo'; import { type NewUserEntity, type UserEntity } from 'loot-core/types/models'; -import { pushModal } from '../../../modals/modalsSlice'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { signOut } from '../../../users/usersSlice'; -import { InfiniteScrollWrapper } from '../../common/InfiniteScrollWrapper'; -import { Link } from '../../common/Link'; -import { Search } from '../../common/Search'; - import { UserDirectoryHeader } from './UserDirectoryHeader'; import { UserDirectoryRow } from './UserDirectoryRow'; +import { InfiniteScrollWrapper } from '@desktop-client/components/common/InfiniteScrollWrapper'; +import { Link } from '@desktop-client/components/common/Link'; +import { Search } from '@desktop-client/components/common/Search'; import { SelectedProvider, useSelected, } from '@desktop-client/hooks/useSelected'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; +import { signOut } from '@desktop-client/users/usersSlice'; type ManageUserDirectoryContentProps = { isModal: boolean; diff --git a/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryHeader.tsx b/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryHeader.tsx index fef255fa6c..3623cbeeb0 100644 --- a/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryHeader.tsx +++ b/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryHeader.tsx @@ -1,8 +1,11 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { SelectCell, Cell, TableHeader } from '../../table'; - +import { + SelectCell, + Cell, + TableHeader, +} from '@desktop-client/components/table'; import { useSelectedItems, useSelectedDispatch, diff --git a/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryPage.tsx b/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryPage.tsx index 2a061fd19c..a5e6859174 100644 --- a/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryPage.tsx +++ b/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryPage.tsx @@ -4,10 +4,9 @@ import { Trans, useTranslation } from 'react-i18next'; import { Button } from '@actual-app/components/button'; import { View } from '@actual-app/components/view'; -import { Page } from '../../Page'; - import { UserDirectory } from './UserDirectory'; +import { Page } from '@desktop-client/components/Page'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; export function UserDirectoryPage({ diff --git a/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryRow.tsx b/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryRow.tsx index 4ec774a33f..ea82dd518d 100644 --- a/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryRow.tsx +++ b/packages/desktop-client/src/components/admin/UserDirectory/UserDirectoryRow.tsx @@ -9,9 +9,8 @@ import { View } from '@actual-app/components/view'; import { PossibleRoles } from 'loot-core/shared/user'; import { type UserEntity } from 'loot-core/types/models'; -import { Checkbox } from '../../forms'; -import { SelectCell, Row, Cell } from '../../table'; - +import { Checkbox } from '@desktop-client/components/forms'; +import { SelectCell, Row, Cell } from '@desktop-client/components/table'; import { useSelectedDispatch } from '@desktop-client/hooks/useSelected'; type UserDirectoryProps = { diff --git a/packages/desktop-client/src/components/autocomplete/CategoryAutocomplete.tsx b/packages/desktop-client/src/components/autocomplete/CategoryAutocomplete.tsx index 08987de017..b28229e64d 100644 --- a/packages/desktop-client/src/components/autocomplete/CategoryAutocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/CategoryAutocomplete.tsx @@ -28,16 +28,18 @@ import { type CategoryGroupEntity, } from 'loot-core/types/models'; -import { trackingBudget, envelopeBudget } from '../../queries/queries'; -import { useEnvelopeSheetValue } from '../budget/envelope/EnvelopeBudgetComponents'; -import { makeAmountFullStyle } from '../budget/util'; -import { useSheetValue } from '../spreadsheet/useSheetValue'; - import { Autocomplete, defaultFilterSuggestion } from './Autocomplete'; import { ItemHeader } from './ItemHeader'; +import { useEnvelopeSheetValue } from '@desktop-client/components/budget/envelope/EnvelopeBudgetComponents'; +import { makeAmountFullStyle } from '@desktop-client/components/budget/util'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { + trackingBudget, + envelopeBudget, +} from '@desktop-client/queries/queries'; type CategoryAutocompleteItem = Omit & { group?: CategoryGroupEntity; diff --git a/packages/desktop-client/src/components/autocomplete/FilterAutocomplete.tsx b/packages/desktop-client/src/components/autocomplete/FilterAutocomplete.tsx index 4ad20926e8..9d8c09a41d 100644 --- a/packages/desktop-client/src/components/autocomplete/FilterAutocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/FilterAutocomplete.tsx @@ -2,11 +2,11 @@ import React, { type ComponentProps } from 'react'; import { type TransactionFilterEntity } from 'loot-core/types/models'; -import { useTransactionFilters } from '../../hooks/useTransactionFilters'; - import { Autocomplete } from './Autocomplete'; import { FilterList } from './FilterList'; +import { useTransactionFilters } from '@desktop-client/hooks/useTransactionFilters'; + export function FilterAutocomplete({ embedded, ...props diff --git a/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.test.tsx b/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.test.tsx index 5d6975e4d1..b7c905880f 100644 --- a/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.test.tsx +++ b/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.test.tsx @@ -5,16 +5,15 @@ import { vi } from 'vitest'; import { generateAccount } from 'loot-core/mocks'; import type { AccountEntity, PayeeEntity } from 'loot-core/types/models'; -import { AuthProvider } from '../../auth/AuthProvider'; -import { TestProvider } from '../../redux/mock'; - import { PayeeAutocomplete, type PayeeAutocompleteItem, type PayeeAutocompleteProps, } from './PayeeAutocomplete'; +import { AuthProvider } from '@desktop-client/auth/AuthProvider'; import { useCommonPayees } from '@desktop-client/hooks/usePayees'; +import { TestProvider } from '@desktop-client/redux/mock'; const PAYEE_SELECTOR = '[data-testid][role=option]'; const PAYEE_SECTION_SELECTOR = '[data-testid$="-item-group"]'; diff --git a/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.tsx b/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.tsx index 76c2463a90..ab3785a3be 100644 --- a/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.tsx @@ -25,9 +25,6 @@ import { css, cx } from '@emotion/css'; import { getNormalisedString } from 'loot-core/shared/normalisation'; import { type AccountEntity, type PayeeEntity } from 'loot-core/types/models'; -import { createPayee, getActivePayees } from '../../queries/queriesSlice'; -import { useDispatch } from '../../redux'; - import { Autocomplete, defaultFilterSuggestion, @@ -37,6 +34,11 @@ import { ItemHeader } from './ItemHeader'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCommonPayees, usePayees } from '@desktop-client/hooks/usePayees'; +import { + createPayee, + getActivePayees, +} from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; export type PayeeAutocompleteItem = PayeeEntity; diff --git a/packages/desktop-client/src/components/autocomplete/ReportAutocomplete.tsx b/packages/desktop-client/src/components/autocomplete/ReportAutocomplete.tsx index bc6fb9896b..d9cc05c170 100644 --- a/packages/desktop-client/src/components/autocomplete/ReportAutocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/ReportAutocomplete.tsx @@ -2,11 +2,11 @@ import React, { type ComponentProps } from 'react'; import { type CustomReportEntity } from 'loot-core/types/models'; -import { useReports } from '../../hooks/useReports'; - import { Autocomplete } from './Autocomplete'; import { ReportList } from './ReportList'; +import { useReports } from '@desktop-client/hooks/useReports'; + type ReportAutocompleteProps = { embedded?: boolean; } & ComponentProps>; diff --git a/packages/desktop-client/src/components/banksync/AccountRow.tsx b/packages/desktop-client/src/components/banksync/AccountRow.tsx index ee513a7b6e..cceee82055 100644 --- a/packages/desktop-client/src/components/banksync/AccountRow.tsx +++ b/packages/desktop-client/src/components/banksync/AccountRow.tsx @@ -7,7 +7,7 @@ import { theme } from '@actual-app/components/theme'; import { tsToRelativeTime } from 'loot-core/shared/util'; import { type AccountEntity } from 'loot-core/types/models'; -import { Row, Cell } from '../table'; +import { Row, Cell } from '@desktop-client/components/table'; type AccountRowProps = { account: AccountEntity; diff --git a/packages/desktop-client/src/components/banksync/AccountsHeader.tsx b/packages/desktop-client/src/components/banksync/AccountsHeader.tsx index c500004670..0b1aa2358e 100644 --- a/packages/desktop-client/src/components/banksync/AccountsHeader.tsx +++ b/packages/desktop-client/src/components/banksync/AccountsHeader.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { Cell, TableHeader } from '../table'; +import { Cell, TableHeader } from '@desktop-client/components/table'; type AccountsHeaderProps = { unlinked: boolean; diff --git a/packages/desktop-client/src/components/banksync/EditSyncAccount.tsx b/packages/desktop-client/src/components/banksync/EditSyncAccount.tsx index 7599140b32..ade1dbd35e 100644 --- a/packages/desktop-client/src/components/banksync/EditSyncAccount.tsx +++ b/packages/desktop-client/src/components/banksync/EditSyncAccount.tsx @@ -21,16 +21,19 @@ import { type AccountEntity, } from 'loot-core/types/models'; -import { unlinkAccount } from '../../accounts/accountsSlice'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { CheckboxOption } from '../modals/ImportTransactionsModal/CheckboxOption'; - import { FieldMapping } from './FieldMapping'; +import { unlinkAccount } from '@desktop-client/accounts/accountsSlice'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { CheckboxOption } from '@desktop-client/components/modals/ImportTransactionsModal/CheckboxOption'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useTransactions } from '@desktop-client/hooks/useTransactions'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; export type TransactionDirection = 'payment' | 'deposit'; diff --git a/packages/desktop-client/src/components/banksync/FieldMapping.tsx b/packages/desktop-client/src/components/banksync/FieldMapping.tsx index 05b1165771..69d6098169 100644 --- a/packages/desktop-client/src/components/banksync/FieldMapping.tsx +++ b/packages/desktop-client/src/components/banksync/FieldMapping.tsx @@ -7,13 +7,13 @@ import { Select } from '@actual-app/components/select'; import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; -import { Row, Cell, TableHeader } from '../table'; - import { type MappableFieldWithExample, type TransactionDirection, } from './EditSyncAccount'; +import { Row, Cell, TableHeader } from '@desktop-client/components/table'; + const useTransactionDirectionOptions = () => { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/banksync/index.tsx b/packages/desktop-client/src/components/banksync/index.tsx index 7317886cde..eb1db43c3b 100644 --- a/packages/desktop-client/src/components/banksync/index.tsx +++ b/packages/desktop-client/src/components/banksync/index.tsx @@ -10,16 +10,15 @@ import { type AccountEntity, } from 'loot-core/types/models'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { MOBILE_NAV_HEIGHT } from '../mobile/MobileNavTabs'; -import { Page } from '../Page'; - import { AccountsHeader } from './AccountsHeader'; import { AccountsList } from './AccountsList'; +import { MOBILE_NAV_HEIGHT } from '@desktop-client/components/mobile/MobileNavTabs'; +import { Page } from '@desktop-client/components/Page'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type SyncProviders = BankSyncProviders | 'unlinked'; diff --git a/packages/desktop-client/src/components/budget/BalanceWithCarryover.tsx b/packages/desktop-client/src/components/budget/BalanceWithCarryover.tsx index 5eeafd570f..cfbcf482a3 100644 --- a/packages/desktop-client/src/components/budget/BalanceWithCarryover.tsx +++ b/packages/desktop-client/src/components/budget/BalanceWithCarryover.tsx @@ -17,13 +17,15 @@ import { css } from '@emotion/css'; import { type TransObjectLiteral } from 'loot-core/types/util'; -import { type Binding } from '../spreadsheet'; -import { CellValue, CellValueText } from '../spreadsheet/CellValue'; -import { useFormat } from '../spreadsheet/useFormat'; -import { useSheetValue } from '../spreadsheet/useSheetValue'; - import { makeBalanceAmountStyle } from './util'; +import { type Binding } from '@desktop-client/components/spreadsheet'; +import { + CellValue, + CellValueText, +} from '@desktop-client/components/spreadsheet/CellValue'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; import { useFeatureFlag } from '@desktop-client/hooks/useFeatureFlag'; type CarryoverIndicatorProps = { diff --git a/packages/desktop-client/src/components/budget/BudgetCategories.jsx b/packages/desktop-client/src/components/budget/BudgetCategories.jsx index b6267451cd..06ebb634fd 100644 --- a/packages/desktop-client/src/components/budget/BudgetCategories.jsx +++ b/packages/desktop-client/src/components/budget/BudgetCategories.jsx @@ -4,9 +4,6 @@ import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { DropHighlightPosContext } from '../sort'; -import { Row } from '../table'; - import { ExpenseCategory } from './ExpenseCategory'; import { ExpenseGroup } from './ExpenseGroup'; import { IncomeCategory } from './IncomeCategory'; @@ -16,6 +13,8 @@ import { SidebarCategory } from './SidebarCategory'; import { SidebarGroup } from './SidebarGroup'; import { separateGroups } from './util'; +import { DropHighlightPosContext } from '@desktop-client/components/sort'; +import { Row } from '@desktop-client/components/table'; import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; export const BudgetCategories = memo( diff --git a/packages/desktop-client/src/components/budget/BudgetPageHeader.tsx b/packages/desktop-client/src/components/budget/BudgetPageHeader.tsx index a586517be8..3f96488288 100644 --- a/packages/desktop-client/src/components/budget/BudgetPageHeader.tsx +++ b/packages/desktop-client/src/components/budget/BudgetPageHeader.tsx @@ -3,11 +3,11 @@ import React, { type ComponentProps, memo } from 'react'; import { View } from '@actual-app/components/view'; -import { useGlobalPref } from '../../hooks/useGlobalPref'; - import { MonthPicker } from './MonthPicker'; import { getScrollbarWidth } from './util'; +import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; + type BudgetPageHeaderProps = { startMonth: string; onMonthSelect: (month: string) => void; diff --git a/packages/desktop-client/src/components/budget/BudgetTable.tsx b/packages/desktop-client/src/components/budget/BudgetTable.tsx index d26c8e96ea..067cfeefb1 100644 --- a/packages/desktop-client/src/components/budget/BudgetTable.tsx +++ b/packages/desktop-client/src/components/budget/BudgetTable.tsx @@ -15,8 +15,6 @@ import { type CategoryGroupEntity, } from 'loot-core/types/models'; -import { type DropPosition } from '../sort'; - import { BudgetCategories } from './BudgetCategories'; import { BudgetSummaries } from './BudgetSummaries'; import { BudgetTotals } from './BudgetTotals'; @@ -28,6 +26,7 @@ import { separateGroups, } from './util'; +import { type DropPosition } from '@desktop-client/components/sort'; import { SchedulesProvider } from '@desktop-client/hooks/useCachedSchedules'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; diff --git a/packages/desktop-client/src/components/budget/BudgetTotals.tsx b/packages/desktop-client/src/components/budget/BudgetTotals.tsx index 3002e5930b..a73f550ac8 100644 --- a/packages/desktop-client/src/components/budget/BudgetTotals.tsx +++ b/packages/desktop-client/src/components/budget/BudgetTotals.tsx @@ -14,11 +14,11 @@ import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { useGlobalPref } from '../../hooks/useGlobalPref'; - import { RenderMonths } from './RenderMonths'; import { getScrollbarWidth } from './util'; +import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; + type BudgetTotalsProps = { MonthComponent: ComponentProps['component']; toggleHiddenCategories: () => void; diff --git a/packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx b/packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx index ce004e8204..96283fcd7f 100644 --- a/packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx +++ b/packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx @@ -7,12 +7,12 @@ import { View } from '@actual-app/components/view'; import * as monthUtils from 'loot-core/shared/months'; -import { useGlobalPref } from '../../hooks/useGlobalPref'; - import { useBudgetMonthCount } from './BudgetMonthCountContext'; import { BudgetPageHeader } from './BudgetPageHeader'; import { BudgetTable } from './BudgetTable'; +import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; + function getNumPossibleMonths(width: number, categoryWidth: number) { const estimatedTableWidth = width - categoryWidth; diff --git a/packages/desktop-client/src/components/budget/ExpenseCategory.tsx b/packages/desktop-client/src/components/budget/ExpenseCategory.tsx index 48ea10d402..5c87a8e514 100644 --- a/packages/desktop-client/src/components/budget/ExpenseCategory.tsx +++ b/packages/desktop-client/src/components/budget/ExpenseCategory.tsx @@ -9,6 +9,9 @@ import { type CategoryEntity, } from 'loot-core/types/models'; +import { RenderMonths } from './RenderMonths'; +import { SidebarCategory } from './SidebarCategory'; + import { useDraggable, useDroppable, @@ -16,12 +19,8 @@ import { type DragState, type OnDragChangeCallback, type OnDropCallback, -} from '../sort'; -import { Row } from '../table'; - -import { RenderMonths } from './RenderMonths'; -import { SidebarCategory } from './SidebarCategory'; - +} from '@desktop-client/components/sort'; +import { Row } from '@desktop-client/components/table'; import { useDragRef } from '@desktop-client/hooks/useDragRef'; type ExpenseCategoryProps = { diff --git a/packages/desktop-client/src/components/budget/ExpenseGroup.tsx b/packages/desktop-client/src/components/budget/ExpenseGroup.tsx index 6af6cbd0b6..f781792e4b 100644 --- a/packages/desktop-client/src/components/budget/ExpenseGroup.tsx +++ b/packages/desktop-client/src/components/budget/ExpenseGroup.tsx @@ -4,6 +4,9 @@ import React, { type ComponentProps } from 'react'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; +import { RenderMonths } from './RenderMonths'; +import { SidebarGroup } from './SidebarGroup'; + import { useDraggable, useDroppable, @@ -11,12 +14,8 @@ import { type OnDragChangeCallback, type OnDropCallback, type DragState, -} from '../sort'; -import { Row, ROW_HEIGHT } from '../table'; - -import { RenderMonths } from './RenderMonths'; -import { SidebarGroup } from './SidebarGroup'; - +} from '@desktop-client/components/sort'; +import { Row, ROW_HEIGHT } from '@desktop-client/components/table'; import { useDragRef } from '@desktop-client/hooks/useDragRef'; type ExpenseGroupProps = { diff --git a/packages/desktop-client/src/components/budget/IncomeCategory.tsx b/packages/desktop-client/src/components/budget/IncomeCategory.tsx index c529d88992..c0d99405bc 100644 --- a/packages/desktop-client/src/components/budget/IncomeCategory.tsx +++ b/packages/desktop-client/src/components/budget/IncomeCategory.tsx @@ -3,18 +3,17 @@ import React, { type ComponentProps } from 'react'; import { type CategoryEntity } from 'loot-core/types/models'; +import { RenderMonths } from './RenderMonths'; +import { SidebarCategory } from './SidebarCategory'; + import { useDraggable, useDroppable, DropHighlight, type OnDragChangeCallback, type OnDropCallback, -} from '../sort'; -import { Row } from '../table'; - -import { RenderMonths } from './RenderMonths'; -import { SidebarCategory } from './SidebarCategory'; - +} from '@desktop-client/components/sort'; +import { Row } from '@desktop-client/components/table'; import { useDragRef } from '@desktop-client/hooks/useDragRef'; type IncomeCategoryProps = { diff --git a/packages/desktop-client/src/components/budget/IncomeGroup.tsx b/packages/desktop-client/src/components/budget/IncomeGroup.tsx index 760eda4ae3..447fc9a73e 100644 --- a/packages/desktop-client/src/components/budget/IncomeGroup.tsx +++ b/packages/desktop-client/src/components/budget/IncomeGroup.tsx @@ -5,11 +5,11 @@ import { theme } from '@actual-app/components/theme'; import { type CategoryGroupEntity } from 'loot-core/types/models'; -import { Row } from '../table'; - import { RenderMonths } from './RenderMonths'; import { SidebarGroup } from './SidebarGroup'; +import { Row } from '@desktop-client/components/table'; + type IncomeGroupProps = { group: CategoryGroupEntity; editingCell: { id: CategoryGroupEntity['id']; cell: string } | null; diff --git a/packages/desktop-client/src/components/budget/IncomeHeader.tsx b/packages/desktop-client/src/components/budget/IncomeHeader.tsx index 103461ce44..274d490389 100644 --- a/packages/desktop-client/src/components/budget/IncomeHeader.tsx +++ b/packages/desktop-client/src/components/budget/IncomeHeader.tsx @@ -4,10 +4,10 @@ import { Trans } from 'react-i18next'; import { Button } from '@actual-app/components/button'; import { View } from '@actual-app/components/view'; -import { useGlobalPref } from '../../hooks/useGlobalPref'; - import { RenderMonths } from './RenderMonths'; +import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; + type IncomeHeaderProps = { MonthComponent?: () => JSX.Element; onShowNewGroup: () => void; diff --git a/packages/desktop-client/src/components/budget/MonthPicker.tsx b/packages/desktop-client/src/components/budget/MonthPicker.tsx index 1f85ce1415..1d08b5a79f 100644 --- a/packages/desktop-client/src/components/budget/MonthPicker.tsx +++ b/packages/desktop-client/src/components/budget/MonthPicker.tsx @@ -13,10 +13,9 @@ import { View } from '@actual-app/components/view'; import * as monthUtils from 'loot-core/shared/months'; -import { Link } from '../common/Link'; - import { type MonthBounds } from './MonthsContext'; +import { Link } from '@desktop-client/components/common/Link'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useResizeObserver } from '@desktop-client/hooks/useResizeObserver'; diff --git a/packages/desktop-client/src/components/budget/RenderMonths.tsx b/packages/desktop-client/src/components/budget/RenderMonths.tsx index 9cef0181e1..cc8fb10dc9 100644 --- a/packages/desktop-client/src/components/budget/RenderMonths.tsx +++ b/packages/desktop-client/src/components/budget/RenderMonths.tsx @@ -11,10 +11,10 @@ import { View } from '@actual-app/components/view'; import * as monthUtils from 'loot-core/shared/months'; -import { NamespaceContext } from '../spreadsheet/NamespaceContext'; - import { MonthsContext } from './MonthsContext'; +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; + type RenderMonthsProps = { component?: ComponentType<{ month: string; editing: boolean }>; editingMonth?: string; diff --git a/packages/desktop-client/src/components/budget/SidebarCategory.tsx b/packages/desktop-client/src/components/budget/SidebarCategory.tsx index e4022a516c..c9c08ec8bb 100644 --- a/packages/desktop-client/src/components/budget/SidebarCategory.tsx +++ b/packages/desktop-client/src/components/budget/SidebarCategory.tsx @@ -15,11 +15,10 @@ import { type CategoryEntity, } from 'loot-core/types/models'; -import { NotesButton } from '../NotesButton'; -import { InputCell } from '../table'; - import { CategoryAutomationButton } from './goals/CategoryAutomationButton'; +import { NotesButton } from '@desktop-client/components/NotesButton'; +import { InputCell } from '@desktop-client/components/table'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useFeatureFlag } from '@desktop-client/hooks/useFeatureFlag'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; diff --git a/packages/desktop-client/src/components/budget/SidebarGroup.tsx b/packages/desktop-client/src/components/budget/SidebarGroup.tsx index 1007c48f7f..c13e02f03b 100644 --- a/packages/desktop-client/src/components/budget/SidebarGroup.tsx +++ b/packages/desktop-client/src/components/budget/SidebarGroup.tsx @@ -16,9 +16,8 @@ import { type CategoryGroupEntity, } from 'loot-core/types/models'; -import { NotesButton } from '../NotesButton'; -import { InputCell } from '../table'; - +import { NotesButton } from '@desktop-client/components/NotesButton'; +import { InputCell } from '@desktop-client/components/table'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useFeatureFlag } from '@desktop-client/hooks/useFeatureFlag'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; diff --git a/packages/desktop-client/src/components/budget/envelope/BalanceMenu.tsx b/packages/desktop-client/src/components/budget/envelope/BalanceMenu.tsx index 4edbdbdb47..1a33b94d67 100644 --- a/packages/desktop-client/src/components/budget/envelope/BalanceMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/BalanceMenu.tsx @@ -3,10 +3,10 @@ import { useTranslation } from 'react-i18next'; import { Menu } from '@actual-app/components/menu'; -import { envelopeBudget } from '../../../queries/queries'; - import { useEnvelopeSheetValue } from './EnvelopeBudgetComponents'; +import { envelopeBudget } from '@desktop-client/queries/queries'; + type BalanceMenuProps = Omit< ComponentPropsWithoutRef, 'onMenuSelect' | 'items' diff --git a/packages/desktop-client/src/components/budget/envelope/BalanceMovementMenu.tsx b/packages/desktop-client/src/components/budget/envelope/BalanceMovementMenu.tsx index 3931a8d003..cabf3d9478 100644 --- a/packages/desktop-client/src/components/budget/envelope/BalanceMovementMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/BalanceMovementMenu.tsx @@ -1,12 +1,12 @@ import React, { useCallback, useRef, useState } from 'react'; -import { envelopeBudget } from '../../../queries/queries'; - import { BalanceMenu } from './BalanceMenu'; import { CoverMenu } from './CoverMenu'; import { useEnvelopeSheetValue } from './EnvelopeBudgetComponents'; import { TransferMenu } from './TransferMenu'; +import { envelopeBudget } from '@desktop-client/queries/queries'; + type BalanceMovementMenuProps = { categoryId: string; month: string; diff --git a/packages/desktop-client/src/components/budget/envelope/CoverMenu.tsx b/packages/desktop-client/src/components/budget/envelope/CoverMenu.tsx index 93bf9d9a62..fc1a1bdb46 100644 --- a/packages/desktop-client/src/components/budget/envelope/CoverMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/CoverMenu.tsx @@ -8,9 +8,11 @@ import { View } from '@actual-app/components/view'; import { type CategoryEntity } from 'loot-core/types/models'; -import { CategoryAutocomplete } from '../../autocomplete/CategoryAutocomplete'; -import { addToBeBudgetedGroup, removeCategoriesFromGroups } from '../util'; - +import { CategoryAutocomplete } from '@desktop-client/components/autocomplete/CategoryAutocomplete'; +import { + addToBeBudgetedGroup, + removeCategoriesFromGroups, +} from '@desktop-client/components/budget/util'; import { useCategories } from '@desktop-client/hooks/useCategories'; type CoverMenuProps = { diff --git a/packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx b/packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx index 6b3ac772b1..785a8c29c9 100644 --- a/packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx +++ b/packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx @@ -27,22 +27,32 @@ import { type CategoryEntity, } from 'loot-core/types/models'; -import { envelopeBudget } from '../../../queries/queries'; -import { type Binding, type SheetFields } from '../../spreadsheet'; -import { CellValue, CellValueText } from '../../spreadsheet/CellValue'; -import { useSheetName } from '../../spreadsheet/useSheetName'; -import { useSheetValue } from '../../spreadsheet/useSheetValue'; -import { Row, Field, SheetCell, type SheetCellProps } from '../../table'; -import { BalanceWithCarryover } from '../BalanceWithCarryover'; -import { makeAmountGrey } from '../util'; - import { BalanceMovementMenu } from './BalanceMovementMenu'; import { BudgetMenu } from './BudgetMenu'; +import { BalanceWithCarryover } from '@desktop-client/components/budget/BalanceWithCarryover'; +import { makeAmountGrey } from '@desktop-client/components/budget/util'; +import { + type Binding, + type SheetFields, +} from '@desktop-client/components/spreadsheet'; +import { + CellValue, + CellValueText, +} from '@desktop-client/components/spreadsheet/CellValue'; +import { useSheetName } from '@desktop-client/components/spreadsheet/useSheetName'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; +import { + Row, + Field, + SheetCell, + type SheetCellProps, +} from '@desktop-client/components/table'; import { useCategoryScheduleGoalTemplateIndicator } from '@desktop-client/hooks/useCategoryScheduleGoalTemplateIndicator'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useUndo } from '@desktop-client/hooks/useUndo'; +import { envelopeBudget } from '@desktop-client/queries/queries'; export function useEnvelopeSheetName< FieldName extends SheetFields<'envelope-budget'>, diff --git a/packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx b/packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx index 98fdc1c61e..6571fa56c8 100644 --- a/packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx @@ -10,7 +10,7 @@ import { View } from '@actual-app/components/view'; import { evalArithmetic } from 'loot-core/shared/arithmetic'; import { integerToCurrency, amountToInteger } from 'loot-core/shared/util'; -import { useSheetValue } from '../../spreadsheet/useSheetValue'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; type HoldMenuProps = { onSubmit: (amount: number) => void; diff --git a/packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx b/packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx index b1988da15c..f83eaa922b 100644 --- a/packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx @@ -11,9 +11,11 @@ import { evalArithmetic } from 'loot-core/shared/arithmetic'; import { integerToCurrency, amountToInteger } from 'loot-core/shared/util'; import { type CategoryEntity } from 'loot-core/types/models'; -import { CategoryAutocomplete } from '../../autocomplete/CategoryAutocomplete'; -import { addToBeBudgetedGroup, removeCategoriesFromGroups } from '../util'; - +import { CategoryAutocomplete } from '@desktop-client/components/autocomplete/CategoryAutocomplete'; +import { + addToBeBudgetedGroup, + removeCategoriesFromGroups, +} from '@desktop-client/components/budget/util'; import { useCategories } from '@desktop-client/hooks/useCategories'; type TransferMenuProps = { diff --git a/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetSummary.tsx b/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetSummary.tsx index 8f46fcd43f..722786e791 100644 --- a/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetSummary.tsx +++ b/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetSummary.tsx @@ -15,14 +15,13 @@ import { css } from '@emotion/css'; import * as monthUtils from 'loot-core/shared/months'; -import { NotesButton } from '../../../NotesButton'; -import { NamespaceContext } from '../../../spreadsheet/NamespaceContext'; -import { useEnvelopeBudget } from '../EnvelopeBudgetContext'; - import { BudgetMonthMenu } from './BudgetMonthMenu'; import { ToBudget } from './ToBudget'; import { TotalsList } from './TotalsList'; +import { useEnvelopeBudget } from '@desktop-client/components/budget/envelope/EnvelopeBudgetContext'; +import { NotesButton } from '@desktop-client/components/NotesButton'; +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useUndo } from '@desktop-client/hooks/useUndo'; diff --git a/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudget.tsx b/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudget.tsx index 829fab8bcb..5db4071154 100644 --- a/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudget.tsx +++ b/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudget.tsx @@ -8,16 +8,15 @@ import React, { import { Popover } from '@actual-app/components/popover'; import { View } from '@actual-app/components/view'; -import { envelopeBudget } from '../../../../queries/queries'; -import { CoverMenu } from '../CoverMenu'; -import { useEnvelopeSheetValue } from '../EnvelopeBudgetComponents'; -import { HoldMenu } from '../HoldMenu'; -import { TransferMenu } from '../TransferMenu'; - import { ToBudgetAmount } from './ToBudgetAmount'; import { ToBudgetMenu } from './ToBudgetMenu'; +import { CoverMenu } from '@desktop-client/components/budget/envelope/CoverMenu'; +import { useEnvelopeSheetValue } from '@desktop-client/components/budget/envelope/EnvelopeBudgetComponents'; +import { HoldMenu } from '@desktop-client/components/budget/envelope/HoldMenu'; +import { TransferMenu } from '@desktop-client/components/budget/envelope/TransferMenu'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; +import { envelopeBudget } from '@desktop-client/queries/queries'; type ToBudgetProps = { month: string; diff --git a/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetAmount.tsx b/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetAmount.tsx index c3eca7b73d..630754059e 100644 --- a/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetAmount.tsx +++ b/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetAmount.tsx @@ -8,15 +8,15 @@ import { Tooltip } from '@actual-app/components/tooltip'; import { View } from '@actual-app/components/view'; import { css } from '@emotion/css'; -import { envelopeBudget } from '../../../../queries/queries'; -import { PrivacyFilter } from '../../../PrivacyFilter'; -import { useFormat } from '../../../spreadsheet/useFormat'; +import { TotalsList } from './TotalsList'; + import { useEnvelopeSheetName, useEnvelopeSheetValue, -} from '../EnvelopeBudgetComponents'; - -import { TotalsList } from './TotalsList'; +} from '@desktop-client/components/budget/envelope/EnvelopeBudgetComponents'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; +import { envelopeBudget } from '@desktop-client/queries/queries'; type ToBudgetAmountProps = { prevMonthName: string; diff --git a/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetMenu.tsx b/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetMenu.tsx index fcd8f5c2e0..8b83338312 100644 --- a/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetMenu.tsx @@ -3,8 +3,8 @@ import { useTranslation } from 'react-i18next'; import { Menu } from '@actual-app/components/menu'; -import { envelopeBudget } from '../../../../queries/queries'; -import { useEnvelopeSheetValue } from '../EnvelopeBudgetComponents'; +import { useEnvelopeSheetValue } from '@desktop-client/components/budget/envelope/EnvelopeBudgetComponents'; +import { envelopeBudget } from '@desktop-client/queries/queries'; type ToBudgetMenuProps = Omit< ComponentPropsWithoutRef, diff --git a/packages/desktop-client/src/components/budget/envelope/budgetsummary/TotalsList.tsx b/packages/desktop-client/src/components/budget/envelope/budgetsummary/TotalsList.tsx index 39b783bafe..3b77f3040c 100644 --- a/packages/desktop-client/src/components/budget/envelope/budgetsummary/TotalsList.tsx +++ b/packages/desktop-client/src/components/budget/envelope/budgetsummary/TotalsList.tsx @@ -7,10 +7,10 @@ import { styles } from '@actual-app/components/styles'; import { Tooltip } from '@actual-app/components/tooltip'; import { View } from '@actual-app/components/view'; -import { envelopeBudget } from '../../../../queries/queries'; -import { CellValueText } from '../../../spreadsheet/CellValue'; -import { useFormat } from '../../../spreadsheet/useFormat'; -import { EnvelopeCellValue } from '../EnvelopeBudgetComponents'; +import { EnvelopeCellValue } from '@desktop-client/components/budget/envelope/EnvelopeBudgetComponents'; +import { CellValueText } from '@desktop-client/components/spreadsheet/CellValue'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; +import { envelopeBudget } from '@desktop-client/queries/queries'; type TotalsListProps = { prevMonthName: string; diff --git a/packages/desktop-client/src/components/budget/goals/BudgetAutomationEditor.tsx b/packages/desktop-client/src/components/budget/goals/BudgetAutomationEditor.tsx index e3e538e7cd..00ecd769df 100644 --- a/packages/desktop-client/src/components/budget/goals/BudgetAutomationEditor.tsx +++ b/packages/desktop-client/src/components/budget/goals/BudgetAutomationEditor.tsx @@ -12,8 +12,6 @@ import type { ScheduleEntity, } from 'loot-core/types/models'; -import { FormField, FormLabel } from '../../forms'; - import { type Action, setType } from './actions'; import { displayTemplateTypes, type ReducerState } from './constants'; import { HistoricalAutomation } from './editor/HistoricalAutomation'; @@ -22,6 +20,8 @@ import { ScheduleAutomation } from './editor/ScheduleAutomation'; import { SimpleAutomation } from './editor/SimpleAutomation'; import { WeekAutomation } from './editor/WeekAutomation'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; + type BudgetAutomationEditorProps = { inline: boolean; state: ReducerState; diff --git a/packages/desktop-client/src/components/budget/goals/CategoryAutomationButton.tsx b/packages/desktop-client/src/components/budget/goals/CategoryAutomationButton.tsx index 244def49a3..9916412aee 100644 --- a/packages/desktop-client/src/components/budget/goals/CategoryAutomationButton.tsx +++ b/packages/desktop-client/src/components/budget/goals/CategoryAutomationButton.tsx @@ -6,10 +6,9 @@ import { theme } from '@actual-app/components/theme'; import { type Template } from 'loot-core/server/budget/types/templates'; -import { pushModal } from '../../../modals/modalsSlice'; -import { useDispatch } from '../../../redux'; - import { useFeatureFlag } from '@desktop-client/hooks/useFeatureFlag'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type CategoryAutomationButtonProps = { width?: number; diff --git a/packages/desktop-client/src/components/budget/goals/editor/HistoricalAutomation.tsx b/packages/desktop-client/src/components/budget/goals/editor/HistoricalAutomation.tsx index 3682dedff5..d2e9279acb 100644 --- a/packages/desktop-client/src/components/budget/goals/editor/HistoricalAutomation.tsx +++ b/packages/desktop-client/src/components/budget/goals/editor/HistoricalAutomation.tsx @@ -8,9 +8,12 @@ import type { AverageTemplate, } from 'loot-core/server/budget/types/templates'; -import { FormField, FormLabel } from '../../../forms'; -import { GenericInput } from '../../../util/GenericInput'; -import { type Action, updateTemplate } from '../actions'; +import { + type Action, + updateTemplate, +} from '@desktop-client/components/budget/goals/actions'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { GenericInput } from '@desktop-client/components/util/GenericInput'; type HistoricalAutomationProps = { template: CopyTemplate | AverageTemplate; diff --git a/packages/desktop-client/src/components/budget/goals/editor/PercentageAutomation.tsx b/packages/desktop-client/src/components/budget/goals/editor/PercentageAutomation.tsx index 8df3023995..de2a797a26 100644 --- a/packages/desktop-client/src/components/budget/goals/editor/PercentageAutomation.tsx +++ b/packages/desktop-client/src/components/budget/goals/editor/PercentageAutomation.tsx @@ -10,10 +10,13 @@ import type { CategoryEntity, } from 'loot-core/types/models'; -import { CategoryAutocomplete } from '../../../autocomplete/CategoryAutocomplete'; -import { FormField, FormLabel } from '../../../forms'; -import { PercentInput } from '../../../util/PercentInput'; -import { type Action, updateTemplate } from '../actions'; +import { CategoryAutocomplete } from '@desktop-client/components/autocomplete/CategoryAutocomplete'; +import { + type Action, + updateTemplate, +} from '@desktop-client/components/budget/goals/actions'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { PercentInput } from '@desktop-client/components/util/PercentInput'; type PercentageAutomationProps = { dispatch: (action: Action) => void; diff --git a/packages/desktop-client/src/components/budget/goals/editor/ScheduleAutomation.tsx b/packages/desktop-client/src/components/budget/goals/editor/ScheduleAutomation.tsx index 97ef76dc7b..f8dd87e662 100644 --- a/packages/desktop-client/src/components/budget/goals/editor/ScheduleAutomation.tsx +++ b/packages/desktop-client/src/components/budget/goals/editor/ScheduleAutomation.tsx @@ -7,9 +7,12 @@ import { Text } from '@actual-app/components/text'; import type { ScheduleTemplate } from 'loot-core/server/budget/types/templates'; import type { ScheduleEntity } from 'loot-core/types/models'; -import { Link } from '../../../common/Link'; -import { FormField, FormLabel } from '../../../forms'; -import { type Action, updateTemplate } from '../actions'; +import { + type Action, + updateTemplate, +} from '@desktop-client/components/budget/goals/actions'; +import { Link } from '@desktop-client/components/common/Link'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; type ScheduleAutomationProps = { schedules: readonly ScheduleEntity[]; diff --git a/packages/desktop-client/src/components/budget/goals/editor/SimpleAutomation.tsx b/packages/desktop-client/src/components/budget/goals/editor/SimpleAutomation.tsx index 08e9c3124a..6bab67bb46 100644 --- a/packages/desktop-client/src/components/budget/goals/editor/SimpleAutomation.tsx +++ b/packages/desktop-client/src/components/budget/goals/editor/SimpleAutomation.tsx @@ -2,9 +2,12 @@ import { useTranslation } from 'react-i18next'; import type { SimpleTemplate } from 'loot-core/server/budget/types/templates'; -import { FormField, FormLabel } from '../../../forms'; -import { AmountInput } from '../../../util/AmountInput'; -import { type Action, updateTemplate } from '../actions'; +import { + type Action, + updateTemplate, +} from '@desktop-client/components/budget/goals/actions'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { AmountInput } from '@desktop-client/components/util/AmountInput'; type SimpleAutomationProps = { template: SimpleTemplate; diff --git a/packages/desktop-client/src/components/budget/goals/editor/WeekAutomation.tsx b/packages/desktop-client/src/components/budget/goals/editor/WeekAutomation.tsx index 57e590216f..d1668a3bf0 100644 --- a/packages/desktop-client/src/components/budget/goals/editor/WeekAutomation.tsx +++ b/packages/desktop-client/src/components/budget/goals/editor/WeekAutomation.tsx @@ -2,9 +2,12 @@ import { useTranslation } from 'react-i18next'; import type { WeekTemplate } from 'loot-core/server/budget/types/templates'; -import { FormField, FormLabel } from '../../../forms'; -import { AmountInput } from '../../../util/AmountInput'; -import { type Action, updateTemplate } from '../actions'; +import { + type Action, + updateTemplate, +} from '@desktop-client/components/budget/goals/actions'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { AmountInput } from '@desktop-client/components/util/AmountInput'; type WeekAutomationProps = { template: WeekTemplate; diff --git a/packages/desktop-client/src/components/budget/goals/useBudgetAutomationCategories.ts b/packages/desktop-client/src/components/budget/goals/useBudgetAutomationCategories.ts index 2208905942..ee403d5e80 100644 --- a/packages/desktop-client/src/components/budget/goals/useBudgetAutomationCategories.ts +++ b/packages/desktop-client/src/components/budget/goals/useBudgetAutomationCategories.ts @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { useCategories } from '../../../hooks/useCategories'; +import { useCategories } from '@desktop-client/hooks/useCategories'; export function useBudgetAutomationCategories() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/budget/index.tsx b/packages/desktop-client/src/components/budget/index.tsx index bc404db3e0..d5e6bbe42c 100644 --- a/packages/desktop-client/src/components/budget/index.tsx +++ b/packages/desktop-client/src/components/budget/index.tsx @@ -8,8 +8,22 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import * as monthUtils from 'loot-core/shared/months'; -import { pushModal } from '../../modals/modalsSlice'; -import { addNotification } from '../../notifications/notificationsSlice'; +import { DynamicBudgetTable } from './DynamicBudgetTable'; +import * as envelopeBudget from './envelope/EnvelopeBudgetComponents'; +import { EnvelopeBudgetProvider } from './envelope/EnvelopeBudgetContext'; +import * as trackingBudget from './tracking/TrackingBudgetComponents'; +import { TrackingBudgetProvider } from './tracking/TrackingBudgetContext'; +import { prewarmAllMonths, prewarmMonth } from './util'; + +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; +import { useCategories } from '@desktop-client/hooks/useCategories'; +import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; +import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; +import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; +import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; import { applyBudgetAction, createCategory, @@ -21,23 +35,8 @@ import { moveCategoryGroup, updateCategory, updateGroup, -} from '../../queries/queriesSlice'; -import { useDispatch } from '../../redux'; -import { NamespaceContext } from '../spreadsheet/NamespaceContext'; - -import { DynamicBudgetTable } from './DynamicBudgetTable'; -import * as envelopeBudget from './envelope/EnvelopeBudgetComponents'; -import { EnvelopeBudgetProvider } from './envelope/EnvelopeBudgetContext'; -import * as trackingBudget from './tracking/TrackingBudgetComponents'; -import { TrackingBudgetProvider } from './tracking/TrackingBudgetContext'; -import { prewarmAllMonths, prewarmMonth } from './util'; - -import { useCategories } from '@desktop-client/hooks/useCategories'; -import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; -import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; -import { useNavigate } from '@desktop-client/hooks/useNavigate'; -import { useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; -import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +} from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; type TrackingReportComponents = { SummaryComponent: typeof trackingBudget.BudgetSummary; diff --git a/packages/desktop-client/src/components/budget/tracking/BalanceMenu.tsx b/packages/desktop-client/src/components/budget/tracking/BalanceMenu.tsx index a79a904e14..898602da3a 100644 --- a/packages/desktop-client/src/components/budget/tracking/BalanceMenu.tsx +++ b/packages/desktop-client/src/components/budget/tracking/BalanceMenu.tsx @@ -3,10 +3,10 @@ import { useTranslation } from 'react-i18next'; import { Menu } from '@actual-app/components/menu'; -import { trackingBudget } from '../../../queries/queries'; - import { useTrackingSheetValue } from './TrackingBudgetComponents'; +import { trackingBudget } from '@desktop-client/queries/queries'; + type BalanceMenuProps = Omit< ComponentPropsWithoutRef, 'onMenuSelect' | 'items' diff --git a/packages/desktop-client/src/components/budget/tracking/TrackingBudgetComponents.tsx b/packages/desktop-client/src/components/budget/tracking/TrackingBudgetComponents.tsx index 295ffbd8fc..6e960c2944 100644 --- a/packages/desktop-client/src/components/budget/tracking/TrackingBudgetComponents.tsx +++ b/packages/desktop-client/src/components/budget/tracking/TrackingBudgetComponents.tsx @@ -29,20 +29,29 @@ import { type CategoryGroupEntity, } from 'loot-core/types/models'; -import { trackingBudget } from '../../../queries/queries'; -import { type Binding, type SheetFields } from '../../spreadsheet'; -import { CellValue, CellValueText } from '../../spreadsheet/CellValue'; -import { useSheetValue } from '../../spreadsheet/useSheetValue'; -import { Field, SheetCell, type SheetCellProps } from '../../table'; -import { BalanceWithCarryover } from '../BalanceWithCarryover'; -import { makeAmountGrey } from '../util'; - import { BalanceMenu } from './BalanceMenu'; import { BudgetMenu } from './BudgetMenu'; +import { BalanceWithCarryover } from '@desktop-client/components/budget/BalanceWithCarryover'; +import { makeAmountGrey } from '@desktop-client/components/budget/util'; +import { + type Binding, + type SheetFields, +} from '@desktop-client/components/spreadsheet'; +import { + CellValue, + CellValueText, +} from '@desktop-client/components/spreadsheet/CellValue'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; +import { + Field, + SheetCell, + type SheetCellProps, +} from '@desktop-client/components/table'; import { useCategoryScheduleGoalTemplateIndicator } from '@desktop-client/hooks/useCategoryScheduleGoalTemplateIndicator'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useUndo } from '@desktop-client/hooks/useUndo'; +import { trackingBudget } from '@desktop-client/queries/queries'; export const useTrackingSheetValue = < FieldName extends SheetFields<'tracking-budget'>, diff --git a/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetSummary.tsx b/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetSummary.tsx index 6a11fe10bb..11a6dcbdb3 100644 --- a/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetSummary.tsx +++ b/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetSummary.tsx @@ -17,15 +17,14 @@ import { css } from '@emotion/css'; import * as monthUtils from 'loot-core/shared/months'; -import { NotesButton } from '../../../NotesButton'; -import { NamespaceContext } from '../../../spreadsheet/NamespaceContext'; -import { useTrackingBudget } from '../TrackingBudgetContext'; - import { BudgetMonthMenu } from './BudgetMonthMenu'; import { ExpenseTotal } from './ExpenseTotal'; import { IncomeTotal } from './IncomeTotal'; import { Saved } from './Saved'; +import { useTrackingBudget } from '@desktop-client/components/budget/tracking/TrackingBudgetContext'; +import { NotesButton } from '@desktop-client/components/NotesButton'; +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useUndo } from '@desktop-client/hooks/useUndo'; diff --git a/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetTotal.tsx b/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetTotal.tsx index b35e8eeb2d..3d4a4dce33 100644 --- a/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetTotal.tsx +++ b/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetTotal.tsx @@ -11,8 +11,14 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { type SheetFields, type Binding } from '../../../spreadsheet'; -import { CellValue, CellValueText } from '../../../spreadsheet/CellValue'; +import { + type SheetFields, + type Binding, +} from '@desktop-client/components/spreadsheet'; +import { + CellValue, + CellValueText, +} from '@desktop-client/components/spreadsheet/CellValue'; type BudgetTotalProps< CurrentField extends SheetFields<'tracking-budget'>, diff --git a/packages/desktop-client/src/components/budget/tracking/budgetsummary/ExpenseProgress.tsx b/packages/desktop-client/src/components/budget/tracking/budgetsummary/ExpenseProgress.tsx index 47b846d3c6..7c8bbc7432 100644 --- a/packages/desktop-client/src/components/budget/tracking/budgetsummary/ExpenseProgress.tsx +++ b/packages/desktop-client/src/components/budget/tracking/budgetsummary/ExpenseProgress.tsx @@ -2,12 +2,12 @@ import React from 'react'; import { theme } from '@actual-app/components/theme'; -import { type Binding } from '../../../spreadsheet'; -import { useTrackingSheetValue } from '../TrackingBudgetComponents'; - import { fraction } from './fraction'; import { PieProgress } from './PieProgress'; +import { useTrackingSheetValue } from '@desktop-client/components/budget/tracking/TrackingBudgetComponents'; +import { type Binding } from '@desktop-client/components/spreadsheet'; + type ExpenseProgressProps = { current: Binding<'tracking-budget', 'total-spent'>; target: Binding<'tracking-budget', 'total-budgeted'>; diff --git a/packages/desktop-client/src/components/budget/tracking/budgetsummary/ExpenseTotal.tsx b/packages/desktop-client/src/components/budget/tracking/budgetsummary/ExpenseTotal.tsx index aaa2797612..ff1095f1f8 100644 --- a/packages/desktop-client/src/components/budget/tracking/budgetsummary/ExpenseTotal.tsx +++ b/packages/desktop-client/src/components/budget/tracking/budgetsummary/ExpenseTotal.tsx @@ -1,11 +1,11 @@ import React, { type CSSProperties } from 'react'; import { useTranslation } from 'react-i18next'; -import { trackingBudget } from '../../../../queries/queries'; - import { BudgetTotal } from './BudgetTotal'; import { ExpenseProgress } from './ExpenseProgress'; +import { trackingBudget } from '@desktop-client/queries/queries'; + type ExpenseTotalProps = { style?: CSSProperties; }; diff --git a/packages/desktop-client/src/components/budget/tracking/budgetsummary/IncomeProgress.tsx b/packages/desktop-client/src/components/budget/tracking/budgetsummary/IncomeProgress.tsx index a7c11b4f17..a16b8fdf3b 100644 --- a/packages/desktop-client/src/components/budget/tracking/budgetsummary/IncomeProgress.tsx +++ b/packages/desktop-client/src/components/budget/tracking/budgetsummary/IncomeProgress.tsx @@ -2,12 +2,12 @@ import React, { type ComponentProps } from 'react'; import { theme } from '@actual-app/components/theme'; -import { type CellValue } from '../../../spreadsheet/CellValue'; -import { useSheetValue } from '../../../spreadsheet/useSheetValue'; - import { fraction } from './fraction'; import { PieProgress } from './PieProgress'; +import { type CellValue } from '@desktop-client/components/spreadsheet/CellValue'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; + type IncomeProgressProps = { current: ComponentProps['binding']; target: ComponentProps['binding']; diff --git a/packages/desktop-client/src/components/budget/tracking/budgetsummary/IncomeTotal.tsx b/packages/desktop-client/src/components/budget/tracking/budgetsummary/IncomeTotal.tsx index 7806a4af78..df63504649 100644 --- a/packages/desktop-client/src/components/budget/tracking/budgetsummary/IncomeTotal.tsx +++ b/packages/desktop-client/src/components/budget/tracking/budgetsummary/IncomeTotal.tsx @@ -1,11 +1,11 @@ import React, { type CSSProperties } from 'react'; import { useTranslation } from 'react-i18next'; -import { trackingBudget } from '../../../../queries/queries'; - import { BudgetTotal } from './BudgetTotal'; import { IncomeProgress } from './IncomeProgress'; +import { trackingBudget } from '@desktop-client/queries/queries'; + type IncomeTotalProps = { style?: CSSProperties; }; diff --git a/packages/desktop-client/src/components/budget/tracking/budgetsummary/Saved.tsx b/packages/desktop-client/src/components/budget/tracking/budgetsummary/Saved.tsx index 40b2312339..4c79d6048f 100644 --- a/packages/desktop-client/src/components/budget/tracking/budgetsummary/Saved.tsx +++ b/packages/desktop-client/src/components/budget/tracking/budgetsummary/Saved.tsx @@ -9,11 +9,11 @@ import { Tooltip } from '@actual-app/components/tooltip'; import { View } from '@actual-app/components/view'; import { css } from '@emotion/css'; -import { trackingBudget } from '../../../../queries/queries'; -import { PrivacyFilter } from '../../../PrivacyFilter'; -import { useFormat } from '../../../spreadsheet/useFormat'; -import { makeAmountFullStyle } from '../../util'; -import { useTrackingSheetValue } from '../TrackingBudgetComponents'; +import { useTrackingSheetValue } from '@desktop-client/components/budget/tracking/TrackingBudgetComponents'; +import { makeAmountFullStyle } from '@desktop-client/components/budget/util'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; +import { trackingBudget } from '@desktop-client/queries/queries'; type SavedProps = { projected: boolean; diff --git a/packages/desktop-client/src/components/budget/util.ts b/packages/desktop-client/src/components/budget/util.ts index aff3380bc7..a8900cc9dc 100644 --- a/packages/desktop-client/src/components/budget/util.ts +++ b/packages/desktop-client/src/components/budget/util.ts @@ -14,11 +14,11 @@ import { } from 'loot-core/types/models'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { type useSpreadsheet } from '../../hooks/useSpreadsheet'; -import { type DropPosition } from '../sort'; - import { getValidMonthBounds } from './MonthsContext'; +import { type DropPosition } from '@desktop-client/components/sort'; +import { type useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; + export function addToBeBudgetedGroup(groups: CategoryGroupEntity[]) { return [ { diff --git a/packages/desktop-client/src/components/filters/ConditionsOpMenu.tsx b/packages/desktop-client/src/components/filters/ConditionsOpMenu.tsx index 77ca105def..c3ce1591cb 100644 --- a/packages/desktop-client/src/components/filters/ConditionsOpMenu.tsx +++ b/packages/desktop-client/src/components/filters/ConditionsOpMenu.tsx @@ -6,7 +6,7 @@ import { View } from '@actual-app/components/view'; import { type RuleConditionEntity } from 'loot-core/types/models'; -import { FieldSelect } from '../modals/EditRuleModal'; +import { FieldSelect } from '@desktop-client/components/modals/EditRuleModal'; export function ConditionsOpMenu({ conditionsOp, diff --git a/packages/desktop-client/src/components/filters/FilterExpression.tsx b/packages/desktop-client/src/components/filters/FilterExpression.tsx index 3159b8fb1c..f553a89d95 100644 --- a/packages/desktop-client/src/components/filters/FilterExpression.tsx +++ b/packages/desktop-client/src/components/filters/FilterExpression.tsx @@ -12,11 +12,11 @@ import { mapField, friendlyOp } from 'loot-core/shared/rules'; import { integerToCurrency } from 'loot-core/shared/util'; import { type RuleConditionEntity } from 'loot-core/types/models'; -import { Value } from '../rules/Value'; - import { FilterEditor } from './FiltersMenu'; import { subfieldFromFilter } from './subfieldFromFilter'; +import { Value } from '@desktop-client/components/rules/Value'; + let isDatepickerClick = false; type FilterExpressionProps = { diff --git a/packages/desktop-client/src/components/filters/FiltersMenu.jsx b/packages/desktop-client/src/components/filters/FiltersMenu.jsx index 100e88ca3d..ac7e9082f5 100644 --- a/packages/desktop-client/src/components/filters/FiltersMenu.jsx +++ b/packages/desktop-client/src/components/filters/FiltersMenu.jsx @@ -32,8 +32,6 @@ import { } from 'loot-core/shared/rules'; import { titleFirst } from 'loot-core/shared/util'; -import { GenericInput } from '../util/GenericInput'; - import { CompactFiltersButton } from './CompactFiltersButton'; import { FiltersButton } from './FiltersButton'; import { OpButton } from './OpButton'; @@ -41,6 +39,7 @@ import { subfieldFromFilter } from './subfieldFromFilter'; import { subfieldToOptions } from './subfieldToOptions'; import { updateFilterReducer } from './updateFilterReducer'; +import { GenericInput } from '@desktop-client/components/util/GenericInput'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; import { useTransactionFilters } from '@desktop-client/hooks/useTransactionFilters'; diff --git a/packages/desktop-client/src/components/filters/NameFilter.tsx b/packages/desktop-client/src/components/filters/NameFilter.tsx index 29b335bac1..61dd564116 100644 --- a/packages/desktop-client/src/components/filters/NameFilter.tsx +++ b/packages/desktop-client/src/components/filters/NameFilter.tsx @@ -8,7 +8,7 @@ import { Stack } from '@actual-app/components/stack'; import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; -import { FormField, FormLabel } from '../forms'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; export function NameFilter({ menuItem, diff --git a/packages/desktop-client/src/components/gocardless/GoCardlessLink.tsx b/packages/desktop-client/src/components/gocardless/GoCardlessLink.tsx index 14e0a59b7d..11150900c8 100644 --- a/packages/desktop-client/src/components/gocardless/GoCardlessLink.tsx +++ b/packages/desktop-client/src/components/gocardless/GoCardlessLink.tsx @@ -4,7 +4,7 @@ import { Trans } from 'react-i18next'; import { Paragraph } from '@actual-app/components/paragraph'; import { View } from '@actual-app/components/view'; -import { Modal, ModalHeader } from '../common/Modal'; +import { Modal, ModalHeader } from '@desktop-client/components/common/Modal'; export function GoCardlessLink() { window.close(); diff --git a/packages/desktop-client/src/components/manager/BudgetFileSelection.tsx b/packages/desktop-client/src/components/manager/BudgetFileSelection.tsx index 6922dbc1dc..0ae34b9fb6 100644 --- a/packages/desktop-client/src/components/manager/BudgetFileSelection.tsx +++ b/packages/desktop-client/src/components/manager/BudgetFileSelection.tsx @@ -55,14 +55,13 @@ import { downloadBudget, loadAllFiles, loadBudget, -} from '../../budgets/budgetsSlice'; -import { pushModal } from '../../modals/modalsSlice'; -import { useSelector, useDispatch } from '../../redux'; -import { getUserData } from '../../users/usersSlice'; -import { useMultiuserEnabled } from '../ServerContext'; - +} from '@desktop-client/budgets/budgetsSlice'; +import { useMultiuserEnabled } from '@desktop-client/components/ServerContext'; import { useInitialMount } from '@desktop-client/hooks/useInitialMount'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; +import { getUserData } from '@desktop-client/users/usersSlice'; function getFileDescription(file: File, t: (key: string) => string) { if (file.state === 'unknown') { diff --git a/packages/desktop-client/src/components/manager/ConfigServer.tsx b/packages/desktop-client/src/components/manager/ConfigServer.tsx index b632280347..496d869b19 100644 --- a/packages/desktop-client/src/components/manager/ConfigServer.tsx +++ b/packages/desktop-client/src/components/manager/ConfigServer.tsx @@ -15,17 +15,19 @@ import { isElectron, } from 'loot-core/shared/environment'; -import { createBudget } from '../../budgets/budgetsSlice'; -import { useDispatch } from '../../redux'; -import { loggedIn, signOut } from '../../users/usersSlice'; -import { Link } from '../common/Link'; -import { useServerURL, useSetServerURL } from '../ServerContext'; - import { Title } from './subscribe/common'; +import { createBudget } from '@desktop-client/budgets/budgetsSlice'; +import { Link } from '@desktop-client/components/common/Link'; +import { + useServerURL, + useSetServerURL, +} from '@desktop-client/components/ServerContext'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { saveGlobalPrefs } from '@desktop-client/prefs/prefsSlice'; +import { useDispatch } from '@desktop-client/redux'; +import { loggedIn, signOut } from '@desktop-client/users/usersSlice'; export function ElectronServerConfig({ onDoNotUseServer, diff --git a/packages/desktop-client/src/components/manager/ManagementApp.tsx b/packages/desktop-client/src/components/manager/ManagementApp.tsx index b8f26d46e9..8a938eafb2 100644 --- a/packages/desktop-client/src/components/manager/ManagementApp.tsx +++ b/packages/desktop-client/src/components/manager/ManagementApp.tsx @@ -7,20 +7,6 @@ import { theme } from '@actual-app/components/theme'; import { tokens } from '@actual-app/components/tokens'; import { View } from '@actual-app/components/view'; -import { setAppState } from '../../app/appSlice'; -import { ProtectedRoute } from '../../auth/ProtectedRoute'; -import { Permissions } from '../../auth/types'; -import { useSelector, useDispatch } from '../../redux'; -import { loggedIn } from '../../users/usersSlice'; -import { - BackToFileListButton, - UserDirectoryPage, -} from '../admin/UserDirectory/UserDirectoryPage'; -import { AppBackground } from '../AppBackground'; -import { LoggedInUser } from '../LoggedInUser'; -import { Notifications } from '../Notifications'; -import { useMultiuserEnabled, useServerVersion } from '../ServerContext'; - import { BudgetFileSelection } from './BudgetFileSelection'; import { ConfigServer } from './ConfigServer'; import { ServerURL } from './ServerURL'; @@ -31,7 +17,23 @@ import { Login } from './subscribe/Login'; import { OpenIdCallback } from './subscribe/OpenIdCallback'; import { WelcomeScreen } from './WelcomeScreen'; +import { setAppState } from '@desktop-client/app/appSlice'; +import { ProtectedRoute } from '@desktop-client/auth/ProtectedRoute'; +import { Permissions } from '@desktop-client/auth/types'; +import { + BackToFileListButton, + UserDirectoryPage, +} from '@desktop-client/components/admin/UserDirectory/UserDirectoryPage'; +import { AppBackground } from '@desktop-client/components/AppBackground'; +import { LoggedInUser } from '@desktop-client/components/LoggedInUser'; +import { Notifications } from '@desktop-client/components/Notifications'; +import { + useMultiuserEnabled, + useServerVersion, +} from '@desktop-client/components/ServerContext'; import { useMetaThemeColor } from '@desktop-client/hooks/useMetaThemeColor'; +import { useSelector, useDispatch } from '@desktop-client/redux'; +import { loggedIn } from '@desktop-client/users/usersSlice'; function Version() { const version = useServerVersion(); diff --git a/packages/desktop-client/src/components/manager/ServerURL.tsx b/packages/desktop-client/src/components/manager/ServerURL.tsx index 71b2c634b1..e25ac69a47 100644 --- a/packages/desktop-client/src/components/manager/ServerURL.tsx +++ b/packages/desktop-client/src/components/manager/ServerURL.tsx @@ -4,8 +4,8 @@ import { Trans } from 'react-i18next'; import { Text } from '@actual-app/components/text'; import { View } from '@actual-app/components/view'; -import { Link } from '../common/Link'; -import { useServerURL } from '../ServerContext'; +import { Link } from '@desktop-client/components/common/Link'; +import { useServerURL } from '@desktop-client/components/ServerContext'; export function ServerURL() { const url = useServerURL(); diff --git a/packages/desktop-client/src/components/manager/WelcomeScreen.tsx b/packages/desktop-client/src/components/manager/WelcomeScreen.tsx index bd22a32dba..48ccc9c2d0 100644 --- a/packages/desktop-client/src/components/manager/WelcomeScreen.tsx +++ b/packages/desktop-client/src/components/manager/WelcomeScreen.tsx @@ -8,10 +8,10 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { createBudget } from '../../budgets/budgetsSlice'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Link } from '../common/Link'; +import { createBudget } from '@desktop-client/budgets/budgetsSlice'; +import { Link } from '@desktop-client/components/common/Link'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; export function WelcomeScreen() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx b/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx index 3a681c7bf2..a5d79bd6f6 100644 --- a/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx +++ b/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx @@ -10,15 +10,14 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; -import { createBudget } from '../../../budgets/budgetsSlice'; -import { useDispatch } from '../../../redux'; -import { Link } from '../../common/Link'; -import { useRefreshLoginMethods } from '../../ServerContext'; - import { useBootstrapped, Title } from './common'; import { ConfirmPasswordForm } from './ConfirmPasswordForm'; +import { createBudget } from '@desktop-client/budgets/budgetsSlice'; +import { Link } from '@desktop-client/components/common/Link'; +import { useRefreshLoginMethods } from '@desktop-client/components/ServerContext'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useDispatch } from '@desktop-client/redux'; export function Bootstrap() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/manager/subscribe/Login.tsx b/packages/desktop-client/src/components/manager/subscribe/Login.tsx index a2494cab99..aa065821c9 100644 --- a/packages/desktop-client/src/components/manager/subscribe/Login.tsx +++ b/packages/desktop-client/src/components/manager/subscribe/Login.tsx @@ -19,16 +19,18 @@ import { send } from 'loot-core/platform/client/fetch'; import { isElectron } from 'loot-core/shared/environment'; import { type OpenIdConfig } from 'loot-core/types/models'; -import { useDispatch } from '../../../redux'; -import { warningBackground } from '../../../style/themes/dark'; -import { loggedIn } from '../../../users/usersSlice'; -import { Link } from '../../common/Link'; -import { useAvailableLoginMethods, useLoginMethod } from '../../ServerContext'; - import { useBootstrapped, Title } from './common'; import { OpenIdForm } from './OpenIdForm'; +import { Link } from '@desktop-client/components/common/Link'; +import { + useAvailableLoginMethods, + useLoginMethod, +} from '@desktop-client/components/ServerContext'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useDispatch } from '@desktop-client/redux'; +import { warningBackground } from '@desktop-client/style/themes/dark'; +import { loggedIn } from '@desktop-client/users/usersSlice'; function PasswordLogin({ setError, dispatch }) { const [password, setPassword] = useState(''); diff --git a/packages/desktop-client/src/components/manager/subscribe/OpenIdCallback.ts b/packages/desktop-client/src/components/manager/subscribe/OpenIdCallback.ts index e041aaba68..db81a83c43 100644 --- a/packages/desktop-client/src/components/manager/subscribe/OpenIdCallback.ts +++ b/packages/desktop-client/src/components/manager/subscribe/OpenIdCallback.ts @@ -2,8 +2,8 @@ import { useEffect } from 'react'; import { send } from 'loot-core/platform/client/fetch'; -import { useDispatch } from '../../../redux'; -import { loggedIn } from '../../../users/usersSlice'; +import { useDispatch } from '@desktop-client/redux'; +import { loggedIn } from '@desktop-client/users/usersSlice'; export function OpenIdCallback() { const dispatch = useDispatch(); diff --git a/packages/desktop-client/src/components/manager/subscribe/OpenIdForm.tsx b/packages/desktop-client/src/components/manager/subscribe/OpenIdForm.tsx index 0442aa1545..3f98cd8e10 100644 --- a/packages/desktop-client/src/components/manager/subscribe/OpenIdForm.tsx +++ b/packages/desktop-client/src/components/manager/subscribe/OpenIdForm.tsx @@ -15,9 +15,9 @@ import { View } from '@actual-app/components/view'; import { type OpenIdConfig } from 'loot-core/types/models'; -import { Link } from '../../common/Link'; -import { FormField, FormLabel } from '../../forms'; -import { useServerURL } from '../../ServerContext'; +import { Link } from '@desktop-client/components/common/Link'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { useServerURL } from '@desktop-client/components/ServerContext'; type OpenIdCallback = (config: OpenIdConfig) => Promise; diff --git a/packages/desktop-client/src/components/manager/subscribe/common.tsx b/packages/desktop-client/src/components/manager/subscribe/common.tsx index 6320b0298e..cf530381fe 100644 --- a/packages/desktop-client/src/components/manager/subscribe/common.tsx +++ b/packages/desktop-client/src/components/manager/subscribe/common.tsx @@ -11,8 +11,7 @@ import { useSetLoginMethods, useSetMultiuserEnabled, useSetServerURL, -} from '../../ServerContext'; - +} from '@desktop-client/components/ServerContext'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; // There are two URLs that dance with each other: `/login` and diff --git a/packages/desktop-client/src/components/mobile/MobileNavTabs.tsx b/packages/desktop-client/src/components/mobile/MobileNavTabs.tsx index d45733c0c1..3f0c029617 100644 --- a/packages/desktop-client/src/components/mobile/MobileNavTabs.tsx +++ b/packages/desktop-client/src/components/mobile/MobileNavTabs.tsx @@ -25,7 +25,7 @@ import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; import { useDrag } from '@use-gesture/react'; -import { useScrollListener } from '../ScrollProvider'; +import { useScrollListener } from '@desktop-client/components/ScrollProvider'; const COLUMN_COUNT = 3; const PILL_HEIGHT = 15; diff --git a/packages/desktop-client/src/components/mobile/accounts/AccountTransactions.tsx b/packages/desktop-client/src/components/mobile/accounts/AccountTransactions.tsx index dca0194fc9..c588028dda 100644 --- a/packages/desktop-client/src/components/mobile/accounts/AccountTransactions.tsx +++ b/packages/desktop-client/src/components/mobile/accounts/AccountTransactions.tsx @@ -21,24 +21,11 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import { syncAndDownload } from '../../../app/appSlice'; -import { - collapseModals, - openAccountCloseModal, - pushModal, -} from '../../../modals/modalsSlice'; -import * as queries from '../../../queries/queries'; -import { - markAccountRead, - reopenAccount, - updateAccount, -} from '../../../queries/queriesSlice'; -import { useSelector, useDispatch } from '../../../redux'; -import { MobilePageHeader, Page } from '../../Page'; -import { MobileBackButton } from '../MobileBackButton'; -import { AddTransactionButton } from '../transactions/AddTransactionButton'; -import { TransactionListWithBalances } from '../transactions/TransactionListWithBalances'; - +import { syncAndDownload } from '@desktop-client/app/appSlice'; +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { AddTransactionButton } from '@desktop-client/components/mobile/transactions/AddTransactionButton'; +import { TransactionListWithBalances } from '@desktop-client/components/mobile/transactions/TransactionListWithBalances'; +import { MobilePageHeader, Page } from '@desktop-client/components/Page'; import { useAccountPreviewTransactions } from '@desktop-client/hooks/useAccountPreviewTransactions'; import { SchedulesProvider } from '@desktop-client/hooks/useCachedSchedules'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; @@ -47,6 +34,18 @@ import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { accountSchedulesQuery } from '@desktop-client/hooks/useSchedules'; import { useTransactions } from '@desktop-client/hooks/useTransactions'; import { useTransactionsSearch } from '@desktop-client/hooks/useTransactionsSearch'; +import { + collapseModals, + openAccountCloseModal, + pushModal, +} from '@desktop-client/modals/modalsSlice'; +import * as queries from '@desktop-client/queries/queries'; +import { + markAccountRead, + reopenAccount, + updateAccount, +} from '@desktop-client/queries/queriesSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; export function AccountTransactions({ account, diff --git a/packages/desktop-client/src/components/mobile/accounts/Accounts.tsx b/packages/desktop-client/src/components/mobile/accounts/Accounts.tsx index 7033f776bc..fd07d73c0a 100644 --- a/packages/desktop-client/src/components/mobile/accounts/Accounts.tsx +++ b/packages/desktop-client/src/components/mobile/accounts/Accounts.tsx @@ -29,23 +29,28 @@ import { css } from '@emotion/css'; import { type AccountEntity } from 'loot-core/types/models'; -import { moveAccount } from '../../../accounts/accountsSlice'; -import { syncAndDownload } from '../../../app/appSlice'; -import { replaceModal } from '../../../modals/modalsSlice'; -import * as queries from '../../../queries/queries'; -import { useDispatch, useSelector } from '../../../redux'; -import { makeAmountFullStyle } from '../../budget/util'; -import { MobilePageHeader, Page } from '../../Page'; -import { type Binding, type SheetFields } from '../../spreadsheet'; -import { CellValue, CellValueText } from '../../spreadsheet/CellValue'; -import { MOBILE_NAV_HEIGHT } from '../MobileNavTabs'; -import { PullToRefresh } from '../PullToRefresh'; - +import { moveAccount } from '@desktop-client/accounts/accountsSlice'; +import { syncAndDownload } from '@desktop-client/app/appSlice'; +import { makeAmountFullStyle } from '@desktop-client/components/budget/util'; +import { MOBILE_NAV_HEIGHT } from '@desktop-client/components/mobile/MobileNavTabs'; +import { PullToRefresh } from '@desktop-client/components/mobile/PullToRefresh'; +import { MobilePageHeader, Page } from '@desktop-client/components/Page'; +import { + type Binding, + type SheetFields, +} from '@desktop-client/components/spreadsheet'; +import { + CellValue, + CellValueText, +} from '@desktop-client/components/spreadsheet/CellValue'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useFailedAccounts } from '@desktop-client/hooks/useFailedAccounts'; import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { replaceModal } from '@desktop-client/modals/modalsSlice'; +import * as queries from '@desktop-client/queries/queries'; +import { useDispatch, useSelector } from '@desktop-client/redux'; type AccountHeaderProps> = { id: string; diff --git a/packages/desktop-client/src/components/mobile/budget/BudgetCell.tsx b/packages/desktop-client/src/components/mobile/budget/BudgetCell.tsx index 73670cc0b7..d0a023a385 100644 --- a/packages/desktop-client/src/components/mobile/budget/BudgetCell.tsx +++ b/packages/desktop-client/src/components/mobile/budget/BudgetCell.tsx @@ -9,19 +9,18 @@ import { AutoTextSize } from 'auto-text-size'; import { integerToCurrency } from 'loot-core/shared/util'; import { type CategoryEntity } from 'loot-core/types/models'; -import { pushModal } from '../../../modals/modalsSlice'; -import { useDispatch } from '../../../redux'; -import { makeAmountGrey } from '../../budget/util'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { type SheetFields } from '../../spreadsheet'; -import { CellValue } from '../../spreadsheet/CellValue'; -import { useFormat } from '../../spreadsheet/useFormat'; - import { getColumnWidth, PILL_STYLE } from './BudgetTable'; +import { makeAmountGrey } from '@desktop-client/components/budget/util'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { type SheetFields } from '@desktop-client/components/spreadsheet'; +import { CellValue } from '@desktop-client/components/spreadsheet/CellValue'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; import { useNotes } from '@desktop-client/hooks/useNotes'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useUndo } from '@desktop-client/hooks/useUndo'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type BudgetCellProps< SheetFieldName extends SheetFields<'envelope-budget' | 'tracking-budget'>, diff --git a/packages/desktop-client/src/components/mobile/budget/BudgetTable.jsx b/packages/desktop-client/src/components/mobile/budget/BudgetTable.jsx index 209a82dde9..346422800b 100644 --- a/packages/desktop-client/src/components/mobile/budget/BudgetTable.jsx +++ b/packages/desktop-client/src/components/mobile/budget/BudgetTable.jsx @@ -27,24 +27,16 @@ import * as monthUtils from 'loot-core/shared/months'; import { q } from 'loot-core/shared/query'; import { groupById } from 'loot-core/shared/util'; -import { pushModal } from '../../../modals/modalsSlice'; -import { - envelopeBudget, - trackingBudget, - uncategorizedCount, -} from '../../../queries/queries'; -import { useDispatch } from '../../../redux'; -import { MobilePageHeader, Page } from '../../Page'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { CellValue } from '../../spreadsheet/CellValue'; -import { useFormat } from '../../spreadsheet/useFormat'; -import { useSheetValue } from '../../spreadsheet/useSheetValue'; -import { MOBILE_NAV_HEIGHT } from '../MobileNavTabs'; -import { PullToRefresh } from '../PullToRefresh'; - import { ExpenseGroupList } from './ExpenseGroupList'; import { IncomeGroup } from './IncomeGroup'; +import { MOBILE_NAV_HEIGHT } from '@desktop-client/components/mobile/MobileNavTabs'; +import { PullToRefresh } from '@desktop-client/components/mobile/PullToRefresh'; +import { MobilePageHeader, Page } from '@desktop-client/components/Page'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { CellValue } from '@desktop-client/components/spreadsheet/CellValue'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; import { SchedulesProvider } from '@desktop-client/hooks/useCachedSchedules'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useLocale } from '@desktop-client/hooks/useLocale'; @@ -53,6 +45,13 @@ import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useOverspentCategories } from '@desktop-client/hooks/useOverspentCategories'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useUndo } from '@desktop-client/hooks/useUndo'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { + envelopeBudget, + trackingBudget, + uncategorizedCount, +} from '@desktop-client/queries/queries'; +import { useDispatch } from '@desktop-client/redux'; export const ROW_HEIGHT = 50; diff --git a/packages/desktop-client/src/components/mobile/budget/CategoryTransactions.tsx b/packages/desktop-client/src/components/mobile/budget/CategoryTransactions.tsx index f5b373b75d..e3949ce256 100644 --- a/packages/desktop-client/src/components/mobile/budget/CategoryTransactions.tsx +++ b/packages/desktop-client/src/components/mobile/budget/CategoryTransactions.tsx @@ -12,13 +12,10 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import * as queries from '../../../queries/queries'; -import { useDispatch } from '../../../redux'; -import { MobilePageHeader, Page } from '../../Page'; -import { MobileBackButton } from '../MobileBackButton'; -import { AddTransactionButton } from '../transactions/AddTransactionButton'; -import { TransactionListWithBalances } from '../transactions/TransactionListWithBalances'; - +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { AddTransactionButton } from '@desktop-client/components/mobile/transactions/AddTransactionButton'; +import { TransactionListWithBalances } from '@desktop-client/components/mobile/transactions/TransactionListWithBalances'; +import { MobilePageHeader, Page } from '@desktop-client/components/Page'; import { SchedulesProvider } from '@desktop-client/hooks/useCachedSchedules'; import { useCategoryPreviewTransactions } from '@desktop-client/hooks/useCategoryPreviewTransactions'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; @@ -26,6 +23,8 @@ import { useLocale } from '@desktop-client/hooks/useLocale'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useTransactions } from '@desktop-client/hooks/useTransactions'; import { useTransactionsSearch } from '@desktop-client/hooks/useTransactionsSearch'; +import * as queries from '@desktop-client/queries/queries'; +import { useDispatch } from '@desktop-client/redux'; type CategoryTransactionsProps = { category: CategoryEntity; diff --git a/packages/desktop-client/src/components/mobile/budget/ExpenseCategoryList.tsx b/packages/desktop-client/src/components/mobile/budget/ExpenseCategoryList.tsx index 42f99579e1..9c8a204eb5 100644 --- a/packages/desktop-client/src/components/mobile/budget/ExpenseCategoryList.tsx +++ b/packages/desktop-client/src/components/mobile/budget/ExpenseCategoryList.tsx @@ -10,11 +10,11 @@ import { type CategoryEntity, } from 'loot-core/types/models'; -import { moveCategory } from '../../../queries/queriesSlice'; -import { useDispatch } from '../../../redux'; - import { ExpenseCategoryListItem } from './ExpenseCategoryListItem'; +import { moveCategory } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; + type ExpenseCategoryListProps = { categoryGroup: CategoryGroupEntity; categories: CategoryEntity[]; diff --git a/packages/desktop-client/src/components/mobile/budget/ExpenseCategoryListItem.tsx b/packages/desktop-client/src/components/mobile/budget/ExpenseCategoryListItem.tsx index 0cc2d3928d..6b1599624a 100644 --- a/packages/desktop-client/src/components/mobile/budget/ExpenseCategoryListItem.tsx +++ b/packages/desktop-client/src/components/mobile/budget/ExpenseCategoryListItem.tsx @@ -14,20 +14,23 @@ import * as monthUtils from 'loot-core/shared/months'; import { groupById, integerToCurrency } from 'loot-core/shared/util'; import { type CategoryEntity } from 'loot-core/types/models'; -import { useCategories } from '../../../hooks/useCategories'; -import { useNavigate } from '../../../hooks/useNavigate'; -import { useSyncedPref } from '../../../hooks/useSyncedPref'; -import { useUndo } from '../../../hooks/useUndo'; -import { collapseModals, pushModal } from '../../../modals/modalsSlice'; -import { envelopeBudget, trackingBudget } from '../../../queries/queries'; -import { useDispatch } from '../../../redux'; -import { useSheetValue } from '../../spreadsheet/useSheetValue'; - import { BalanceCell } from './BalanceCell'; import { BudgetCell } from './BudgetCell'; import { getColumnWidth, ROW_HEIGHT } from './BudgetTable'; import { SpentCell } from './SpentCell'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; +import { useCategories } from '@desktop-client/hooks/useCategories'; +import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { useUndo } from '@desktop-client/hooks/useUndo'; +import { collapseModals, pushModal } from '@desktop-client/modals/modalsSlice'; +import { + envelopeBudget, + trackingBudget, +} from '@desktop-client/queries/queries'; +import { useDispatch } from '@desktop-client/redux'; + type ExpenseCategoryNameProps = { category: CategoryEntity; onEditCategory: (id: CategoryEntity['id']) => void; diff --git a/packages/desktop-client/src/components/mobile/budget/ExpenseGroupList.tsx b/packages/desktop-client/src/components/mobile/budget/ExpenseGroupList.tsx index 3acfea53f9..1f5ea9c65f 100644 --- a/packages/desktop-client/src/components/mobile/budget/ExpenseGroupList.tsx +++ b/packages/desktop-client/src/components/mobile/budget/ExpenseGroupList.tsx @@ -10,14 +10,14 @@ import { type CategoryGroupEntity, } from 'loot-core/types/models'; -import { moveCategoryGroup } from '../../../queries/queriesSlice'; -import { useDispatch } from '../../../redux'; - import { ExpenseGroupHeader, ExpenseGroupListItem, } from './ExpenseGroupListItem'; +import { moveCategoryGroup } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; + type ExpenseGroupListProps = { categoryGroups: CategoryGroupEntity[]; show3Columns: boolean; diff --git a/packages/desktop-client/src/components/mobile/budget/ExpenseGroupListItem.tsx b/packages/desktop-client/src/components/mobile/budget/ExpenseGroupListItem.tsx index 6428d1ac22..11e746f512 100644 --- a/packages/desktop-client/src/components/mobile/budget/ExpenseGroupListItem.tsx +++ b/packages/desktop-client/src/components/mobile/budget/ExpenseGroupListItem.tsx @@ -18,15 +18,18 @@ import { type CategoryGroupEntity, } from 'loot-core/types/models'; -import { useSyncedPref } from '../../../hooks/useSyncedPref'; -import { envelopeBudget, trackingBudget } from '../../../queries/queries'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { CellValue } from '../../spreadsheet/CellValue'; -import { useFormat } from '../../spreadsheet/useFormat'; - import { getColumnWidth, ROW_HEIGHT } from './BudgetTable'; import { ExpenseCategoryList } from './ExpenseCategoryList'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { CellValue } from '@desktop-client/components/spreadsheet/CellValue'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; +import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { + envelopeBudget, + trackingBudget, +} from '@desktop-client/queries/queries'; + type ExpenseGroupListItemProps = ComponentPropsWithoutRef< typeof GridListItem > & { diff --git a/packages/desktop-client/src/components/mobile/budget/IncomeCategoryList.tsx b/packages/desktop-client/src/components/mobile/budget/IncomeCategoryList.tsx index d31955284f..f9c47f07a9 100644 --- a/packages/desktop-client/src/components/mobile/budget/IncomeCategoryList.tsx +++ b/packages/desktop-client/src/components/mobile/budget/IncomeCategoryList.tsx @@ -7,11 +7,11 @@ import { css } from '@emotion/css'; import { type CategoryEntity } from 'loot-core/types/models'; -import { moveCategory } from '../../../queries/queriesSlice'; -import { useDispatch } from '../../../redux'; - import { IncomeCategoryListItem } from './IncomeCategoryListItem'; +import { moveCategory } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; + type IncomeCategoryListProps = { categories: CategoryEntity[]; month: string; diff --git a/packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx b/packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx index adf1a69a4f..14ec0139f7 100644 --- a/packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx +++ b/packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx @@ -12,14 +12,16 @@ import { View } from '@actual-app/components/view'; import * as monthUtils from 'loot-core/shared/months'; import { type CategoryEntity } from 'loot-core/types/models'; -import { envelopeBudget, trackingBudget } from '../../../queries/queries'; - import { BalanceCell } from './BalanceCell'; import { BudgetCell } from './BudgetCell'; import { getColumnWidth, ROW_HEIGHT } from './BudgetTable'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { + envelopeBudget, + trackingBudget, +} from '@desktop-client/queries/queries'; type IncomeCategoryNameProps = { category: CategoryEntity; diff --git a/packages/desktop-client/src/components/mobile/budget/IncomeGroup.tsx b/packages/desktop-client/src/components/mobile/budget/IncomeGroup.tsx index 711c624489..5f8ffba2c1 100644 --- a/packages/desktop-client/src/components/mobile/budget/IncomeGroup.tsx +++ b/packages/desktop-client/src/components/mobile/budget/IncomeGroup.tsx @@ -16,15 +16,17 @@ import { AutoTextSize } from 'auto-text-size'; import * as monthUtils from 'loot-core/shared/months'; import { type CategoryGroupEntity } from 'loot-core/types/models'; -import { envelopeBudget, trackingBudget } from '../../../queries/queries'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { CellValue } from '../../spreadsheet/CellValue'; -import { useFormat } from '../../spreadsheet/useFormat'; - import { getColumnWidth, ROW_HEIGHT } from './BudgetTable'; import { IncomeCategoryList } from './IncomeCategoryList'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { CellValue } from '@desktop-client/components/spreadsheet/CellValue'; +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { + envelopeBudget, + trackingBudget, +} from '@desktop-client/queries/queries'; type IncomeGroupProps = { categoryGroup: CategoryGroupEntity; diff --git a/packages/desktop-client/src/components/mobile/budget/index.tsx b/packages/desktop-client/src/components/mobile/budget/index.tsx index 1a08cd75ac..498688fd82 100644 --- a/packages/desktop-client/src/components/mobile/budget/index.tsx +++ b/packages/desktop-client/src/components/mobile/budget/index.tsx @@ -8,8 +8,18 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import * as monthUtils from 'loot-core/shared/months'; -import { sync } from '../../../app/appSlice'; -import { collapseModals, pushModal } from '../../../modals/modalsSlice'; +import { BudgetTable } from './BudgetTable'; + +import { sync } from '@desktop-client/app/appSlice'; +import { prewarmMonth } from '@desktop-client/components/budget/util'; +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; +import { SyncRefresh } from '@desktop-client/components/SyncRefresh'; +import { useCategories } from '@desktop-client/hooks/useCategories'; +import { useLocale } from '@desktop-client/hooks/useLocale'; +import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; +import { useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; +import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { collapseModals, pushModal } from '@desktop-client/modals/modalsSlice'; import { applyBudgetAction, createCategory, @@ -18,19 +28,8 @@ import { deleteGroup, updateCategory, updateGroup, -} from '../../../queries/queriesSlice'; -import { useDispatch } from '../../../redux'; -import { prewarmMonth } from '../../budget/util'; -import { NamespaceContext } from '../../spreadsheet/NamespaceContext'; -import { SyncRefresh } from '../../SyncRefresh'; - -import { BudgetTable } from './BudgetTable'; - -import { useCategories } from '@desktop-client/hooks/useCategories'; -import { useLocale } from '@desktop-client/hooks/useLocale'; -import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; -import { useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; -import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +} from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; function isBudgetType(input?: string): input is 'envelope' | 'tracking' { return ['envelope', 'tracking'].includes(input); diff --git a/packages/desktop-client/src/components/mobile/transactions/FocusableAmountInput.tsx b/packages/desktop-client/src/components/mobile/transactions/FocusableAmountInput.tsx index 59344f0c38..81a283811f 100644 --- a/packages/desktop-client/src/components/mobile/transactions/FocusableAmountInput.tsx +++ b/packages/desktop-client/src/components/mobile/transactions/FocusableAmountInput.tsx @@ -21,8 +21,7 @@ import { currencyToAmount, } from 'loot-core/shared/util'; -import { makeAmountFullStyle } from '../../budget/util'; - +import { makeAmountFullStyle } from '@desktop-client/components/budget/util'; import { useMergedRefs } from '@desktop-client/hooks/useMergedRefs'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; diff --git a/packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx b/packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx index f04c763331..f1a6265198 100644 --- a/packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx +++ b/packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx @@ -53,18 +53,18 @@ import { groupById, } from 'loot-core/shared/util'; -import { pushModal } from '../../../modals/modalsSlice'; -import { aqlQuery } from '../../../queries/aqlQuery'; -import { setLastTransaction } from '../../../queries/queriesSlice'; -import { useSelector, useDispatch } from '../../../redux'; -import { MobilePageHeader, Page } from '../../Page'; -import { AmountInput } from '../../util/AmountInput'; -import { MobileBackButton } from '../MobileBackButton'; -import { FieldLabel, TapField, InputField, ToggleField } from '../MobileForms'; -import { getPrettyPayee } from '../utils'; - import { FocusableAmountInput } from './FocusableAmountInput'; +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { + FieldLabel, + TapField, + InputField, + ToggleField, +} from '@desktop-client/components/mobile/MobileForms'; +import { getPrettyPayee } from '@desktop-client/components/mobile/utils'; +import { MobilePageHeader, Page } from '@desktop-client/components/Page'; +import { AmountInput } from '@desktop-client/components/util/AmountInput'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; @@ -75,6 +75,10 @@ import { SingleActiveEditFormProvider, useSingleActiveEditForm, } from '@desktop-client/hooks/useSingleActiveEditForm'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; +import { setLastTransaction } from '@desktop-client/queries/queriesSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; function getFieldName(transactionId, field) { return `${field}-${transactionId}`; diff --git a/packages/desktop-client/src/components/mobile/transactions/TransactionList.tsx b/packages/desktop-client/src/components/mobile/transactions/TransactionList.tsx index 81ab90f984..61ae659cd6 100644 --- a/packages/desktop-client/src/components/mobile/transactions/TransactionList.tsx +++ b/packages/desktop-client/src/components/mobile/transactions/TransactionList.tsx @@ -38,13 +38,10 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import { setNotificationInset } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { useScrollListener } from '../../ScrollProvider'; -import { FloatingActionBar } from '../FloatingActionBar'; - import { TransactionListItem } from './TransactionListItem'; +import { FloatingActionBar } from '@desktop-client/components/mobile/FloatingActionBar'; +import { useScrollListener } from '@desktop-client/components/ScrollProvider'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useLocale } from '@desktop-client/hooks/useLocale'; @@ -56,6 +53,8 @@ import { } from '@desktop-client/hooks/useSelected'; import { useTransactionBatchActions } from '@desktop-client/hooks/useTransactionBatchActions'; import { useUndo } from '@desktop-client/hooks/useUndo'; +import { setNotificationInset } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; const NOTIFICATION_BOTTOM_INSET = 75; diff --git a/packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx b/packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx index b49698bffc..f41501907a 100644 --- a/packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx +++ b/packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx @@ -36,16 +36,15 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import { useSelector } from '../../../redux'; -import { makeAmountFullStyle } from '../../budget/util'; - import { lookupName, Status } from './TransactionEdit'; +import { makeAmountFullStyle } from '@desktop-client/components/budget/util'; import { useAccount } from '@desktop-client/hooks/useAccount'; import { useCachedSchedules } from '@desktop-client/hooks/useCachedSchedules'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useDisplayPayee } from '@desktop-client/hooks/useDisplayPayee'; import { usePayee } from '@desktop-client/hooks/usePayee'; +import { useSelector } from '@desktop-client/redux'; const ROW_HEIGHT = 60; diff --git a/packages/desktop-client/src/components/mobile/transactions/TransactionListWithBalances.tsx b/packages/desktop-client/src/components/mobile/transactions/TransactionListWithBalances.tsx index fd3eeded99..02fbbe22b3 100644 --- a/packages/desktop-client/src/components/mobile/transactions/TransactionListWithBalances.tsx +++ b/packages/desktop-client/src/components/mobile/transactions/TransactionListWithBalances.tsx @@ -11,14 +11,20 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import { Search } from '../../common/Search'; -import type { Binding, SheetNames, SheetFields } from '../../spreadsheet'; -import { CellValue, CellValueText } from '../../spreadsheet/CellValue'; -import { useSheetValue } from '../../spreadsheet/useSheetValue'; -import { PullToRefresh } from '../PullToRefresh'; - import { TransactionList } from './TransactionList'; +import { Search } from '@desktop-client/components/common/Search'; +import { PullToRefresh } from '@desktop-client/components/mobile/PullToRefresh'; +import type { + Binding, + SheetNames, + SheetFields, +} from '@desktop-client/components/spreadsheet'; +import { + CellValue, + CellValueText, +} from '@desktop-client/components/spreadsheet/CellValue'; +import { useSheetValue } from '@desktop-client/components/spreadsheet/useSheetValue'; import { SelectedProvider, useSelected, diff --git a/packages/desktop-client/src/components/modals/AccountAutocompleteModal.tsx b/packages/desktop-client/src/components/modals/AccountAutocompleteModal.tsx index 02b92f0a1f..30419b0b34 100644 --- a/packages/desktop-client/src/components/modals/AccountAutocompleteModal.tsx +++ b/packages/desktop-client/src/components/modals/AccountAutocompleteModal.tsx @@ -5,15 +5,15 @@ import { useResponsive } from '@actual-app/components/hooks/useResponsive'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { AccountAutocomplete } from '../autocomplete/AccountAutocomplete'; +import { AccountAutocomplete } from '@desktop-client/components/autocomplete/AccountAutocomplete'; import { ModalCloseButton, Modal, ModalTitle, ModalHeader, -} from '../common/Modal'; -import { SectionLabel } from '../forms'; +} from '@desktop-client/components/common/Modal'; +import { SectionLabel } from '@desktop-client/components/forms'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type AccountAutocompleteModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/AccountMenuModal.tsx b/packages/desktop-client/src/components/modals/AccountMenuModal.tsx index e4e017cb5b..000b89c38a 100644 --- a/packages/desktop-client/src/components/modals/AccountMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/AccountMenuModal.tsx @@ -22,19 +22,18 @@ import { View } from '@actual-app/components/view'; import { type AccountEntity } from 'loot-core/types/models'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; import { Modal, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; -import { Notes } from '../Notes'; -import { validateAccountName } from '../util/accountValidation'; - +} from '@desktop-client/components/common/Modal'; +import { Notes } from '@desktop-client/components/Notes'; +import { validateAccountName } from '@desktop-client/components/util/accountValidation'; import { useAccount } from '@desktop-client/hooks/useAccount'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useNotes } from '@desktop-client/hooks/useNotes'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type AccountMenuModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/BudgetAutomationsModal.tsx b/packages/desktop-client/src/components/modals/BudgetAutomationsModal.tsx index c88e5bb670..0b4a4f84d5 100644 --- a/packages/desktop-client/src/components/modals/BudgetAutomationsModal.tsx +++ b/packages/desktop-client/src/components/modals/BudgetAutomationsModal.tsx @@ -9,10 +9,13 @@ import { uniqueId } from 'lodash'; import { type Template } from 'loot-core/server/budget/types/templates'; import { q } from 'loot-core/shared/query'; -import { BudgetAutomation } from '../budget/goals/BudgetAutomation'; -import { useBudgetAutomationCategories } from '../budget/goals/useBudgetAutomationCategories'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; - +import { BudgetAutomation } from '@desktop-client/components/budget/goals/BudgetAutomation'; +import { useBudgetAutomationCategories } from '@desktop-client/components/budget/goals/useBudgetAutomationCategories'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useSchedules } from '@desktop-client/hooks/useSchedules'; type TemplateWithId = Template & { id: string }; diff --git a/packages/desktop-client/src/components/modals/BudgetFileSelectionModal.tsx b/packages/desktop-client/src/components/modals/BudgetFileSelectionModal.tsx index 70ac0958ed..f172769eb9 100644 --- a/packages/desktop-client/src/components/modals/BudgetFileSelectionModal.tsx +++ b/packages/desktop-client/src/components/modals/BudgetFileSelectionModal.tsx @@ -4,11 +4,14 @@ import { useTranslation } from 'react-i18next'; import { Text } from '@actual-app/components/text'; import { View } from '@actual-app/components/view'; -import { useSelector } from '../../redux'; -import { Modal, ModalHeader, ModalCloseButton } from '../common/Modal'; -import { BudgetFileSelection } from '../manager/BudgetFileSelection'; - +import { + Modal, + ModalHeader, + ModalCloseButton, +} from '@desktop-client/components/common/Modal'; +import { BudgetFileSelection } from '@desktop-client/components/manager/BudgetFileSelection'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { useSelector } from '@desktop-client/redux'; export function BudgetFileSelectionModal() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/modals/BudgetPageMenuModal.tsx b/packages/desktop-client/src/components/modals/BudgetPageMenuModal.tsx index 1323c4d69b..737ca53546 100644 --- a/packages/desktop-client/src/components/modals/BudgetPageMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/BudgetPageMenuModal.tsx @@ -8,10 +8,13 @@ import { Menu } from '@actual-app/components/menu'; import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; - +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type BudgetPageMenuModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/CategoryAutocompleteModal.tsx b/packages/desktop-client/src/components/modals/CategoryAutocompleteModal.tsx index 974f2852f2..7d7025e4df 100644 --- a/packages/desktop-client/src/components/modals/CategoryAutocompleteModal.tsx +++ b/packages/desktop-client/src/components/modals/CategoryAutocompleteModal.tsx @@ -7,16 +7,16 @@ import { View } from '@actual-app/components/view'; import * as monthUtils from 'loot-core/shared/months'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { CategoryAutocomplete } from '../autocomplete/CategoryAutocomplete'; +import { CategoryAutocomplete } from '@desktop-client/components/autocomplete/CategoryAutocomplete'; import { ModalCloseButton, Modal, ModalTitle, ModalHeader, -} from '../common/Modal'; -import { SectionLabel } from '../forms'; -import { NamespaceContext } from '../spreadsheet/NamespaceContext'; +} from '@desktop-client/components/common/Modal'; +import { SectionLabel } from '@desktop-client/components/forms'; +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type CategoryAutocompleteModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/CategoryGroupMenuModal.tsx b/packages/desktop-client/src/components/modals/CategoryGroupMenuModal.tsx index b6bae62b88..a67a6c123a 100644 --- a/packages/desktop-client/src/components/modals/CategoryGroupMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/CategoryGroupMenuModal.tsx @@ -24,17 +24,16 @@ import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; import { Modal, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; -import { Notes } from '../Notes'; - +} from '@desktop-client/components/common/Modal'; +import { Notes } from '@desktop-client/components/Notes'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useNotes } from '@desktop-client/hooks/useNotes'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type CategoryGroupMenuModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/CategoryMenuModal.tsx b/packages/desktop-client/src/components/modals/CategoryMenuModal.tsx index 3a38280fa5..11ef6ecb55 100644 --- a/packages/desktop-client/src/components/modals/CategoryMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/CategoryMenuModal.tsx @@ -18,18 +18,17 @@ import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; import { Modal, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; -import { Notes } from '../Notes'; - +} from '@desktop-client/components/common/Modal'; +import { Notes } from '@desktop-client/components/Notes'; import { useCategory } from '@desktop-client/hooks/useCategory'; import { useCategoryGroup } from '@desktop-client/hooks/useCategoryGroup'; import { useNotes } from '@desktop-client/hooks/useNotes'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type CategoryMenuModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/CloseAccountModal.tsx b/packages/desktop-client/src/components/modals/CloseAccountModal.tsx index add7407fff..194abb8e49 100644 --- a/packages/desktop-client/src/components/modals/CloseAccountModal.tsx +++ b/packages/desktop-client/src/components/modals/CloseAccountModal.tsx @@ -16,16 +16,22 @@ import { integerToCurrency } from 'loot-core/shared/util'; import { type AccountEntity } from 'loot-core/types/models'; import { type TransObjectLiteral } from 'loot-core/types/util'; -import { type Modal as ModalType, pushModal } from '../../modals/modalsSlice'; -import { closeAccount } from '../../queries/queriesSlice'; -import { useDispatch } from '../../redux'; -import { AccountAutocomplete } from '../autocomplete/AccountAutocomplete'; -import { CategoryAutocomplete } from '../autocomplete/CategoryAutocomplete'; -import { Link } from '../common/Link'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; - +import { AccountAutocomplete } from '@desktop-client/components/autocomplete/AccountAutocomplete'; +import { CategoryAutocomplete } from '@desktop-client/components/autocomplete/CategoryAutocomplete'; +import { Link } from '@desktop-client/components/common/Link'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; +import { + type Modal as ModalType, + pushModal, +} from '@desktop-client/modals/modalsSlice'; +import { closeAccount } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; function needsCategory( account: AccountEntity, diff --git a/packages/desktop-client/src/components/modals/ConfirmCategoryDeleteModal.tsx b/packages/desktop-client/src/components/modals/ConfirmCategoryDeleteModal.tsx index ab40afac5f..19032d0c9b 100644 --- a/packages/desktop-client/src/components/modals/ConfirmCategoryDeleteModal.tsx +++ b/packages/desktop-client/src/components/modals/ConfirmCategoryDeleteModal.tsx @@ -8,11 +8,14 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { CategoryAutocomplete } from '../autocomplete/CategoryAutocomplete'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; - +import { CategoryAutocomplete } from '@desktop-client/components/autocomplete/CategoryAutocomplete'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useCategories } from '@desktop-client/hooks/useCategories'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type ConfirmCategoryDeleteModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/ConfirmTransactionDeleteModal.tsx b/packages/desktop-client/src/components/modals/ConfirmTransactionDeleteModal.tsx index 03bb675d7b..5d606a5c62 100644 --- a/packages/desktop-client/src/components/modals/ConfirmTransactionDeleteModal.tsx +++ b/packages/desktop-client/src/components/modals/ConfirmTransactionDeleteModal.tsx @@ -8,8 +8,12 @@ import { Paragraph } from '@actual-app/components/paragraph'; import { styles } from '@actual-app/components/styles'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type ConfirmTransactionDeleteModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/ConfirmTransactionEditModal.tsx b/packages/desktop-client/src/components/modals/ConfirmTransactionEditModal.tsx index a48709e045..6619bb5708 100644 --- a/packages/desktop-client/src/components/modals/ConfirmTransactionEditModal.tsx +++ b/packages/desktop-client/src/components/modals/ConfirmTransactionEditModal.tsx @@ -9,8 +9,12 @@ import { InitialFocus } from '@actual-app/components/initial-focus'; import { styles } from '@actual-app/components/styles'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type ConfirmTransactionEditModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/ConfirmUnlinkAccountModal.tsx b/packages/desktop-client/src/components/modals/ConfirmUnlinkAccountModal.tsx index 5278de85b9..d99a1ae7b8 100644 --- a/packages/desktop-client/src/components/modals/ConfirmUnlinkAccountModal.tsx +++ b/packages/desktop-client/src/components/modals/ConfirmUnlinkAccountModal.tsx @@ -6,8 +6,12 @@ import { InitialFocus } from '@actual-app/components/initial-focus'; import { Paragraph } from '@actual-app/components/paragraph'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type ConfirmUnlinkAccountModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/CoverModal.tsx b/packages/desktop-client/src/components/modals/CoverModal.tsx index 89423b51ed..d6751c0b17 100644 --- a/packages/desktop-client/src/components/modals/CoverModal.tsx +++ b/packages/desktop-client/src/components/modals/CoverModal.tsx @@ -5,16 +5,25 @@ import { Button } from '@actual-app/components/button'; import { styles } from '@actual-app/components/styles'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType, pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; import { addToBeBudgetedGroup, removeCategoriesFromGroups, -} from '../budget/util'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { FieldLabel, TapField } from '../mobile/MobileForms'; - +} from '@desktop-client/components/budget/util'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { + FieldLabel, + TapField, +} from '@desktop-client/components/mobile/MobileForms'; import { useCategories } from '@desktop-client/hooks/useCategories'; +import { + type Modal as ModalType, + pushModal, +} from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type CoverModalProps = Extract['options']; diff --git a/packages/desktop-client/src/components/modals/CreateAccountModal.tsx b/packages/desktop-client/src/components/modals/CreateAccountModal.tsx index 100589d72a..9e0b6db09f 100644 --- a/packages/desktop-client/src/components/modals/CreateAccountModal.tsx +++ b/packages/desktop-client/src/components/modals/CreateAccountModal.tsx @@ -14,22 +14,28 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; -import { useAuth } from '../../auth/AuthProvider'; -import { Permissions } from '../../auth/types'; -import { authorizeBank } from '../../gocardless'; -import { type Modal as ModalType, pushModal } from '../../modals/modalsSlice'; -import { addNotification } from '../../notifications/notificationsSlice'; -import { useDispatch } from '../../redux'; -import { Warning } from '../alerts'; -import { Link } from '../common/Link'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { useMultiuserEnabled } from '../ServerContext'; - +import { useAuth } from '@desktop-client/auth/AuthProvider'; +import { Permissions } from '@desktop-client/auth/types'; +import { Warning } from '@desktop-client/components/alerts'; +import { Link } from '@desktop-client/components/common/Link'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { useMultiuserEnabled } from '@desktop-client/components/ServerContext'; +import { authorizeBank } from '@desktop-client/gocardless'; import { useFeatureFlag } from '@desktop-client/hooks/useFeatureFlag'; import { useGoCardlessStatus } from '@desktop-client/hooks/useGoCardlessStatus'; import { usePluggyAiStatus } from '@desktop-client/hooks/usePluggyAiStatus'; import { useSimpleFinStatus } from '@desktop-client/hooks/useSimpleFinStatus'; import { useSyncServerStatus } from '@desktop-client/hooks/useSyncServerStatus'; +import { + type Modal as ModalType, + pushModal, +} from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; type CreateAccountModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/CreateEncryptionKeyModal.tsx b/packages/desktop-client/src/components/modals/CreateEncryptionKeyModal.tsx index 5a0e8f6dfe..63c5516a91 100644 --- a/packages/desktop-client/src/components/modals/CreateEncryptionKeyModal.tsx +++ b/packages/desktop-client/src/components/modals/CreateEncryptionKeyModal.tsx @@ -17,18 +17,18 @@ import { css } from '@emotion/css'; import { send } from 'loot-core/platform/client/fetch'; import { getCreateKeyError } from 'loot-core/shared/errors'; -import { sync } from '../../app/appSlice'; -import { loadAllFiles } from '../../budgets/budgetsSlice'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { loadGlobalPrefs } from '../../prefs/prefsSlice'; -import { useDispatch } from '../../redux'; -import { Link } from '../common/Link'; +import { sync } from '@desktop-client/app/appSlice'; +import { loadAllFiles } from '@desktop-client/budgets/budgetsSlice'; +import { Link } from '@desktop-client/components/common/Link'; import { Modal, ModalButtons, ModalCloseButton, ModalHeader, -} from '../common/Modal'; +} from '@desktop-client/components/common/Modal'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { loadGlobalPrefs } from '@desktop-client/prefs/prefsSlice'; +import { useDispatch } from '@desktop-client/redux'; type CreateEncryptionKeyModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/CreateLocalAccountModal.tsx b/packages/desktop-client/src/components/modals/CreateLocalAccountModal.tsx index 91722ff147..ac1dbd6a39 100644 --- a/packages/desktop-client/src/components/modals/CreateLocalAccountModal.tsx +++ b/packages/desktop-client/src/components/modals/CreateLocalAccountModal.tsx @@ -14,22 +14,21 @@ import { View } from '@actual-app/components/view'; import { toRelaxedNumber } from 'loot-core/shared/util'; -import { closeModal } from '../../modals/modalsSlice'; -import { createAccount } from '../../queries/queriesSlice'; -import { useDispatch } from '../../redux'; -import { Link } from '../common/Link'; +import { Link } from '@desktop-client/components/common/Link'; import { Modal, ModalButtons, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; -import { Checkbox } from '../forms'; -import { validateAccountName } from '../util/accountValidation'; - +} from '@desktop-client/components/common/Modal'; +import { Checkbox } from '@desktop-client/components/forms'; +import { validateAccountName } from '@desktop-client/components/util/accountValidation'; import * as useAccounts from '@desktop-client/hooks/useAccounts'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { closeModal } from '@desktop-client/modals/modalsSlice'; +import { createAccount } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; export function CreateLocalAccountModal() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/modals/EditAccess.tsx b/packages/desktop-client/src/components/modals/EditAccess.tsx index aea37bd72f..59e31a5e49 100644 --- a/packages/desktop-client/src/components/modals/EditAccess.tsx +++ b/packages/desktop-client/src/components/modals/EditAccess.tsx @@ -12,12 +12,19 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import { getUserAccessErrors } from 'loot-core/shared/errors'; -import { type Modal as ModalType, popModal } from '../../modals/modalsSlice'; -import { addNotification } from '../../notifications/notificationsSlice'; -import { useDispatch } from '../../redux'; -import { signOut } from '../../users/usersSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { FormField, FormLabel } from '../forms'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { + type Modal as ModalType, + popModal, +} from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; +import { signOut } from '@desktop-client/users/usersSlice'; type EditUserAccessProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/EditFieldModal.tsx b/packages/desktop-client/src/components/modals/EditFieldModal.tsx index 8fc15b60de..54aa1537e4 100644 --- a/packages/desktop-client/src/components/modals/EditFieldModal.tsx +++ b/packages/desktop-client/src/components/modals/EditFieldModal.tsx @@ -16,12 +16,15 @@ import { parseISO, format as formatDate, parse as parseDate } from 'date-fns'; import { currentDay, dayFromDate } from 'loot-core/shared/months'; import { amountToInteger } from 'loot-core/shared/util'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { SectionLabel } from '../forms'; -import { DateSelect } from '../select/DateSelect'; - +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { SectionLabel } from '@desktop-client/components/forms'; +import { DateSelect } from '@desktop-client/components/select/DateSelect'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; const itemStyle: CSSProperties = { fontSize: 17, diff --git a/packages/desktop-client/src/components/modals/EditRuleModal.jsx b/packages/desktop-client/src/components/modals/EditRuleModal.jsx index 2341d9163d..38210b6b42 100644 --- a/packages/desktop-client/src/components/modals/EditRuleModal.jsx +++ b/packages/desktop-client/src/components/modals/EditRuleModal.jsx @@ -44,17 +44,16 @@ import { amountToInteger, } from 'loot-core/shared/util'; -import { aqlQuery } from '../../queries/aqlQuery'; -import { initiallyLoadPayees } from '../../queries/queriesSlice'; -import { useDispatch } from '../../redux'; -import { enableUndo, disableUndo } from '../../undo'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { StatusBadge } from '../schedules/StatusBadge'; -import { SimpleTransactionsTable } from '../transactions/SimpleTransactionsTable'; -import { BetweenAmountInput } from '../util/AmountInput'; -import { DisplayId } from '../util/DisplayId'; -import { GenericInput } from '../util/GenericInput'; - +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { StatusBadge } from '@desktop-client/components/schedules/StatusBadge'; +import { SimpleTransactionsTable } from '@desktop-client/components/transactions/SimpleTransactionsTable'; +import { BetweenAmountInput } from '@desktop-client/components/util/AmountInput'; +import { DisplayId } from '@desktop-client/components/util/DisplayId'; +import { GenericInput } from '@desktop-client/components/util/GenericInput'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; import { useFeatureFlag } from '@desktop-client/hooks/useFeatureFlag'; import { useSchedules } from '@desktop-client/hooks/useSchedules'; @@ -62,6 +61,10 @@ import { useSelected, SelectedProvider, } from '@desktop-client/hooks/useSelected'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; +import { initiallyLoadPayees } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; +import { enableUndo, disableUndo } from '@desktop-client/undo'; function updateValue(array, value, update) { return array.map(v => (v === value ? update() : v)); diff --git a/packages/desktop-client/src/components/modals/EditUser.tsx b/packages/desktop-client/src/components/modals/EditUser.tsx index 7c5ca969c4..13135fcf21 100644 --- a/packages/desktop-client/src/components/modals/EditUser.tsx +++ b/packages/desktop-client/src/components/modals/EditUser.tsx @@ -14,12 +14,23 @@ import { send } from 'loot-core/platform/client/fetch'; import { PossibleRoles } from 'loot-core/shared/user'; import { type NewUserEntity, type UserEntity } from 'loot-core/types/models'; -import { type Modal as ModalType, popModal } from '../../modals/modalsSlice'; -import { addNotification } from '../../notifications/notificationsSlice'; -import { useDispatch } from '../../redux'; -import { signOut } from '../../users/usersSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { Checkbox, FormField, FormLabel } from '../forms'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { + Checkbox, + FormField, + FormLabel, +} from '@desktop-client/components/forms'; +import { + type Modal as ModalType, + popModal, +} from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; +import { signOut } from '@desktop-client/users/usersSlice'; type User = UserEntity; type NewUser = NewUserEntity; diff --git a/packages/desktop-client/src/components/modals/EnvelopeBalanceMenuModal.tsx b/packages/desktop-client/src/components/modals/EnvelopeBalanceMenuModal.tsx index acafca1bc3..2eaa4602d6 100644 --- a/packages/desktop-client/src/components/modals/EnvelopeBalanceMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/EnvelopeBalanceMenuModal.tsx @@ -6,22 +6,21 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { envelopeBudget } from '../../queries/queries'; import { BalanceWithCarryover, CarryoverIndicator, -} from '../budget/BalanceWithCarryover'; -import { BalanceMenu } from '../budget/envelope/BalanceMenu'; +} from '@desktop-client/components/budget/BalanceWithCarryover'; +import { BalanceMenu } from '@desktop-client/components/budget/envelope/BalanceMenu'; import { Modal, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; -import { CellValueText } from '../spreadsheet/CellValue'; - +} from '@desktop-client/components/common/Modal'; +import { CellValueText } from '@desktop-client/components/spreadsheet/CellValue'; import { useCategory } from '@desktop-client/hooks/useCategory'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { envelopeBudget } from '@desktop-client/queries/queries'; type EnvelopeBalanceMenuModalProps = Omit< Extract['options'], diff --git a/packages/desktop-client/src/components/modals/EnvelopeBudgetMenuModal.tsx b/packages/desktop-client/src/components/modals/EnvelopeBudgetMenuModal.tsx index 799739e824..086f1e33cd 100644 --- a/packages/desktop-client/src/components/modals/EnvelopeBudgetMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/EnvelopeBudgetMenuModal.tsx @@ -9,19 +9,18 @@ import { View } from '@actual-app/components/view'; import * as Platform from 'loot-core/shared/platform'; import { amountToInteger, integerToAmount } from 'loot-core/shared/util'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { envelopeBudget } from '../../queries/queries'; -import { BudgetMenu } from '../budget/envelope/BudgetMenu'; -import { useEnvelopeSheetValue } from '../budget/envelope/EnvelopeBudgetComponents'; +import { BudgetMenu } from '@desktop-client/components/budget/envelope/BudgetMenu'; +import { useEnvelopeSheetValue } from '@desktop-client/components/budget/envelope/EnvelopeBudgetComponents'; import { Modal, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; -import { FocusableAmountInput } from '../mobile/transactions/FocusableAmountInput'; - +} from '@desktop-client/components/common/Modal'; +import { FocusableAmountInput } from '@desktop-client/components/mobile/transactions/FocusableAmountInput'; import { useCategory } from '@desktop-client/hooks/useCategory'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { envelopeBudget } from '@desktop-client/queries/queries'; type EnvelopeBudgetMenuModalProps = Omit< Extract['options'], diff --git a/packages/desktop-client/src/components/modals/EnvelopeBudgetMonthMenuModal.tsx b/packages/desktop-client/src/components/modals/EnvelopeBudgetMonthMenuModal.tsx index 7173dd2bdd..32b1195c63 100644 --- a/packages/desktop-client/src/components/modals/EnvelopeBudgetMonthMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/EnvelopeBudgetMonthMenuModal.tsx @@ -15,14 +15,17 @@ import { css } from '@emotion/css'; import * as monthUtils from 'loot-core/shared/months'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { BudgetMonthMenu } from '../budget/envelope/budgetsummary/BudgetMonthMenu'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { Notes } from '../Notes'; - +import { BudgetMonthMenu } from '@desktop-client/components/budget/envelope/budgetsummary/BudgetMonthMenu'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { Notes } from '@desktop-client/components/Notes'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useNotes } from '@desktop-client/hooks/useNotes'; import { useUndo } from '@desktop-client/hooks/useUndo'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type EnvelopeBudgetMonthMenuModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/EnvelopeBudgetSummaryModal.tsx b/packages/desktop-client/src/components/modals/EnvelopeBudgetSummaryModal.tsx index 33e90bfaba..e664f264f1 100644 --- a/packages/desktop-client/src/components/modals/EnvelopeBudgetSummaryModal.tsx +++ b/packages/desktop-client/src/components/modals/EnvelopeBudgetSummaryModal.tsx @@ -6,22 +6,25 @@ import { styles } from '@actual-app/components/styles'; import { format, sheetForMonth, prevMonth } from 'loot-core/shared/months'; import { groupById, integerToCurrency } from 'loot-core/shared/util'; +import { ToBudgetAmount } from '@desktop-client/components/budget/envelope/budgetsummary/ToBudgetAmount'; +import { TotalsList } from '@desktop-client/components/budget/envelope/budgetsummary/TotalsList'; +import { useEnvelopeSheetValue } from '@desktop-client/components/budget/envelope/EnvelopeBudgetComponents'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; +import { useCategories } from '@desktop-client/hooks/useCategories'; +import { useLocale } from '@desktop-client/hooks/useLocale'; +import { useUndo } from '@desktop-client/hooks/useUndo'; import { collapseModals, type Modal as ModalType, pushModal, -} from '../../modals/modalsSlice'; -import { envelopeBudget } from '../../queries/queries'; -import { useDispatch } from '../../redux'; -import { ToBudgetAmount } from '../budget/envelope/budgetsummary/ToBudgetAmount'; -import { TotalsList } from '../budget/envelope/budgetsummary/TotalsList'; -import { useEnvelopeSheetValue } from '../budget/envelope/EnvelopeBudgetComponents'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { NamespaceContext } from '../spreadsheet/NamespaceContext'; - -import { useCategories } from '@desktop-client/hooks/useCategories'; -import { useLocale } from '@desktop-client/hooks/useLocale'; -import { useUndo } from '@desktop-client/hooks/useUndo'; +} from '@desktop-client/modals/modalsSlice'; +import { envelopeBudget } from '@desktop-client/queries/queries'; +import { useDispatch } from '@desktop-client/redux'; type EnvelopeBudgetSummaryModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/EnvelopeToBudgetMenuModal.tsx b/packages/desktop-client/src/components/modals/EnvelopeToBudgetMenuModal.tsx index 58babd213e..8908aa9430 100644 --- a/packages/desktop-client/src/components/modals/EnvelopeToBudgetMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/EnvelopeToBudgetMenuModal.tsx @@ -3,9 +3,13 @@ import React, { type CSSProperties } from 'react'; import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { ToBudgetMenu } from '../budget/envelope/budgetsummary/ToBudgetMenu'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; +import { ToBudgetMenu } from '@desktop-client/components/budget/envelope/budgetsummary/ToBudgetMenu'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type EnvelopeToBudgetMenuModalProps = Omit< Extract['options'], diff --git a/packages/desktop-client/src/components/modals/FixEncryptionKeyModal.tsx b/packages/desktop-client/src/components/modals/FixEncryptionKeyModal.tsx index 52fb609ca6..235aefed5b 100644 --- a/packages/desktop-client/src/components/modals/FixEncryptionKeyModal.tsx +++ b/packages/desktop-client/src/components/modals/FixEncryptionKeyModal.tsx @@ -16,14 +16,14 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import { getTestKeyError } from 'loot-core/shared/errors'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Link } from '../common/Link'; +import { Link } from '@desktop-client/components/common/Link'; import { Modal, ModalButtons, ModalCloseButton, ModalHeader, -} from '../common/Modal'; +} from '@desktop-client/components/common/Modal'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type FixEncryptionKeyModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/GoCardlessExternalMsgModal.tsx b/packages/desktop-client/src/components/modals/GoCardlessExternalMsgModal.tsx index 328ce1bc2d..261a14e40a 100644 --- a/packages/desktop-client/src/components/modals/GoCardlessExternalMsgModal.tsx +++ b/packages/desktop-client/src/components/modals/GoCardlessExternalMsgModal.tsx @@ -14,16 +14,22 @@ import { type GoCardlessToken, } from 'loot-core/types/models'; -import { type Modal as ModalType, pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Error, Warning } from '../alerts'; -import { Autocomplete } from '../autocomplete/Autocomplete'; -import { Link } from '../common/Link'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { FormField, FormLabel } from '../forms'; -import { COUNTRY_OPTIONS } from '../util/countries'; - +import { Error, Warning } from '@desktop-client/components/alerts'; +import { Autocomplete } from '@desktop-client/components/autocomplete/Autocomplete'; +import { Link } from '@desktop-client/components/common/Link'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { COUNTRY_OPTIONS } from '@desktop-client/components/util/countries'; import { useGoCardlessStatus } from '@desktop-client/hooks/useGoCardlessStatus'; +import { + type Modal as ModalType, + pushModal, +} from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; function useAvailableBanks(country: string) { const [banks, setBanks] = useState([]); diff --git a/packages/desktop-client/src/components/modals/GoCardlessInitialiseModal.tsx b/packages/desktop-client/src/components/modals/GoCardlessInitialiseModal.tsx index e257704998..6e2f497874 100644 --- a/packages/desktop-client/src/components/modals/GoCardlessInitialiseModal.tsx +++ b/packages/desktop-client/src/components/modals/GoCardlessInitialiseModal.tsx @@ -11,16 +11,16 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import { getSecretsError } from 'loot-core/shared/errors'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Error } from '../alerts'; -import { Link } from '../common/Link'; +import { Error } from '@desktop-client/components/alerts'; +import { Link } from '@desktop-client/components/common/Link'; import { Modal, ModalButtons, ModalCloseButton, ModalHeader, -} from '../common/Modal'; -import { FormField, FormLabel } from '../forms'; +} from '@desktop-client/components/common/Modal'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type GoCardlessInitialiseModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/GoalTemplateModal.tsx b/packages/desktop-client/src/components/modals/GoalTemplateModal.tsx index 7b5395c1ef..2eff8dfee2 100644 --- a/packages/desktop-client/src/components/modals/GoalTemplateModal.tsx +++ b/packages/desktop-client/src/components/modals/GoalTemplateModal.tsx @@ -4,9 +4,13 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { Link } from '../common/Link'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { TableHeader, Row, Field } from '../table'; +import { Link } from '@desktop-client/components/common/Link'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { TableHeader, Row, Field } from '@desktop-client/components/table'; export function GoalTemplateModal() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/modals/HoldBufferModal.tsx b/packages/desktop-client/src/components/modals/HoldBufferModal.tsx index b1dcfed620..7a65ef040d 100644 --- a/packages/desktop-client/src/components/modals/HoldBufferModal.tsx +++ b/packages/desktop-client/src/components/modals/HoldBufferModal.tsx @@ -6,12 +6,16 @@ import { InitialFocus } from '@actual-app/components/initial-focus'; import { styles } from '@actual-app/components/styles'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { envelopeBudget } from '../../queries/queries'; -import { useEnvelopeSheetValue } from '../budget/envelope/EnvelopeBudgetComponents'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { FieldLabel } from '../mobile/MobileForms'; -import { AmountInput } from '../util/AmountInput'; +import { useEnvelopeSheetValue } from '@desktop-client/components/budget/envelope/EnvelopeBudgetComponents'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { FieldLabel } from '@desktop-client/components/mobile/MobileForms'; +import { AmountInput } from '@desktop-client/components/util/AmountInput'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { envelopeBudget } from '@desktop-client/queries/queries'; type HoldBufferModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/ImportTransactionsModal/CheckboxOption.tsx b/packages/desktop-client/src/components/modals/ImportTransactionsModal/CheckboxOption.tsx index cf6969f339..b3eddcc3aa 100644 --- a/packages/desktop-client/src/components/modals/ImportTransactionsModal/CheckboxOption.tsx +++ b/packages/desktop-client/src/components/modals/ImportTransactionsModal/CheckboxOption.tsx @@ -7,7 +7,7 @@ import React, { import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { Checkbox } from '../../forms'; +import { Checkbox } from '@desktop-client/components/forms'; type CheckboxOptionProps = { id: string; diff --git a/packages/desktop-client/src/components/modals/ImportTransactionsModal/DateFormatSelect.tsx b/packages/desktop-client/src/components/modals/ImportTransactionsModal/DateFormatSelect.tsx index a7fe7ac735..4fb450d47e 100644 --- a/packages/desktop-client/src/components/modals/ImportTransactionsModal/DateFormatSelect.tsx +++ b/packages/desktop-client/src/components/modals/ImportTransactionsModal/DateFormatSelect.tsx @@ -3,14 +3,14 @@ import React from 'react'; import { Select } from '@actual-app/components/select'; import { View } from '@actual-app/components/view'; -import { SectionLabel } from '../../forms'; - import { dateFormats, type ImportTransaction, type FieldMapping, } from './utils'; +import { SectionLabel } from '@desktop-client/components/forms'; + type DateFormatSelectProps = { transactions: ImportTransaction[]; fieldMappings: FieldMapping; diff --git a/packages/desktop-client/src/components/modals/ImportTransactionsModal/FieldMappings.tsx b/packages/desktop-client/src/components/modals/ImportTransactionsModal/FieldMappings.tsx index 2185027b55..9497099dc7 100644 --- a/packages/desktop-client/src/components/modals/ImportTransactionsModal/FieldMappings.tsx +++ b/packages/desktop-client/src/components/modals/ImportTransactionsModal/FieldMappings.tsx @@ -3,8 +3,6 @@ import React from 'react'; import { Stack } from '@actual-app/components/stack'; import { View } from '@actual-app/components/view'; -import { SectionLabel } from '../../forms'; - import { SelectField } from './SelectField'; import { SubLabel } from './SubLabel'; import { @@ -13,6 +11,8 @@ import { type ImportTransaction, } from './utils'; +import { SectionLabel } from '@desktop-client/components/forms'; + type FieldMappingsProps = { transactions: ImportTransaction[]; mappings?: FieldMapping; diff --git a/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.jsx b/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.jsx index 6e37a18c4e..ffd2e7cf96 100644 --- a/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.jsx +++ b/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.jsx @@ -13,16 +13,6 @@ import deepEqual from 'deep-equal'; import { send } from 'loot-core/platform/client/fetch'; import { amountToInteger } from 'loot-core/shared/util'; -import { - getPayees, - importPreviewTransactions, - importTransactions, -} from '../../../queries/queriesSlice'; -import { useDispatch } from '../../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../../common/Modal'; -import { SectionLabel } from '../../forms'; -import { TableHeader, TableWithNavigator } from '../../table'; - import { CheckboxOption } from './CheckboxOption'; import { DateFormatSelect } from './DateFormatSelect'; import { FieldMappings } from './FieldMappings'; @@ -37,9 +27,25 @@ import { stripCsvImportTransaction, } from './utils'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { SectionLabel } from '@desktop-client/components/forms'; +import { + TableHeader, + TableWithNavigator, +} from '@desktop-client/components/table'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; import { useSyncedPrefs } from '@desktop-client/hooks/useSyncedPrefs'; +import { + getPayees, + importPreviewTransactions, + importTransactions, +} from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; function getFileType(filepath) { const m = filepath.match(/\.([^.]*)$/); diff --git a/packages/desktop-client/src/components/modals/ImportTransactionsModal/Transaction.tsx b/packages/desktop-client/src/components/modals/ImportTransactionsModal/Transaction.tsx index 9f2ba870b1..0417770c6a 100644 --- a/packages/desktop-client/src/components/modals/ImportTransactionsModal/Transaction.tsx +++ b/packages/desktop-client/src/components/modals/ImportTransactionsModal/Transaction.tsx @@ -10,9 +10,6 @@ import { View } from '@actual-app/components/view'; import { amountToCurrency } from 'loot-core/shared/util'; import { type CategoryEntity } from 'loot-core/types/models'; -import { Checkbox } from '../../forms'; -import { Row, Field } from '../../table'; - import { ParsedDate } from './ParsedDate'; import { applyFieldMappings, @@ -22,6 +19,9 @@ import { parseAmountFields, } from './utils'; +import { Checkbox } from '@desktop-client/components/forms'; +import { Row, Field } from '@desktop-client/components/table'; + type TransactionProps = { transaction: ImportTransaction; fieldMappings: FieldMapping; diff --git a/packages/desktop-client/src/components/modals/KeyboardShortcutModal.tsx b/packages/desktop-client/src/components/modals/KeyboardShortcutModal.tsx index a32ddac593..47a97c8435 100644 --- a/packages/desktop-client/src/components/modals/KeyboardShortcutModal.tsx +++ b/packages/desktop-client/src/components/modals/KeyboardShortcutModal.tsx @@ -7,7 +7,11 @@ import { View } from '@actual-app/components/view'; import * as Platform from 'loot-core/shared/platform'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; type KeyIconProps = { shortcut: string; diff --git a/packages/desktop-client/src/components/modals/LoadBackupModal.tsx b/packages/desktop-client/src/components/modals/LoadBackupModal.tsx index 36635c6a64..5195ef371b 100644 --- a/packages/desktop-client/src/components/modals/LoadBackupModal.tsx +++ b/packages/desktop-client/src/components/modals/LoadBackupModal.tsx @@ -10,13 +10,16 @@ import { View } from '@actual-app/components/view'; import { send, listen } from 'loot-core/platform/client/fetch'; import { type Backup } from 'loot-core/server/budgetfiles/backups'; -import { loadBackup, makeBackup } from '../../budgets/budgetsSlice'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { Row, Cell } from '../table'; - +import { loadBackup, makeBackup } from '@desktop-client/budgets/budgetsSlice'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { Row, Cell } from '@desktop-client/components/table'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type BackupTableProps = { backups: Backup[]; diff --git a/packages/desktop-client/src/components/modals/ManageRulesModal.tsx b/packages/desktop-client/src/components/modals/ManageRulesModal.tsx index c98d4cecc3..b3e3889193 100644 --- a/packages/desktop-client/src/components/modals/ManageRulesModal.tsx +++ b/packages/desktop-client/src/components/modals/ManageRulesModal.tsx @@ -5,9 +5,13 @@ import { useLocation } from 'react-router-dom'; import { isNonProductionEnvironment } from 'loot-core/shared/environment'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { ManageRules } from '../ManageRules'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { ManageRules } from '@desktop-client/components/ManageRules'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type ManageRulesModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/MergeUnusedPayeesModal.tsx b/packages/desktop-client/src/components/modals/MergeUnusedPayeesModal.tsx index 9156219e16..dead5fb23a 100644 --- a/packages/desktop-client/src/components/modals/MergeUnusedPayeesModal.tsx +++ b/packages/desktop-client/src/components/modals/MergeUnusedPayeesModal.tsx @@ -10,15 +10,14 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import { type PayeeEntity } from 'loot-core/types/models'; +import { Information } from '@desktop-client/components/alerts'; +import { Modal, ModalButtons } from '@desktop-client/components/common/Modal'; +import { usePayees } from '@desktop-client/hooks/usePayees'; import { type Modal as ModalType, replaceModal, -} from '../../modals/modalsSlice'; -import { useSelector, useDispatch } from '../../redux'; -import { Information } from '../alerts'; -import { Modal, ModalButtons } from '../common/Modal'; - -import { usePayees } from '@desktop-client/hooks/usePayees'; +} from '@desktop-client/modals/modalsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; const highlightStyle = { color: theme.pageTextPositive }; diff --git a/packages/desktop-client/src/components/modals/NewCategoryGroupModal.tsx b/packages/desktop-client/src/components/modals/NewCategoryGroupModal.tsx index 5aca9f93f1..2e3c4acbcd 100644 --- a/packages/desktop-client/src/components/modals/NewCategoryGroupModal.tsx +++ b/packages/desktop-client/src/components/modals/NewCategoryGroupModal.tsx @@ -1,10 +1,13 @@ import { useTranslation } from 'react-i18next'; -import { type Modal } from '../../modals/modalsSlice'; -import { ModalHeader, ModalTitle } from '../common/Modal'; - import { SingleInputModal } from './SingleInputModal'; +import { + ModalHeader, + ModalTitle, +} from '@desktop-client/components/common/Modal'; +import { type Modal } from '@desktop-client/modals/modalsSlice'; + type NewCategoryGroupModalProps = Extract< Modal, { name: 'new-category-group' } diff --git a/packages/desktop-client/src/components/modals/NewCategoryModal.tsx b/packages/desktop-client/src/components/modals/NewCategoryModal.tsx index 3596e30285..749f9ccd89 100644 --- a/packages/desktop-client/src/components/modals/NewCategoryModal.tsx +++ b/packages/desktop-client/src/components/modals/NewCategoryModal.tsx @@ -1,10 +1,13 @@ import { useTranslation } from 'react-i18next'; -import { type Modal } from '../../modals/modalsSlice'; -import { ModalHeader, ModalTitle } from '../common/Modal'; - import { SingleInputModal } from './SingleInputModal'; +import { + ModalHeader, + ModalTitle, +} from '@desktop-client/components/common/Modal'; +import { type Modal } from '@desktop-client/modals/modalsSlice'; + type NewCategoryModalProps = Extract< Modal, { name: 'new-category' } diff --git a/packages/desktop-client/src/components/modals/NotesModal.tsx b/packages/desktop-client/src/components/modals/NotesModal.tsx index 8f32c62577..808edb4c29 100644 --- a/packages/desktop-client/src/components/modals/NotesModal.tsx +++ b/packages/desktop-client/src/components/modals/NotesModal.tsx @@ -6,11 +6,14 @@ import { Button } from '@actual-app/components/button'; import { SvgCheck } from '@actual-app/components/icons/v2'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { Notes } from '../Notes'; - +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { Notes } from '@desktop-client/components/Notes'; import { useNotes } from '@desktop-client/hooks/useNotes'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type NotesModalProps = Extract['options']; diff --git a/packages/desktop-client/src/components/modals/OpenIDEnableModal.tsx b/packages/desktop-client/src/components/modals/OpenIDEnableModal.tsx index 51572a89fd..6edb6f5898 100644 --- a/packages/desktop-client/src/components/modals/OpenIDEnableModal.tsx +++ b/packages/desktop-client/src/components/modals/OpenIDEnableModal.tsx @@ -12,13 +12,20 @@ import * as asyncStorage from 'loot-core/platform/server/asyncStorage'; import { getOpenIdErrors } from 'loot-core/shared/errors'; import { type OpenIdConfig } from 'loot-core/types/models'; -import { closeBudget } from '../../budgets/budgetsSlice'; -import { type Modal as ModalType, popModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Error } from '../alerts'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { OpenIdForm } from '../manager/subscribe/OpenIdForm'; -import { useRefreshLoginMethods } from '../ServerContext'; +import { closeBudget } from '@desktop-client/budgets/budgetsSlice'; +import { Error } from '@desktop-client/components/alerts'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { OpenIdForm } from '@desktop-client/components/manager/subscribe/OpenIdForm'; +import { useRefreshLoginMethods } from '@desktop-client/components/ServerContext'; +import { + type Modal as ModalType, + popModal, +} from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type OpenIDEnableModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/OutOfSyncMigrationsModal.tsx b/packages/desktop-client/src/components/modals/OutOfSyncMigrationsModal.tsx index c835b6ea0b..a21b1c668b 100644 --- a/packages/desktop-client/src/components/modals/OutOfSyncMigrationsModal.tsx +++ b/packages/desktop-client/src/components/modals/OutOfSyncMigrationsModal.tsx @@ -6,10 +6,14 @@ import { Paragraph } from '@actual-app/components/paragraph'; import { Text } from '@actual-app/components/text'; import { View } from '@actual-app/components/view'; -import { closeBudget } from '../../budgets/budgetsSlice'; -import { useDispatch } from '../../redux'; -import { Link } from '../common/Link'; -import { Modal, ModalHeader, ModalTitle } from '../common/Modal'; +import { closeBudget } from '@desktop-client/budgets/budgetsSlice'; +import { Link } from '@desktop-client/components/common/Link'; +import { + Modal, + ModalHeader, + ModalTitle, +} from '@desktop-client/components/common/Modal'; +import { useDispatch } from '@desktop-client/redux'; export function OutOfSyncMigrationsModal() { const dispatch = useDispatch(); diff --git a/packages/desktop-client/src/components/modals/PasswordEnableModal.tsx b/packages/desktop-client/src/components/modals/PasswordEnableModal.tsx index 936601eeae..dc699dfe65 100644 --- a/packages/desktop-client/src/components/modals/PasswordEnableModal.tsx +++ b/packages/desktop-client/src/components/modals/PasswordEnableModal.tsx @@ -10,21 +10,28 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import * as asyncStorage from 'loot-core/platform/server/asyncStorage'; -import { closeBudget } from '../../budgets/budgetsSlice'; -import { type Modal as ModalType, popModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Error as ErrorAlert } from '../alerts'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { FormField } from '../forms'; +import { closeBudget } from '@desktop-client/budgets/budgetsSlice'; +import { Error as ErrorAlert } from '@desktop-client/components/alerts'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { FormField } from '@desktop-client/components/forms'; import { ConfirmOldPasswordForm, ConfirmPasswordForm, -} from '../manager/subscribe/ConfirmPasswordForm'; +} from '@desktop-client/components/manager/subscribe/ConfirmPasswordForm'; import { useAvailableLoginMethods, useMultiuserEnabled, useRefreshLoginMethods, -} from '../ServerContext'; +} from '@desktop-client/components/ServerContext'; +import { + type Modal as ModalType, + popModal, +} from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type PasswordEnableModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/PayeeAutocompleteModal.tsx b/packages/desktop-client/src/components/modals/PayeeAutocompleteModal.tsx index 5b9a77e248..6b410d779b 100644 --- a/packages/desktop-client/src/components/modals/PayeeAutocompleteModal.tsx +++ b/packages/desktop-client/src/components/modals/PayeeAutocompleteModal.tsx @@ -4,18 +4,17 @@ import { useTranslation } from 'react-i18next'; import { useResponsive } from '@actual-app/components/hooks/useResponsive'; import { theme } from '@actual-app/components/theme'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { PayeeAutocomplete } from '../autocomplete/PayeeAutocomplete'; +import { PayeeAutocomplete } from '@desktop-client/components/autocomplete/PayeeAutocomplete'; import { ModalCloseButton, Modal, ModalTitle, ModalHeader, -} from '../common/Modal'; - +} from '@desktop-client/components/common/Modal'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { usePayees } from '@desktop-client/hooks/usePayees'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type PayeeAutocompleteModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/PluggyAiInitialiseModal.tsx b/packages/desktop-client/src/components/modals/PluggyAiInitialiseModal.tsx index 99b36598b9..f14659c25e 100644 --- a/packages/desktop-client/src/components/modals/PluggyAiInitialiseModal.tsx +++ b/packages/desktop-client/src/components/modals/PluggyAiInitialiseModal.tsx @@ -11,16 +11,16 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import { getSecretsError } from 'loot-core/shared/errors'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Error } from '../alerts'; -import { Link } from '../common/Link'; +import { Error } from '@desktop-client/components/alerts'; +import { Link } from '@desktop-client/components/common/Link'; import { Modal, ModalButtons, ModalCloseButton, ModalHeader, -} from '../common/Modal'; -import { FormField, FormLabel } from '../forms'; +} from '@desktop-client/components/common/Modal'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type PluggyAiInitialiseProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/ScheduledTransactionMenuModal.tsx b/packages/desktop-client/src/components/modals/ScheduledTransactionMenuModal.tsx index 4fd9d65f30..a395c38ba4 100644 --- a/packages/desktop-client/src/components/modals/ScheduledTransactionMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/ScheduledTransactionMenuModal.tsx @@ -18,16 +18,15 @@ import { extractScheduleConds, } from 'loot-core/shared/schedules'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; import { Modal, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; - +} from '@desktop-client/components/common/Modal'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useSchedules } from '@desktop-client/hooks/useSchedules'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type ScheduledTransactionMenuModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.jsx b/packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.jsx index 025cbbf0b2..6f765b8e7d 100644 --- a/packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.jsx +++ b/packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.jsx @@ -12,15 +12,23 @@ import { linkAccountPluggyAi, linkAccountSimpleFin, unlinkAccount, -} from '../../accounts/accountsSlice'; -import { closeModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Autocomplete } from '../autocomplete/Autocomplete'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { PrivacyFilter } from '../PrivacyFilter'; -import { TableHeader, Table, Row, Field } from '../table'; - +} from '@desktop-client/accounts/accountsSlice'; +import { Autocomplete } from '@desktop-client/components/autocomplete/Autocomplete'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { + TableHeader, + Table, + Row, + Field, +} from '@desktop-client/components/table'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; +import { closeModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; function useAddBudgetAccountOptions() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/modals/SimpleFinInitialiseModal.tsx b/packages/desktop-client/src/components/modals/SimpleFinInitialiseModal.tsx index 77c1ccb514..241dd40ba1 100644 --- a/packages/desktop-client/src/components/modals/SimpleFinInitialiseModal.tsx +++ b/packages/desktop-client/src/components/modals/SimpleFinInitialiseModal.tsx @@ -10,16 +10,16 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import { getSecretsError } from 'loot-core/shared/errors'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { Error } from '../alerts'; -import { Link } from '../common/Link'; +import { Error } from '@desktop-client/components/alerts'; +import { Link } from '@desktop-client/components/common/Link'; import { Modal, ModalButtons, ModalCloseButton, ModalHeader, -} from '../common/Modal'; -import { FormField, FormLabel } from '../forms'; +} from '@desktop-client/components/common/Modal'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type SimpleFinInitialiseModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/SingleInputModal.tsx b/packages/desktop-client/src/components/modals/SingleInputModal.tsx index 02dd3ce66b..87f26eb41a 100644 --- a/packages/desktop-client/src/components/modals/SingleInputModal.tsx +++ b/packages/desktop-client/src/components/modals/SingleInputModal.tsx @@ -13,8 +13,12 @@ import { InitialFocus } from '@actual-app/components/initial-focus'; import { styles } from '@actual-app/components/styles'; import { View } from '@actual-app/components/view'; -import { Modal, ModalCloseButton, type ModalHeader } from '../common/Modal'; -import { InputField } from '../mobile/MobileForms'; +import { + Modal, + ModalCloseButton, + type ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { InputField } from '@desktop-client/components/mobile/MobileForms'; type SingleInputModalProps = { name: string; diff --git a/packages/desktop-client/src/components/modals/TrackingBalanceMenuModal.tsx b/packages/desktop-client/src/components/modals/TrackingBalanceMenuModal.tsx index 00e0113261..9de6a6e525 100644 --- a/packages/desktop-client/src/components/modals/TrackingBalanceMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/TrackingBalanceMenuModal.tsx @@ -6,22 +6,21 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { trackingBudget } from '../../queries/queries'; import { BalanceWithCarryover, CarryoverIndicator, -} from '../budget/BalanceWithCarryover'; -import { BalanceMenu } from '../budget/tracking/BalanceMenu'; +} from '@desktop-client/components/budget/BalanceWithCarryover'; +import { BalanceMenu } from '@desktop-client/components/budget/tracking/BalanceMenu'; import { Modal, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; -import { CellValueText } from '../spreadsheet/CellValue'; - +} from '@desktop-client/components/common/Modal'; +import { CellValueText } from '@desktop-client/components/spreadsheet/CellValue'; import { useCategory } from '@desktop-client/hooks/useCategory'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { trackingBudget } from '@desktop-client/queries/queries'; type TrackingBalanceMenuModalProps = Omit< Extract['options'], diff --git a/packages/desktop-client/src/components/modals/TrackingBudgetMenuModal.tsx b/packages/desktop-client/src/components/modals/TrackingBudgetMenuModal.tsx index 07a2bb701a..1f3eb65f0b 100644 --- a/packages/desktop-client/src/components/modals/TrackingBudgetMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/TrackingBudgetMenuModal.tsx @@ -9,19 +9,18 @@ import { View } from '@actual-app/components/view'; import * as Platform from 'loot-core/shared/platform'; import { amountToInteger, integerToAmount } from 'loot-core/shared/util'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { trackingBudget } from '../../queries/queries'; -import { BudgetMenu } from '../budget/tracking/BudgetMenu'; -import { useTrackingSheetValue } from '../budget/tracking/TrackingBudgetComponents'; +import { BudgetMenu } from '@desktop-client/components/budget/tracking/BudgetMenu'; +import { useTrackingSheetValue } from '@desktop-client/components/budget/tracking/TrackingBudgetComponents'; import { Modal, ModalCloseButton, ModalHeader, ModalTitle, -} from '../common/Modal'; -import { FocusableAmountInput } from '../mobile/transactions/FocusableAmountInput'; - +} from '@desktop-client/components/common/Modal'; +import { FocusableAmountInput } from '@desktop-client/components/mobile/transactions/FocusableAmountInput'; import { useCategory } from '@desktop-client/hooks/useCategory'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { trackingBudget } from '@desktop-client/queries/queries'; type TrackingBudgetMenuModalProps = Omit< Extract['options'], diff --git a/packages/desktop-client/src/components/modals/TrackingBudgetMonthMenuModal.tsx b/packages/desktop-client/src/components/modals/TrackingBudgetMonthMenuModal.tsx index d091b14002..15b4262a66 100644 --- a/packages/desktop-client/src/components/modals/TrackingBudgetMonthMenuModal.tsx +++ b/packages/desktop-client/src/components/modals/TrackingBudgetMonthMenuModal.tsx @@ -15,14 +15,17 @@ import { css } from '@emotion/css'; import * as monthUtils from 'loot-core/shared/months'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { BudgetMonthMenu } from '../budget/tracking/budgetsummary/BudgetMonthMenu'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { Notes } from '../Notes'; - +import { BudgetMonthMenu } from '@desktop-client/components/budget/tracking/budgetsummary/BudgetMonthMenu'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { Notes } from '@desktop-client/components/Notes'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useNotes } from '@desktop-client/hooks/useNotes'; import { useUndo } from '@desktop-client/hooks/useUndo'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type TrackingBudgetMonthMenuModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/TrackingBudgetSummaryModal.tsx b/packages/desktop-client/src/components/modals/TrackingBudgetSummaryModal.tsx index a9715a57e1..ba2e3671df 100644 --- a/packages/desktop-client/src/components/modals/TrackingBudgetSummaryModal.tsx +++ b/packages/desktop-client/src/components/modals/TrackingBudgetSummaryModal.tsx @@ -7,12 +7,16 @@ import { styles } from '@actual-app/components/styles'; import { sheetForMonth } from 'loot-core/shared/months'; import * as monthUtils from 'loot-core/shared/months'; -import { type Modal as ModalType } from '../../modals/modalsSlice'; -import { ExpenseTotal } from '../budget/tracking/budgetsummary/ExpenseTotal'; -import { IncomeTotal } from '../budget/tracking/budgetsummary/IncomeTotal'; -import { Saved } from '../budget/tracking/budgetsummary/Saved'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { NamespaceContext } from '../spreadsheet/NamespaceContext'; +import { ExpenseTotal } from '@desktop-client/components/budget/tracking/budgetsummary/ExpenseTotal'; +import { IncomeTotal } from '@desktop-client/components/budget/tracking/budgetsummary/IncomeTotal'; +import { Saved } from '@desktop-client/components/budget/tracking/budgetsummary/Saved'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; type TrackingBudgetSummaryModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/TransferModal.tsx b/packages/desktop-client/src/components/modals/TransferModal.tsx index 7ba98deb0b..72f80febc2 100644 --- a/packages/desktop-client/src/components/modals/TransferModal.tsx +++ b/packages/desktop-client/src/components/modals/TransferModal.tsx @@ -6,17 +6,26 @@ import { InitialFocus } from '@actual-app/components/initial-focus'; import { styles } from '@actual-app/components/styles'; import { View } from '@actual-app/components/view'; -import { type Modal as ModalType, pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; import { addToBeBudgetedGroup, removeCategoriesFromGroups, -} from '../budget/util'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { FieldLabel, TapField } from '../mobile/MobileForms'; -import { AmountInput } from '../util/AmountInput'; - +} from '@desktop-client/components/budget/util'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { + FieldLabel, + TapField, +} from '@desktop-client/components/mobile/MobileForms'; +import { AmountInput } from '@desktop-client/components/util/AmountInput'; import { useCategories } from '@desktop-client/hooks/useCategories'; +import { + type Modal as ModalType, + pushModal, +} from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type TransferModalProps = Extract['options']; diff --git a/packages/desktop-client/src/components/modals/TransferOwnership.tsx b/packages/desktop-client/src/components/modals/TransferOwnership.tsx index b6e826c193..cea034d7ab 100644 --- a/packages/desktop-client/src/components/modals/TransferOwnership.tsx +++ b/packages/desktop-client/src/components/modals/TransferOwnership.tsx @@ -15,14 +15,20 @@ import { type Budget } from 'loot-core/types/budget'; import { type RemoteFile, type SyncedLocalFile } from 'loot-core/types/file'; import { type Handlers } from 'loot-core/types/handlers'; -import { closeAndLoadBudget } from '../../budgets/budgetsSlice'; -import { type Modal as ModalType, popModal } from '../../modals/modalsSlice'; -import { addNotification } from '../../notifications/notificationsSlice'; -import { useDispatch, useSelector } from '../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { FormField, FormLabel } from '../forms'; - +import { closeAndLoadBudget } from '@desktop-client/budgets/budgetsSlice'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { + type Modal as ModalType, + popModal, +} from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch, useSelector } from '@desktop-client/redux'; type TransferOwnershipProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/manager/ConfirmChangeDocumentDir.tsx b/packages/desktop-client/src/components/modals/manager/ConfirmChangeDocumentDir.tsx index 92c81b9cbe..38737ac2d6 100644 --- a/packages/desktop-client/src/components/modals/manager/ConfirmChangeDocumentDir.tsx +++ b/packages/desktop-client/src/components/modals/manager/ConfirmChangeDocumentDir.tsx @@ -7,13 +7,16 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { Information } from '../../alerts'; -import { Modal, ModalCloseButton, ModalHeader } from '../../common/Modal'; -import { Checkbox } from '../../forms'; - +import { Information } from '@desktop-client/components/alerts'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { Checkbox } from '@desktop-client/components/forms'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; function DirectoryDisplay({ directory }: { directory: string }) { return ( diff --git a/packages/desktop-client/src/components/modals/manager/DeleteFileModal.tsx b/packages/desktop-client/src/components/modals/manager/DeleteFileModal.tsx index b16dd9d10a..f5e5f1d021 100644 --- a/packages/desktop-client/src/components/modals/manager/DeleteFileModal.tsx +++ b/packages/desktop-client/src/components/modals/manager/DeleteFileModal.tsx @@ -6,10 +6,14 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { deleteBudget } from '../../../budgets/budgetsSlice'; -import { type Modal as ModalType } from '../../../modals/modalsSlice'; -import { useDispatch } from '../../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../../common/Modal'; +import { deleteBudget } from '@desktop-client/budgets/budgetsSlice'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type DeleteFileModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/manager/DuplicateFileModal.tsx b/packages/desktop-client/src/components/modals/manager/DuplicateFileModal.tsx index 120eae22ee..1e583758ec 100644 --- a/packages/desktop-client/src/components/modals/manager/DuplicateFileModal.tsx +++ b/packages/desktop-client/src/components/modals/manager/DuplicateFileModal.tsx @@ -12,16 +12,16 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; -import { duplicateBudget } from '../../../budgets/budgetsSlice'; -import { type Modal as ModalType } from '../../../modals/modalsSlice'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; +import { duplicateBudget } from '@desktop-client/budgets/budgetsSlice'; import { Modal, ModalButtons, ModalCloseButton, ModalHeader, -} from '../../common/Modal'; +} from '@desktop-client/components/common/Modal'; +import { type Modal as ModalType } from '@desktop-client/modals/modalsSlice'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; type DuplicateFileModalProps = Extract< ModalType, diff --git a/packages/desktop-client/src/components/modals/manager/FilesSettingsModal.tsx b/packages/desktop-client/src/components/modals/manager/FilesSettingsModal.tsx index 97f3f5be54..e6faa7d822 100644 --- a/packages/desktop-client/src/components/modals/manager/FilesSettingsModal.tsx +++ b/packages/desktop-client/src/components/modals/manager/FilesSettingsModal.tsx @@ -8,12 +8,15 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { loadAllFiles } from '../../../budgets/budgetsSlice'; -import { pushModal } from '../../../modals/modalsSlice'; -import { useDispatch } from '../../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../../common/Modal'; - +import { loadAllFiles } from '@desktop-client/budgets/budgetsSlice'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; function FileLocationSettings() { const [documentDir, _setDocumentDirPref] = useGlobalPref('documentDir'); diff --git a/packages/desktop-client/src/components/modals/manager/ImportActualModal.tsx b/packages/desktop-client/src/components/modals/manager/ImportActualModal.tsx index 83582badf7..815632213d 100644 --- a/packages/desktop-client/src/components/modals/manager/ImportActualModal.tsx +++ b/packages/desktop-client/src/components/modals/manager/ImportActualModal.tsx @@ -9,11 +9,14 @@ import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { importBudget } from '../../../budgets/budgetsSlice'; -import { useDispatch } from '../../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../../common/Modal'; - +import { importBudget } from '@desktop-client/budgets/budgetsSlice'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useDispatch } from '@desktop-client/redux'; function getErrorMessage(error: string): string { switch (error) { diff --git a/packages/desktop-client/src/components/modals/manager/ImportModal.tsx b/packages/desktop-client/src/components/modals/manager/ImportModal.tsx index 4584d1516e..dee728b00b 100644 --- a/packages/desktop-client/src/components/modals/manager/ImportModal.tsx +++ b/packages/desktop-client/src/components/modals/manager/ImportModal.tsx @@ -8,9 +8,13 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { pushModal } from '../../../modals/modalsSlice'; -import { useDispatch } from '../../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../../common/Modal'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; function getErrorMessage(error: 'not-ynab4' | boolean) { switch (error) { diff --git a/packages/desktop-client/src/components/modals/manager/ImportYNAB4Modal.tsx b/packages/desktop-client/src/components/modals/manager/ImportYNAB4Modal.tsx index 8d892a1acc..dfa72e3413 100644 --- a/packages/desktop-client/src/components/modals/manager/ImportYNAB4Modal.tsx +++ b/packages/desktop-client/src/components/modals/manager/ImportYNAB4Modal.tsx @@ -9,11 +9,14 @@ import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { importBudget } from '../../../budgets/budgetsSlice'; -import { useDispatch } from '../../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../../common/Modal'; - +import { importBudget } from '@desktop-client/budgets/budgetsSlice'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useDispatch } from '@desktop-client/redux'; function getErrorMessage(error: string): string { switch (error) { diff --git a/packages/desktop-client/src/components/modals/manager/ImportYNAB5Modal.tsx b/packages/desktop-client/src/components/modals/manager/ImportYNAB5Modal.tsx index 7836e34f20..4be9036357 100644 --- a/packages/desktop-client/src/components/modals/manager/ImportYNAB5Modal.tsx +++ b/packages/desktop-client/src/components/modals/manager/ImportYNAB5Modal.tsx @@ -9,12 +9,15 @@ import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { importBudget } from '../../../budgets/budgetsSlice'; -import { useDispatch } from '../../../redux'; -import { Link } from '../../common/Link'; -import { Modal, ModalCloseButton, ModalHeader } from '../../common/Modal'; - +import { importBudget } from '@desktop-client/budgets/budgetsSlice'; +import { Link } from '@desktop-client/components/common/Link'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useDispatch } from '@desktop-client/redux'; function getErrorMessage(error: string): string { switch (error) { diff --git a/packages/desktop-client/src/components/payees/CategoryLearning.tsx b/packages/desktop-client/src/components/payees/CategoryLearning.tsx index 653d827213..6300e0d0df 100644 --- a/packages/desktop-client/src/components/payees/CategoryLearning.tsx +++ b/packages/desktop-client/src/components/payees/CategoryLearning.tsx @@ -4,9 +4,12 @@ import { Trans, useTranslation } from 'react-i18next'; import { Button } from '@actual-app/components/button'; import { Paragraph } from '@actual-app/components/paragraph'; -import { Link } from '../common/Link'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; - +import { Link } from '@desktop-client/components/common/Link'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; export function CategoryLearning() { diff --git a/packages/desktop-client/src/components/payees/ManagePayees.tsx b/packages/desktop-client/src/components/payees/ManagePayees.tsx index 7731095415..37c08f85a2 100644 --- a/packages/desktop-client/src/components/payees/ManagePayees.tsx +++ b/packages/desktop-client/src/components/payees/ManagePayees.tsx @@ -18,20 +18,23 @@ import { getNormalisedString } from 'loot-core/shared/normalisation'; import { type Diff, groupById } from 'loot-core/shared/util'; import { type PayeeEntity } from 'loot-core/types/models'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Search } from '../common/Search'; -import { TableHeader, Cell, SelectCell } from '../table'; - import { PayeeMenu } from './PayeeMenu'; import { PayeeTable } from './PayeeTable'; +import { Search } from '@desktop-client/components/common/Search'; +import { + TableHeader, + Cell, + SelectCell, +} from '@desktop-client/components/table'; import { useSelected, SelectedProvider, useSelectedDispatch, useSelectedItems, } from '@desktop-client/hooks/useSelected'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; const getPayeesById = memoizeOne((payees: PayeeEntity[]) => groupById(payees)); diff --git a/packages/desktop-client/src/components/payees/ManagePayeesPage.tsx b/packages/desktop-client/src/components/payees/ManagePayeesPage.tsx index c4bec9ffe4..9652de9042 100644 --- a/packages/desktop-client/src/components/payees/ManagePayeesPage.tsx +++ b/packages/desktop-client/src/components/payees/ManagePayeesPage.tsx @@ -4,10 +4,10 @@ import { useLocation } from 'react-router-dom'; import { type PayeeEntity } from 'loot-core/types/models'; -import { Page } from '../Page'; - import { ManagePayeesWithData } from './ManagePayeesWithData'; +import { Page } from '@desktop-client/components/Page'; + export function ManagePayeesPage() { const { t } = useTranslation(); const location = useLocation(); diff --git a/packages/desktop-client/src/components/payees/ManagePayeesWithData.tsx b/packages/desktop-client/src/components/payees/ManagePayeesWithData.tsx index 82785b7ac1..bbad255d34 100644 --- a/packages/desktop-client/src/components/payees/ManagePayeesWithData.tsx +++ b/packages/desktop-client/src/components/payees/ManagePayeesWithData.tsx @@ -6,13 +6,15 @@ import { type UndoState } from 'loot-core/server/undo'; import { applyChanges, type Diff } from 'loot-core/shared/util'; import { type NewRuleEntity, type PayeeEntity } from 'loot-core/types/models'; -import { pushModal } from '../../modals/modalsSlice'; -import { getPayees, initiallyLoadPayees } from '../../queries/queriesSlice'; -import { useDispatch } from '../../redux'; - import { ManagePayees } from './ManagePayees'; import { usePayees } from '@desktop-client/hooks/usePayees'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { + getPayees, + initiallyLoadPayees, +} from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; type ManagePayeesWithDataProps = { initialSelectedIds: string[]; diff --git a/packages/desktop-client/src/components/payees/PayeeTable.tsx b/packages/desktop-client/src/components/payees/PayeeTable.tsx index 62ac70d7bb..a8f38f02ce 100644 --- a/packages/desktop-client/src/components/payees/PayeeTable.tsx +++ b/packages/desktop-client/src/components/payees/PayeeTable.tsx @@ -12,10 +12,9 @@ import { View } from '@actual-app/components/view'; import { type PayeeEntity } from 'loot-core/types/models'; -import { useTableNavigator, Table } from '../table'; - import { PayeeTableRow } from './PayeeTableRow'; +import { useTableNavigator, Table } from '@desktop-client/components/table'; import { useSelectedItems } from '@desktop-client/hooks/useSelected'; // Table items require an ID to work, it's optional in the loot-core diff --git a/packages/desktop-client/src/components/payees/PayeeTableRow.tsx b/packages/desktop-client/src/components/payees/PayeeTableRow.tsx index c3ebff2803..19339d01b2 100644 --- a/packages/desktop-client/src/components/payees/PayeeTableRow.tsx +++ b/packages/desktop-client/src/components/payees/PayeeTableRow.tsx @@ -22,8 +22,7 @@ import { InputCell, Row, SelectCell, -} from '../table'; - +} from '@desktop-client/components/table'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useSelectedDispatch } from '@desktop-client/hooks/useSelected'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; diff --git a/packages/desktop-client/src/components/reports/CategorySelector.tsx b/packages/desktop-client/src/components/reports/CategorySelector.tsx index e4223e4bcf..6058a6416a 100644 --- a/packages/desktop-client/src/components/reports/CategorySelector.tsx +++ b/packages/desktop-client/src/components/reports/CategorySelector.tsx @@ -17,10 +17,10 @@ import { type CategoryGroupEntity, } from 'loot-core/types/models'; -import { Checkbox } from '../forms'; - import { GraphButton } from './GraphButton'; +import { Checkbox } from '@desktop-client/components/forms'; + type CategorySelectorProps = { categoryGroups: Array; selectedCategories: CategoryEntity[]; diff --git a/packages/desktop-client/src/components/reports/Header.tsx b/packages/desktop-client/src/components/reports/Header.tsx index 229c303677..e153c7ea9a 100644 --- a/packages/desktop-client/src/components/reports/Header.tsx +++ b/packages/desktop-client/src/components/reports/Header.tsx @@ -14,9 +14,6 @@ import { } from 'loot-core/types/models'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { AppliedFilters } from '../filters/AppliedFilters'; -import { FilterButton } from '../filters/FiltersMenu'; - import { getLiveRange } from './getLiveRange'; import { calculateTimeRange, @@ -26,6 +23,8 @@ import { validateStart, } from './reportRanges'; +import { AppliedFilters } from '@desktop-client/components/filters/AppliedFilters'; +import { FilterButton } from '@desktop-client/components/filters/FiltersMenu'; import { useLocale } from '@desktop-client/hooks/useLocale'; type HeaderProps = { diff --git a/packages/desktop-client/src/components/reports/Overview.tsx b/packages/desktop-client/src/components/reports/Overview.tsx index 52d189fbc6..2ccab666b1 100644 --- a/packages/desktop-client/src/components/reports/Overview.tsx +++ b/packages/desktop-client/src/components/reports/Overview.tsx @@ -21,14 +21,6 @@ import { type Widget, } from 'loot-core/types/models'; -import { - addNotification, - removeNotification, -} from '../../notifications/notificationsSlice'; -import { useDispatch } from '../../redux'; -import { MOBILE_NAV_HEIGHT } from '../mobile/MobileNavTabs'; -import { MobilePageHeader, Page, PageHeader } from '../Page'; - import { NON_DRAGGABLE_AREA_CLASS_NAME } from './constants'; import { LoadingIndicator } from './LoadingIndicator'; import { CalendarCard } from './reports/CalendarCard'; @@ -40,12 +32,23 @@ import { SpendingCard } from './reports/SpendingCard'; import './overview.scss'; import { SummaryCard } from './reports/SummaryCard'; +import { MOBILE_NAV_HEIGHT } from '@desktop-client/components/mobile/MobileNavTabs'; +import { + MobilePageHeader, + Page, + PageHeader, +} from '@desktop-client/components/Page'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useDashboard } from '@desktop-client/hooks/useDashboard'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useReports } from '@desktop-client/hooks/useReports'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useUndo } from '@desktop-client/hooks/useUndo'; +import { + addNotification, + removeNotification, +} from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; const ResponsiveGridLayout = WidthProvider(Responsive); diff --git a/packages/desktop-client/src/components/reports/ReportSidebar.tsx b/packages/desktop-client/src/components/reports/ReportSidebar.tsx index cdd1f0362e..da28af5ef8 100644 --- a/packages/desktop-client/src/components/reports/ReportSidebar.tsx +++ b/packages/desktop-client/src/components/reports/ReportSidebar.tsx @@ -22,8 +22,6 @@ import { } from 'loot-core/types/models'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { Information } from '../alerts'; - import { CategorySelector } from './CategorySelector'; import { defaultsList, disabledList } from './disabledList'; import { getLiveRange } from './getLiveRange'; @@ -32,6 +30,8 @@ import { type dateRangeProps, ReportOptions } from './ReportOptions'; import { validateEnd, validateStart } from './reportRanges'; import { setSessionReport } from './setSessionReport'; +import { Information } from '@desktop-client/components/alerts'; + type ReportSidebarProps = { customReportItems: CustomReportEntity; selectedCategories: CategoryEntity[]; diff --git a/packages/desktop-client/src/components/reports/ReportSummary.tsx b/packages/desktop-client/src/components/reports/ReportSummary.tsx index e041b996a1..3c514e459a 100644 --- a/packages/desktop-client/src/components/reports/ReportSummary.tsx +++ b/packages/desktop-client/src/components/reports/ReportSummary.tsx @@ -17,10 +17,9 @@ import { type DataEntity, } from 'loot-core/types/models'; -import { PrivacyFilter } from '../PrivacyFilter'; - import { ReportOptions } from './ReportOptions'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; import { useLocale } from '@desktop-client/hooks/useLocale'; type ReportSummaryProps = { diff --git a/packages/desktop-client/src/components/reports/ReportTopbar.tsx b/packages/desktop-client/src/components/reports/ReportTopbar.tsx index 8a3d6ff3c3..f6d3da969a 100644 --- a/packages/desktop-client/src/components/reports/ReportTopbar.tsx +++ b/packages/desktop-client/src/components/reports/ReportTopbar.tsx @@ -23,13 +23,13 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { FilterButton } from '../filters/FiltersMenu'; - import { GraphButton } from './GraphButton'; import { SaveReport } from './SaveReport'; import { setSessionReport } from './setSessionReport'; import { SnapshotButton } from './SnapshotButton'; +import { FilterButton } from '@desktop-client/components/filters/FiltersMenu'; + type ReportTopbarProps = { customReportItems: CustomReportEntity; report: CustomReportEntity; diff --git a/packages/desktop-client/src/components/reports/SaveReport.tsx b/packages/desktop-client/src/components/reports/SaveReport.tsx index 2b9b41f2dc..2c6c5d1d9e 100644 --- a/packages/desktop-client/src/components/reports/SaveReport.tsx +++ b/packages/desktop-client/src/components/reports/SaveReport.tsx @@ -9,13 +9,13 @@ import { View } from '@actual-app/components/view'; import { send, sendCatch } from 'loot-core/platform/client/fetch'; import { type CustomReportEntity } from 'loot-core/types/models'; -import { useReports } from '../../hooks/useReports'; - import { SaveReportChoose } from './SaveReportChoose'; import { SaveReportDelete } from './SaveReportDelete'; import { SaveReportMenu } from './SaveReportMenu'; import { SaveReportName } from './SaveReportName'; +import { useReports } from '@desktop-client/hooks/useReports'; + type SaveReportProps = { customReportItems: T; report: CustomReportEntity; diff --git a/packages/desktop-client/src/components/reports/SaveReportChoose.tsx b/packages/desktop-client/src/components/reports/SaveReportChoose.tsx index 889592cf0a..446a169693 100644 --- a/packages/desktop-client/src/components/reports/SaveReportChoose.tsx +++ b/packages/desktop-client/src/components/reports/SaveReportChoose.tsx @@ -8,7 +8,7 @@ import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; import { View } from '@actual-app/components/view'; -import { GenericInput } from '../util/GenericInput'; +import { GenericInput } from '@desktop-client/components/util/GenericInput'; type SaveReportChooseProps = { onApply: (cond: string) => void; diff --git a/packages/desktop-client/src/components/reports/SaveReportName.tsx b/packages/desktop-client/src/components/reports/SaveReportName.tsx index 542cbdf23e..e9dc237416 100644 --- a/packages/desktop-client/src/components/reports/SaveReportName.tsx +++ b/packages/desktop-client/src/components/reports/SaveReportName.tsx @@ -11,7 +11,7 @@ import { View } from '@actual-app/components/view'; import { type CustomReportEntity } from 'loot-core/types/models'; -import { FormField, FormLabel } from '../forms'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; type SaveReportNameProps = { menuItem: string; diff --git a/packages/desktop-client/src/components/reports/SummaryNumber.tsx b/packages/desktop-client/src/components/reports/SummaryNumber.tsx index 3d4fce40cc..45fcd3c820 100644 --- a/packages/desktop-client/src/components/reports/SummaryNumber.tsx +++ b/packages/desktop-client/src/components/reports/SummaryNumber.tsx @@ -5,11 +5,10 @@ import { debounce } from 'debounce'; import { amountToCurrency } from 'loot-core/shared/util'; -import { PrivacyFilter } from '../PrivacyFilter'; - import { chartTheme } from './chart-theme'; import { LoadingIndicator } from './LoadingIndicator'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; import { useMergedRefs } from '@desktop-client/hooks/useMergedRefs'; import { useResizeObserver } from '@desktop-client/hooks/useResizeObserver'; diff --git a/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx b/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx index c01bd382e2..7facee1e27 100644 --- a/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx @@ -24,11 +24,10 @@ import { type DataEntity, } from 'loot-core/types/models'; -import { Container } from '../Container'; - import { adjustTextSize } from './adjustTextSize'; import { renderCustomLabel } from './renderCustomLabel'; +import { Container } from '@desktop-client/components/reports/Container'; import { usePrivacyMode } from '@desktop-client/hooks/usePrivacyMode'; type PayloadItem = { diff --git a/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx b/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx index 8e88a17dcb..166fa1782f 100644 --- a/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx @@ -28,14 +28,13 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { Container } from '../Container'; -import { getCustomTick } from '../getCustomTick'; -import { numberFormatterTooltip } from '../numberFormatter'; - import { adjustTextSize } from './adjustTextSize'; import { renderCustomLabel } from './renderCustomLabel'; import { showActivity } from './showActivity'; +import { Container } from '@desktop-client/components/reports/Container'; +import { getCustomTick } from '@desktop-client/components/reports/getCustomTick'; +import { numberFormatterTooltip } from '@desktop-client/components/reports/numberFormatter'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; diff --git a/packages/desktop-client/src/components/reports/graphs/BarLineGraph.tsx b/packages/desktop-client/src/components/reports/graphs/BarLineGraph.tsx index 85a6122ae0..12f9de2e71 100644 --- a/packages/desktop-client/src/components/reports/graphs/BarLineGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/BarLineGraph.tsx @@ -18,9 +18,9 @@ import { import { amountToCurrencyNoDecimal } from 'loot-core/shared/util'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { Container } from '../Container'; -import { numberFormatterTooltip } from '../numberFormatter'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { Container } from '@desktop-client/components/reports/Container'; +import { numberFormatterTooltip } from '@desktop-client/components/reports/numberFormatter'; type PayloadItem = { payload: { diff --git a/packages/desktop-client/src/components/reports/graphs/CalendarGraph.tsx b/packages/desktop-client/src/components/reports/graphs/CalendarGraph.tsx index 0aba0f0e05..c4a9df8dc8 100644 --- a/packages/desktop-client/src/components/reports/graphs/CalendarGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/CalendarGraph.tsx @@ -18,9 +18,8 @@ import { import { amountToCurrency } from 'loot-core/shared/util'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { chartTheme } from '../chart-theme'; - +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { chartTheme } from '@desktop-client/components/reports/chart-theme'; import { useResizeObserver } from '@desktop-client/hooks/useResizeObserver'; type CalendarGraphProps = { diff --git a/packages/desktop-client/src/components/reports/graphs/CashFlowGraph.tsx b/packages/desktop-client/src/components/reports/graphs/CashFlowGraph.tsx index c56960c9f9..a73c44f975 100644 --- a/packages/desktop-client/src/components/reports/graphs/CashFlowGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/CashFlowGraph.tsx @@ -23,9 +23,8 @@ import { amountToCurrencyNoDecimal, } from 'loot-core/shared/util'; -import { chartTheme } from '../chart-theme'; -import { Container } from '../Container'; - +import { chartTheme } from '@desktop-client/components/reports/chart-theme'; +import { Container } from '@desktop-client/components/reports/Container'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { usePrivacyMode } from '@desktop-client/hooks/usePrivacyMode'; diff --git a/packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx b/packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx index 4a7ad9c05f..2f4ae515c9 100644 --- a/packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx @@ -11,13 +11,12 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { Container } from '../Container'; - import { adjustTextSize } from './adjustTextSize'; import { renderCustomLabel } from './renderCustomLabel'; import { showActivity } from './showActivity'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { Container } from '@desktop-client/components/reports/Container'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; diff --git a/packages/desktop-client/src/components/reports/graphs/LineGraph.tsx b/packages/desktop-client/src/components/reports/graphs/LineGraph.tsx index ef8ba3da56..9d17f17aeb 100644 --- a/packages/desktop-client/src/components/reports/graphs/LineGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/LineGraph.tsx @@ -25,12 +25,11 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { Container } from '../Container'; -import { getCustomTick } from '../getCustomTick'; -import { numberFormatterTooltip } from '../numberFormatter'; - import { showActivity } from './showActivity'; +import { Container } from '@desktop-client/components/reports/Container'; +import { getCustomTick } from '@desktop-client/components/reports/getCustomTick'; +import { numberFormatterTooltip } from '@desktop-client/components/reports/numberFormatter'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; diff --git a/packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx b/packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx index f78f539f45..2d75d426b6 100644 --- a/packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx @@ -18,9 +18,8 @@ import { import { amountToCurrencyNoDecimal } from 'loot-core/shared/util'; -import { Container } from '../Container'; -import { numberFormatterTooltip } from '../numberFormatter'; - +import { Container } from '@desktop-client/components/reports/Container'; +import { numberFormatterTooltip } from '@desktop-client/components/reports/numberFormatter'; import { usePrivacyMode } from '@desktop-client/hooks/usePrivacyMode'; type NetWorthGraphProps = { diff --git a/packages/desktop-client/src/components/reports/graphs/SpendingGraph.tsx b/packages/desktop-client/src/components/reports/graphs/SpendingGraph.tsx index 2e9237bbd8..a612594d14 100644 --- a/packages/desktop-client/src/components/reports/graphs/SpendingGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/SpendingGraph.tsx @@ -21,9 +21,8 @@ import { } from 'loot-core/shared/util'; import { type SpendingEntity } from 'loot-core/types/models'; -import { Container } from '../Container'; -import { numberFormatterTooltip } from '../numberFormatter'; - +import { Container } from '@desktop-client/components/reports/Container'; +import { numberFormatterTooltip } from '@desktop-client/components/reports/numberFormatter'; import { usePrivacyMode } from '@desktop-client/hooks/usePrivacyMode'; type PayloadItem = { diff --git a/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx b/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx index 7109e6cd12..4ec4b7275f 100644 --- a/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx @@ -26,13 +26,12 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { Container } from '../Container'; -import { getCustomTick } from '../getCustomTick'; -import { numberFormatterTooltip } from '../numberFormatter'; - import { renderCustomLabel } from './renderCustomLabel'; import { showActivity } from './showActivity'; +import { Container } from '@desktop-client/components/reports/Container'; +import { getCustomTick } from '@desktop-client/components/reports/getCustomTick'; +import { numberFormatterTooltip } from '@desktop-client/components/reports/numberFormatter'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; diff --git a/packages/desktop-client/src/components/reports/graphs/renderCustomLabel.tsx b/packages/desktop-client/src/components/reports/graphs/renderCustomLabel.tsx index 88016a0b7e..a1ed67aef5 100644 --- a/packages/desktop-client/src/components/reports/graphs/renderCustomLabel.tsx +++ b/packages/desktop-client/src/components/reports/graphs/renderCustomLabel.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { theme } from '@actual-app/components/theme'; -import { PrivacyFilter } from '../../PrivacyFilter'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; export const renderCustomLabel = ( calcX: number, diff --git a/packages/desktop-client/src/components/reports/graphs/showActivity.ts b/packages/desktop-client/src/components/reports/graphs/showActivity.ts index c41514cda1..20be0a604a 100644 --- a/packages/desktop-client/src/components/reports/graphs/showActivity.ts +++ b/packages/desktop-client/src/components/reports/graphs/showActivity.ts @@ -9,7 +9,7 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { ReportOptions } from '../ReportOptions'; +import { ReportOptions } from '@desktop-client/components/reports/ReportOptions'; type showActivityProps = { navigate: NavigateFunction; diff --git a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableHeader.tsx b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableHeader.tsx index f0472ec271..00d86a25ce 100644 --- a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableHeader.tsx +++ b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableHeader.tsx @@ -13,8 +13,8 @@ import { type IntervalEntity, } from 'loot-core/types/models'; -import { Row, Cell } from '../../../table'; -import { ReportOptions } from '../../ReportOptions'; +import { ReportOptions } from '@desktop-client/components/reports/ReportOptions'; +import { Row, Cell } from '@desktop-client/components/table'; type ReportTableHeaderProps = { groupBy: string; diff --git a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableList.tsx b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableList.tsx index 8af0b3e3a0..baf64d1f79 100644 --- a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableList.tsx +++ b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableList.tsx @@ -5,11 +5,11 @@ import { View } from '@actual-app/components/view'; import { type GroupedEntity, type DataEntity } from 'loot-core/types/models'; -import { Row } from '../../../table'; - import { RenderTableRow } from './RenderTableRow'; import { type renderRowProps } from './ReportTable'; +import { Row } from '@desktop-client/components/table'; + type ReportTableListProps = { data: DataEntity; mode: string; diff --git a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableRow.tsx b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableRow.tsx index 9af2b98005..2ca507f3e7 100644 --- a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableRow.tsx +++ b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableRow.tsx @@ -21,9 +21,8 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { Row, Cell } from '../../../table'; -import { showActivity } from '../showActivity'; - +import { showActivity } from '@desktop-client/components/reports/graphs/showActivity'; +import { Row, Cell } from '@desktop-client/components/table'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; diff --git a/packages/desktop-client/src/components/reports/index.tsx b/packages/desktop-client/src/components/reports/index.tsx index b79de48f61..678fbefb07 100644 --- a/packages/desktop-client/src/components/reports/index.tsx +++ b/packages/desktop-client/src/components/reports/index.tsx @@ -2,7 +2,7 @@ import { useTranslation } from 'react-i18next'; import { View } from '@actual-app/components/view'; -import { LoadComponent } from '../util/LoadComponent'; +import { LoadComponent } from '@desktop-client/components/util/LoadComponent'; export function Reports() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/reports/reports/Calendar.tsx b/packages/desktop-client/src/components/reports/reports/Calendar.tsx index 8cdc852a1d..221ee4e568 100644 --- a/packages/desktop-client/src/components/reports/reports/Calendar.tsx +++ b/packages/desktop-client/src/components/reports/reports/Calendar.tsx @@ -37,28 +37,29 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { EditablePageHeaderTitle } from '../../EditablePageHeaderTitle'; -import { MobileBackButton } from '../../mobile/MobileBackButton'; -import { TransactionList as TransactionListMobile } from '../../mobile/transactions/TransactionList'; -import { MobilePageHeader, Page, PageHeader } from '../../Page'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { type TableHandleRef } from '../../table'; -import { TransactionList } from '../../transactions/TransactionList'; -import { chartTheme } from '../chart-theme'; -import { DateRange } from '../DateRange'; -import { CalendarGraph } from '../graphs/CalendarGraph'; -import { Header } from '../Header'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { calculateTimeRange } from '../reportRanges'; +import { EditablePageHeaderTitle } from '@desktop-client/components/EditablePageHeaderTitle'; +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { TransactionList as TransactionListMobile } from '@desktop-client/components/mobile/transactions/TransactionList'; +import { + MobilePageHeader, + Page, + PageHeader, +} from '@desktop-client/components/Page'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { chartTheme } from '@desktop-client/components/reports/chart-theme'; +import { DateRange } from '@desktop-client/components/reports/DateRange'; +import { CalendarGraph } from '@desktop-client/components/reports/graphs/CalendarGraph'; +import { Header } from '@desktop-client/components/reports/Header'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { calculateTimeRange } from '@desktop-client/components/reports/reportRanges'; import { type CalendarDataType, calendarSpreadsheet, -} from '../spreadsheets/calendar-spreadsheet'; -import { useReport } from '../useReport'; -import { fromDateRepr } from '../util'; - +} from '@desktop-client/components/reports/spreadsheets/calendar-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; +import { fromDateRepr } from '@desktop-client/components/reports/util'; +import { type TableHandleRef } from '@desktop-client/components/table'; +import { TransactionList } from '@desktop-client/components/transactions/TransactionList'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { SchedulesProvider } from '@desktop-client/hooks/useCachedSchedules'; import { useCategories } from '@desktop-client/hooks/useCategories'; @@ -74,6 +75,8 @@ import { SplitsExpandedProvider } from '@desktop-client/hooks/useSplitsExpanded' import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useTransactions } from '@desktop-client/hooks/useTransactions'; import { useWidget } from '@desktop-client/hooks/useWidget'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; const CHEVRON_HEIGHT = 42; const SUMMARY_HEIGHT = 140; diff --git a/packages/desktop-client/src/components/reports/reports/CalendarCard.tsx b/packages/desktop-client/src/components/reports/reports/CalendarCard.tsx index 20d6fafcb2..346062356c 100644 --- a/packages/desktop-client/src/components/reports/reports/CalendarCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/CalendarCard.tsx @@ -29,20 +29,19 @@ import { amountToCurrency } from 'loot-core/shared/util'; import { type CalendarWidget } from 'loot-core/types/models'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { chartTheme } from '../chart-theme'; -import { DateRange } from '../DateRange'; -import { CalendarGraph } from '../graphs/CalendarGraph'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { ReportCard } from '../ReportCard'; -import { ReportCardName } from '../ReportCardName'; -import { calculateTimeRange } from '../reportRanges'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { chartTheme } from '@desktop-client/components/reports/chart-theme'; +import { DateRange } from '@desktop-client/components/reports/DateRange'; +import { CalendarGraph } from '@desktop-client/components/reports/graphs/CalendarGraph'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { ReportCard } from '@desktop-client/components/reports/ReportCard'; +import { ReportCardName } from '@desktop-client/components/reports/ReportCardName'; +import { calculateTimeRange } from '@desktop-client/components/reports/reportRanges'; import { type CalendarDataType, calendarSpreadsheet, -} from '../spreadsheets/calendar-spreadsheet'; -import { useReport } from '../useReport'; - +} from '@desktop-client/components/reports/spreadsheets/calendar-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; import { useMergedRefs } from '@desktop-client/hooks/useMergedRefs'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useResizeObserver } from '@desktop-client/hooks/useResizeObserver'; diff --git a/packages/desktop-client/src/components/reports/reports/CashFlow.tsx b/packages/desktop-client/src/components/reports/reports/CashFlow.tsx index db1edc0b97..f1a3314f7e 100644 --- a/packages/desktop-client/src/components/reports/reports/CashFlow.tsx +++ b/packages/desktop-client/src/components/reports/reports/CashFlow.tsx @@ -21,25 +21,28 @@ import { type TimeFrame, } from 'loot-core/types/models'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { EditablePageHeaderTitle } from '../../EditablePageHeaderTitle'; -import { MobileBackButton } from '../../mobile/MobileBackButton'; -import { MobilePageHeader, Page, PageHeader } from '../../Page'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { Change } from '../Change'; -import { CashFlowGraph } from '../graphs/CashFlowGraph'; -import { Header } from '../Header'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { calculateTimeRange } from '../reportRanges'; -import { cashFlowByDate } from '../spreadsheets/cash-flow-spreadsheet'; -import { useReport } from '../useReport'; - +import { EditablePageHeaderTitle } from '@desktop-client/components/EditablePageHeaderTitle'; +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { + MobilePageHeader, + Page, + PageHeader, +} from '@desktop-client/components/Page'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { Change } from '@desktop-client/components/reports/Change'; +import { CashFlowGraph } from '@desktop-client/components/reports/graphs/CashFlowGraph'; +import { Header } from '@desktop-client/components/reports/Header'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { calculateTimeRange } from '@desktop-client/components/reports/reportRanges'; +import { cashFlowByDate } from '@desktop-client/components/reports/spreadsheets/cash-flow-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useRuleConditionFilters } from '@desktop-client/hooks/useRuleConditionFilters'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useWidget } from '@desktop-client/hooks/useWidget'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; export const defaultTimeFrame = { start: monthUtils.dayFromDate(monthUtils.currentMonth()), diff --git a/packages/desktop-client/src/components/reports/reports/CashFlowCard.tsx b/packages/desktop-client/src/components/reports/reports/CashFlowCard.tsx index 2de7e90ec9..5956d502b2 100644 --- a/packages/desktop-client/src/components/reports/reports/CashFlowCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/CashFlowCard.tsx @@ -8,20 +8,20 @@ import { Bar, BarChart, LabelList, ResponsiveContainer } from 'recharts'; import { integerToCurrency } from 'loot-core/shared/util'; import { type CashFlowWidget } from 'loot-core/types/models'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { Change } from '../Change'; -import { chartTheme } from '../chart-theme'; -import { Container } from '../Container'; -import { DateRange } from '../DateRange'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { ReportCard } from '../ReportCard'; -import { ReportCardName } from '../ReportCardName'; -import { calculateTimeRange } from '../reportRanges'; -import { simpleCashFlow } from '../spreadsheets/cash-flow-spreadsheet'; -import { useReport } from '../useReport'; - import { defaultTimeFrame } from './CashFlow'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { Change } from '@desktop-client/components/reports/Change'; +import { chartTheme } from '@desktop-client/components/reports/chart-theme'; +import { Container } from '@desktop-client/components/reports/Container'; +import { DateRange } from '@desktop-client/components/reports/DateRange'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { ReportCard } from '@desktop-client/components/reports/ReportCard'; +import { ReportCardName } from '@desktop-client/components/reports/ReportCardName'; +import { calculateTimeRange } from '@desktop-client/components/reports/reportRanges'; +import { simpleCashFlow } from '@desktop-client/components/reports/spreadsheets/cash-flow-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; + type CustomLabelProps = { value?: number; name: string; diff --git a/packages/desktop-client/src/components/reports/reports/CustomReport.tsx b/packages/desktop-client/src/components/reports/reports/CustomReport.tsx index fb31483397..4395966817 100644 --- a/packages/desktop-client/src/components/reports/reports/CustomReport.tsx +++ b/packages/desktop-client/src/components/reports/reports/CustomReport.tsx @@ -24,36 +24,42 @@ import { } from 'loot-core/types/models'; import { type TransObjectLiteral } from 'loot-core/types/util'; -import { Warning } from '../../alerts'; -import { AppliedFilters } from '../../filters/AppliedFilters'; -import { MobileBackButton } from '../../mobile/MobileBackButton'; -import { MobilePageHeader, Page, PageHeader } from '../../Page'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { ChooseGraph } from '../ChooseGraph'; +import { Warning } from '@desktop-client/components/alerts'; +import { AppliedFilters } from '@desktop-client/components/filters/AppliedFilters'; +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { + MobilePageHeader, + Page, + PageHeader, +} from '@desktop-client/components/Page'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { ChooseGraph } from '@desktop-client/components/reports/ChooseGraph'; import { defaultsGraphList, defaultsList, disabledGraphList, disabledLegendLabel, disabledList, -} from '../disabledList'; -import { getLiveRange } from '../getLiveRange'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { ReportLegend } from '../ReportLegend'; +} from '@desktop-client/components/reports/disabledList'; +import { getLiveRange } from '@desktop-client/components/reports/getLiveRange'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { ReportLegend } from '@desktop-client/components/reports/ReportLegend'; import { ReportOptions, defaultReport, type dateRangeProps, -} from '../ReportOptions'; -import { ReportSidebar } from '../ReportSidebar'; -import { ReportSummary } from '../ReportSummary'; -import { ReportTopbar } from '../ReportTopbar'; -import { setSessionReport } from '../setSessionReport'; -import { createCustomSpreadsheet } from '../spreadsheets/custom-spreadsheet'; -import { createGroupedSpreadsheet } from '../spreadsheets/grouped-spreadsheet'; -import { useReport } from '../useReport'; -import { calculateHasWarning, fromDateRepr } from '../util'; - +} from '@desktop-client/components/reports/ReportOptions'; +import { ReportSidebar } from '@desktop-client/components/reports/ReportSidebar'; +import { ReportSummary } from '@desktop-client/components/reports/ReportSummary'; +import { ReportTopbar } from '@desktop-client/components/reports/ReportTopbar'; +import { setSessionReport } from '@desktop-client/components/reports/setSessionReport'; +import { createCustomSpreadsheet } from '@desktop-client/components/reports/spreadsheets/custom-spreadsheet'; +import { createGroupedSpreadsheet } from '@desktop-client/components/reports/spreadsheets/grouped-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; +import { + calculateHasWarning, + fromDateRepr, +} from '@desktop-client/components/reports/util'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useLocale } from '@desktop-client/hooks/useLocale'; diff --git a/packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx b/packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx index b27c7a22a6..57ab8eb0fc 100644 --- a/packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx +++ b/packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx @@ -12,20 +12,19 @@ import { send, sendCatch } from 'loot-core/platform/client/fetch'; import * as monthUtils from 'loot-core/shared/months'; import { type CustomReportEntity } from 'loot-core/types/models'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { DateRange } from '../DateRange'; -import { ReportCard } from '../ReportCard'; -import { ReportCardName } from '../ReportCardName'; -import { calculateHasWarning } from '../util'; - import { GetCardData } from './GetCardData'; import { MissingReportCard } from './MissingReportCard'; +import { DateRange } from '@desktop-client/components/reports/DateRange'; +import { ReportCard } from '@desktop-client/components/reports/ReportCard'; +import { ReportCardName } from '@desktop-client/components/reports/ReportCardName'; +import { calculateHasWarning } from '@desktop-client/components/reports/util'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { usePayees } from '@desktop-client/hooks/usePayees'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; type CustomReportListCardsProps = { isEditing?: boolean; diff --git a/packages/desktop-client/src/components/reports/reports/GetCardData.tsx b/packages/desktop-client/src/components/reports/reports/GetCardData.tsx index a3f97c57d6..2cd72ef3a7 100644 --- a/packages/desktop-client/src/components/reports/reports/GetCardData.tsx +++ b/packages/desktop-client/src/components/reports/reports/GetCardData.tsx @@ -17,13 +17,13 @@ import { } from 'loot-core/types/models'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { ChooseGraph } from '../ChooseGraph'; -import { getLiveRange } from '../getLiveRange'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { ReportOptions } from '../ReportOptions'; -import { createCustomSpreadsheet } from '../spreadsheets/custom-spreadsheet'; -import { createGroupedSpreadsheet } from '../spreadsheets/grouped-spreadsheet'; -import { useReport } from '../useReport'; +import { ChooseGraph } from '@desktop-client/components/reports/ChooseGraph'; +import { getLiveRange } from '@desktop-client/components/reports/getLiveRange'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { ReportOptions } from '@desktop-client/components/reports/ReportOptions'; +import { createCustomSpreadsheet } from '@desktop-client/components/reports/spreadsheets/custom-spreadsheet'; +import { createGroupedSpreadsheet } from '@desktop-client/components/reports/spreadsheets/grouped-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; function ErrorFallback() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/reports/reports/MarkdownCard.tsx b/packages/desktop-client/src/components/reports/reports/MarkdownCard.tsx index c260d53ed5..37f66c1942 100644 --- a/packages/desktop-client/src/components/reports/reports/MarkdownCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/MarkdownCard.tsx @@ -13,8 +13,8 @@ import rehypeExternalLinks from 'rehype-external-links'; import { type MarkdownWidget } from 'loot-core/types/models'; -import { NON_DRAGGABLE_AREA_CLASS_NAME } from '../constants'; -import { ReportCard } from '../ReportCard'; +import { NON_DRAGGABLE_AREA_CLASS_NAME } from '@desktop-client/components/reports/constants'; +import { ReportCard } from '@desktop-client/components/reports/ReportCard'; const markdownStyles = css({ paddingRight: 20, diff --git a/packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx b/packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx index b75aa522e6..aca5e39969 100644 --- a/packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx @@ -2,7 +2,7 @@ import React, { type ReactNode } from 'react'; import { View } from '@actual-app/components/view'; -import { ReportCard } from '../ReportCard'; +import { ReportCard } from '@desktop-client/components/reports/ReportCard'; type MissingReportCardProps = { isEditing?: boolean; diff --git a/packages/desktop-client/src/components/reports/reports/NetWorth.tsx b/packages/desktop-client/src/components/reports/reports/NetWorth.tsx index fa5f009c7b..8c705f7441 100644 --- a/packages/desktop-client/src/components/reports/reports/NetWorth.tsx +++ b/packages/desktop-client/src/components/reports/reports/NetWorth.tsx @@ -15,27 +15,30 @@ import * as monthUtils from 'loot-core/shared/months'; import { integerToCurrency } from 'loot-core/shared/util'; import { type TimeFrame, type NetWorthWidget } from 'loot-core/types/models'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { EditablePageHeaderTitle } from '../../EditablePageHeaderTitle'; -import { MobileBackButton } from '../../mobile/MobileBackButton'; -import { MobilePageHeader, Page, PageHeader } from '../../Page'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { Change } from '../Change'; -import { NetWorthGraph } from '../graphs/NetWorthGraph'; -import { Header } from '../Header'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { calculateTimeRange } from '../reportRanges'; -import { createSpreadsheet as netWorthSpreadsheet } from '../spreadsheets/net-worth-spreadsheet'; -import { useReport } from '../useReport'; -import { fromDateRepr } from '../util'; - +import { EditablePageHeaderTitle } from '@desktop-client/components/EditablePageHeaderTitle'; +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { + MobilePageHeader, + Page, + PageHeader, +} from '@desktop-client/components/Page'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { Change } from '@desktop-client/components/reports/Change'; +import { NetWorthGraph } from '@desktop-client/components/reports/graphs/NetWorthGraph'; +import { Header } from '@desktop-client/components/reports/Header'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { calculateTimeRange } from '@desktop-client/components/reports/reportRanges'; +import { createSpreadsheet as netWorthSpreadsheet } from '@desktop-client/components/reports/spreadsheets/net-worth-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; +import { fromDateRepr } from '@desktop-client/components/reports/util'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useRuleConditionFilters } from '@desktop-client/hooks/useRuleConditionFilters'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useWidget } from '@desktop-client/hooks/useWidget'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; export function NetWorth() { const params = useParams(); diff --git a/packages/desktop-client/src/components/reports/reports/NetWorthCard.tsx b/packages/desktop-client/src/components/reports/reports/NetWorthCard.tsx index ecaa3e54ac..52c3054c83 100644 --- a/packages/desktop-client/src/components/reports/reports/NetWorthCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/NetWorthCard.tsx @@ -12,17 +12,16 @@ import { type NetWorthWidget, } from 'loot-core/types/models'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { Change } from '../Change'; -import { DateRange } from '../DateRange'; -import { NetWorthGraph } from '../graphs/NetWorthGraph'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { ReportCard } from '../ReportCard'; -import { ReportCardName } from '../ReportCardName'; -import { calculateTimeRange } from '../reportRanges'; -import { createSpreadsheet as netWorthSpreadsheet } from '../spreadsheets/net-worth-spreadsheet'; -import { useReport } from '../useReport'; - +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { Change } from '@desktop-client/components/reports/Change'; +import { DateRange } from '@desktop-client/components/reports/DateRange'; +import { NetWorthGraph } from '@desktop-client/components/reports/graphs/NetWorthGraph'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { ReportCard } from '@desktop-client/components/reports/ReportCard'; +import { ReportCardName } from '@desktop-client/components/reports/ReportCardName'; +import { calculateTimeRange } from '@desktop-client/components/reports/reportRanges'; +import { createSpreadsheet as netWorthSpreadsheet } from '@desktop-client/components/reports/spreadsheets/net-worth-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; import { useLocale } from '@desktop-client/hooks/useLocale'; type NetWorthCardProps = { diff --git a/packages/desktop-client/src/components/reports/reports/Spending.tsx b/packages/desktop-client/src/components/reports/reports/Spending.tsx index 3b65e6b133..5b6cae0d4c 100644 --- a/packages/desktop-client/src/components/reports/reports/Spending.tsx +++ b/packages/desktop-client/src/components/reports/reports/Spending.tsx @@ -24,27 +24,30 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { EditablePageHeaderTitle } from '../../EditablePageHeaderTitle'; -import { AppliedFilters } from '../../filters/AppliedFilters'; -import { FilterButton } from '../../filters/FiltersMenu'; -import { MobileBackButton } from '../../mobile/MobileBackButton'; -import { MobilePageHeader, Page, PageHeader } from '../../Page'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { SpendingGraph } from '../graphs/SpendingGraph'; -import { LegendItem } from '../LegendItem'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { ModeButton } from '../ModeButton'; -import { calculateSpendingReportTimeRange } from '../reportRanges'; -import { createSpendingSpreadsheet } from '../spreadsheets/spending-spreadsheet'; -import { useReport } from '../useReport'; -import { fromDateRepr } from '../util'; - +import { EditablePageHeaderTitle } from '@desktop-client/components/EditablePageHeaderTitle'; +import { AppliedFilters } from '@desktop-client/components/filters/AppliedFilters'; +import { FilterButton } from '@desktop-client/components/filters/FiltersMenu'; +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { + MobilePageHeader, + Page, + PageHeader, +} from '@desktop-client/components/Page'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { SpendingGraph } from '@desktop-client/components/reports/graphs/SpendingGraph'; +import { LegendItem } from '@desktop-client/components/reports/LegendItem'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { ModeButton } from '@desktop-client/components/reports/ModeButton'; +import { calculateSpendingReportTimeRange } from '@desktop-client/components/reports/reportRanges'; +import { createSpendingSpreadsheet } from '@desktop-client/components/reports/spreadsheets/spending-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; +import { fromDateRepr } from '@desktop-client/components/reports/util'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useRuleConditionFilters } from '@desktop-client/hooks/useRuleConditionFilters'; import { useWidget } from '@desktop-client/hooks/useWidget'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; export function Spending() { const params = useParams(); diff --git a/packages/desktop-client/src/components/reports/reports/SpendingCard.tsx b/packages/desktop-client/src/components/reports/reports/SpendingCard.tsx index 79a64f4496..d54df5c31d 100644 --- a/packages/desktop-client/src/components/reports/reports/SpendingCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/SpendingCard.tsx @@ -10,15 +10,15 @@ import * as monthUtils from 'loot-core/shared/months'; import { amountToCurrency } from 'loot-core/shared/util'; import { type SpendingWidget } from 'loot-core/types/models'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { DateRange } from '../DateRange'; -import { SpendingGraph } from '../graphs/SpendingGraph'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { ReportCard } from '../ReportCard'; -import { ReportCardName } from '../ReportCardName'; -import { calculateSpendingReportTimeRange } from '../reportRanges'; -import { createSpendingSpreadsheet } from '../spreadsheets/spending-spreadsheet'; -import { useReport } from '../useReport'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { DateRange } from '@desktop-client/components/reports/DateRange'; +import { SpendingGraph } from '@desktop-client/components/reports/graphs/SpendingGraph'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { ReportCard } from '@desktop-client/components/reports/ReportCard'; +import { ReportCardName } from '@desktop-client/components/reports/ReportCardName'; +import { calculateSpendingReportTimeRange } from '@desktop-client/components/reports/reportRanges'; +import { createSpendingSpreadsheet } from '@desktop-client/components/reports/spreadsheets/spending-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; type SpendingCardProps = { widgetId: string; diff --git a/packages/desktop-client/src/components/reports/reports/Summary.tsx b/packages/desktop-client/src/components/reports/reports/Summary.tsx index ad32de33c0..e0f6b9f89c 100644 --- a/packages/desktop-client/src/components/reports/reports/Summary.tsx +++ b/packages/desktop-client/src/components/reports/reports/Summary.tsx @@ -24,29 +24,32 @@ import { type TimeFrame, } from 'loot-core/types/models'; -import { addNotification } from '../../../notifications/notificationsSlice'; -import { useDispatch } from '../../../redux'; -import { EditablePageHeaderTitle } from '../../EditablePageHeaderTitle'; -import { AppliedFilters } from '../../filters/AppliedFilters'; -import { FilterButton } from '../../filters/FiltersMenu'; -import { Checkbox } from '../../forms'; -import { MobileBackButton } from '../../mobile/MobileBackButton'; -import { FieldSelect } from '../../modals/EditRuleModal'; -import { MobilePageHeader, Page, PageHeader } from '../../Page'; -import { PrivacyFilter } from '../../PrivacyFilter'; -import { chartTheme } from '../chart-theme'; -import { Header } from '../Header'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { calculateTimeRange } from '../reportRanges'; -import { summarySpreadsheet } from '../spreadsheets/summary-spreadsheet'; -import { useReport } from '../useReport'; -import { fromDateRepr } from '../util'; - +import { EditablePageHeaderTitle } from '@desktop-client/components/EditablePageHeaderTitle'; +import { AppliedFilters } from '@desktop-client/components/filters/AppliedFilters'; +import { FilterButton } from '@desktop-client/components/filters/FiltersMenu'; +import { Checkbox } from '@desktop-client/components/forms'; +import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton'; +import { FieldSelect } from '@desktop-client/components/modals/EditRuleModal'; +import { + MobilePageHeader, + Page, + PageHeader, +} from '@desktop-client/components/Page'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { chartTheme } from '@desktop-client/components/reports/chart-theme'; +import { Header } from '@desktop-client/components/reports/Header'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { calculateTimeRange } from '@desktop-client/components/reports/reportRanges'; +import { summarySpreadsheet } from '@desktop-client/components/reports/spreadsheets/summary-spreadsheet'; +import { useReport } from '@desktop-client/components/reports/useReport'; +import { fromDateRepr } from '@desktop-client/components/reports/util'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useRuleConditionFilters } from '@desktop-client/hooks/useRuleConditionFilters'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; import { useWidget } from '@desktop-client/hooks/useWidget'; +import { addNotification } from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; export function Summary() { const params = useParams(); diff --git a/packages/desktop-client/src/components/reports/reports/SummaryCard.tsx b/packages/desktop-client/src/components/reports/reports/SummaryCard.tsx index dbfc9613d6..d7559c396b 100644 --- a/packages/desktop-client/src/components/reports/reports/SummaryCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/SummaryCard.tsx @@ -9,15 +9,14 @@ import { type SummaryWidget, } from 'loot-core/types/models'; -import { DateRange } from '../DateRange'; -import { LoadingIndicator } from '../LoadingIndicator'; -import { ReportCard } from '../ReportCard'; -import { ReportCardName } from '../ReportCardName'; -import { calculateTimeRange } from '../reportRanges'; -import { summarySpreadsheet } from '../spreadsheets/summary-spreadsheet'; -import { SummaryNumber } from '../SummaryNumber'; -import { useReport } from '../useReport'; - +import { DateRange } from '@desktop-client/components/reports/DateRange'; +import { LoadingIndicator } from '@desktop-client/components/reports/LoadingIndicator'; +import { ReportCard } from '@desktop-client/components/reports/ReportCard'; +import { ReportCardName } from '@desktop-client/components/reports/ReportCardName'; +import { calculateTimeRange } from '@desktop-client/components/reports/reportRanges'; +import { summarySpreadsheet } from '@desktop-client/components/reports/spreadsheets/summary-spreadsheet'; +import { SummaryNumber } from '@desktop-client/components/reports/SummaryNumber'; +import { useReport } from '@desktop-client/components/reports/useReport'; import { useLocale } from '@desktop-client/hooks/useLocale'; type SummaryCardProps = { diff --git a/packages/desktop-client/src/components/reports/spreadsheets/calculateLegend.ts b/packages/desktop-client/src/components/reports/spreadsheets/calculateLegend.ts index d0543d36ce..a4b2198420 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/calculateLegend.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/calculateLegend.ts @@ -7,7 +7,7 @@ import { type balanceTypeOpType, } from 'loot-core/types/models'; -import { getColorScale } from '../chart-theme'; +import { getColorScale } from '@desktop-client/components/reports/chart-theme'; export function calculateLegend( intervalData: IntervalEntity[], diff --git a/packages/desktop-client/src/components/reports/spreadsheets/calendar-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/calendar-spreadsheet.ts index 0f0c52728e..629ecc8936 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/calendar-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/calendar-spreadsheet.ts @@ -6,9 +6,8 @@ import { q } from 'loot-core/shared/query'; import { type RuleConditionEntity } from 'loot-core/types/models'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { aqlQuery } from '../../../queries/aqlQuery'; - import { type useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; export type CalendarDataType = { date: Date; diff --git a/packages/desktop-client/src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx b/packages/desktop-client/src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx index b02b06dd8c..6b5189d566 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx +++ b/packages/desktop-client/src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx @@ -10,8 +10,8 @@ import { q } from 'loot-core/shared/query'; import { integerToCurrency, integerToAmount } from 'loot-core/shared/util'; import { type RuleConditionEntity } from 'loot-core/types/models'; -import { type useSpreadsheet } from '../../../hooks/useSpreadsheet'; -import { runAll, indexCashFlow } from '../util'; +import { runAll, indexCashFlow } from '@desktop-client/components/reports/util'; +import { type useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; export function simpleCashFlow( startMonth: string, diff --git a/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts index 792163ab18..79c0c5d976 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts @@ -17,15 +17,6 @@ import { } from 'loot-core/types/models'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { aqlQuery } from '../../../queries/aqlQuery'; -import { - categoryLists, - groupBySelections, - type QueryDataEntity, - ReportOptions, - type UncategorizedEntity, -} from '../ReportOptions'; - import { calculateLegend } from './calculateLegend'; import { filterEmptyRows } from './filterEmptyRows'; import { filterHiddenItems } from './filterHiddenItems'; @@ -33,7 +24,15 @@ import { makeQuery } from './makeQuery'; import { recalculate } from './recalculate'; import { sortData } from './sortData'; +import { + categoryLists, + groupBySelections, + type QueryDataEntity, + ReportOptions, + type UncategorizedEntity, +} from '@desktop-client/components/reports/ReportOptions'; import { type useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; export type createCustomSpreadsheetProps = { startDate: string; diff --git a/packages/desktop-client/src/components/reports/spreadsheets/filterHiddenItems.ts b/packages/desktop-client/src/components/reports/spreadsheets/filterHiddenItems.ts index 492e8def09..6d8a2d0409 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/filterHiddenItems.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/filterHiddenItems.ts @@ -1,7 +1,7 @@ import { type QueryDataEntity, type UncategorizedEntity, -} from '../ReportOptions'; +} from '@desktop-client/components/reports/ReportOptions'; export function filterHiddenItems( item: UncategorizedEntity, diff --git a/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts index 7cbb624ae8..89bec16af3 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts @@ -2,20 +2,19 @@ import { send } from 'loot-core/platform/client/fetch'; import * as monthUtils from 'loot-core/shared/months'; import { type GroupedEntity } from 'loot-core/types/models'; -import { aqlQuery } from '../../../queries/aqlQuery'; -import { - categoryLists, - type QueryDataEntity, - ReportOptions, -} from '../ReportOptions'; - import { type createCustomSpreadsheetProps } from './custom-spreadsheet'; import { filterEmptyRows } from './filterEmptyRows'; import { makeQuery } from './makeQuery'; import { recalculate } from './recalculate'; import { sortData } from './sortData'; +import { + categoryLists, + type QueryDataEntity, + ReportOptions, +} from '@desktop-client/components/reports/ReportOptions'; import { type useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; export function createGroupedSpreadsheet({ startDate, diff --git a/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts b/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts index a1517ad4f5..9c82bf57ab 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts @@ -1,6 +1,6 @@ import { q } from 'loot-core/shared/query'; -import { ReportOptions } from '../ReportOptions'; +import { ReportOptions } from '@desktop-client/components/reports/ReportOptions'; export function makeQuery( name: string, diff --git a/packages/desktop-client/src/components/reports/spreadsheets/net-worth-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/net-worth-spreadsheet.ts index 6ea2e7225b..1009abdbae 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/net-worth-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/net-worth-spreadsheet.ts @@ -14,9 +14,8 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { aqlQuery } from '../../../queries/aqlQuery'; - import { type useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; type Balance = { date: string; diff --git a/packages/desktop-client/src/components/reports/spreadsheets/recalculate.ts b/packages/desktop-client/src/components/reports/spreadsheets/recalculate.ts index c0aa7b1660..e920636ac2 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/recalculate.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/recalculate.ts @@ -5,12 +5,12 @@ import { type IntervalEntity, } from 'loot-core/types/models'; +import { filterHiddenItems } from './filterHiddenItems'; + import { type UncategorizedEntity, type QueryDataEntity, -} from '../ReportOptions'; - -import { filterHiddenItems } from './filterHiddenItems'; +} from '@desktop-client/components/reports/ReportOptions'; type recalculateProps = { item: UncategorizedEntity; diff --git a/packages/desktop-client/src/components/reports/spreadsheets/spending-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/spending-spreadsheet.ts index 3d9b42d771..b01736408f 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/spending-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/spending-spreadsheet.ts @@ -11,11 +11,10 @@ import { type SpendingEntity, } from 'loot-core/types/models'; -import { aqlQuery } from '../../../queries/aqlQuery'; - import { makeQuery } from './makeQuery'; import { type useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; type createSpendingSpreadsheetProps = { conditions?: RuleConditionEntity[]; diff --git a/packages/desktop-client/src/components/reports/spreadsheets/summary-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/summary-spreadsheet.ts index 3f230565c2..40c62904e6 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/summary-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/summary-spreadsheet.ts @@ -8,9 +8,8 @@ import { type RuleConditionEntity, } from 'loot-core/types/models'; -import { aqlQuery } from '../../../queries/aqlQuery'; - import { type useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; export function summarySpreadsheet( start: string, diff --git a/packages/desktop-client/src/components/reports/useReport.ts b/packages/desktop-client/src/components/reports/useReport.ts index 0bc60ff7c7..2ca1f355d0 100644 --- a/packages/desktop-client/src/components/reports/useReport.ts +++ b/packages/desktop-client/src/components/reports/useReport.ts @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react'; -import { useSpreadsheet } from '../../hooks/useSpreadsheet'; +import { useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; export function useReport( sheetName: string, diff --git a/packages/desktop-client/src/components/reports/util.ts b/packages/desktop-client/src/components/reports/util.ts index 02afebb056..c64693a01c 100644 --- a/packages/desktop-client/src/components/reports/util.ts +++ b/packages/desktop-client/src/components/reports/util.ts @@ -7,7 +7,7 @@ import type { PayeeEntity, } from 'loot-core/types/models'; -import { aqlQuery } from '../../queries/aqlQuery'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; export function fromDateRepr(date: string): string { return date.slice(0, 7); diff --git a/packages/desktop-client/src/components/responsive/index.tsx b/packages/desktop-client/src/components/responsive/index.tsx index f02bd3887f..214ebad6a0 100644 --- a/packages/desktop-client/src/components/responsive/index.tsx +++ b/packages/desktop-client/src/components/responsive/index.tsx @@ -1,10 +1,10 @@ import { useResponsive } from '@actual-app/components/hooks/useResponsive'; -import { LoadComponent } from '../util/LoadComponent'; - import type * as NarrowComponents from './narrow'; import type * as WideComponents from './wide'; +import { LoadComponent } from '@desktop-client/components/util/LoadComponent'; + const loadNarrow = () => import(/* webpackChunkName: "narrow-components" */ './narrow'); const loadWide = () => diff --git a/packages/desktop-client/src/components/rules/RuleRow.tsx b/packages/desktop-client/src/components/rules/RuleRow.tsx index 00a881e0dc..18c58838fa 100644 --- a/packages/desktop-client/src/components/rules/RuleRow.tsx +++ b/packages/desktop-client/src/components/rules/RuleRow.tsx @@ -16,11 +16,10 @@ import { v4 as uuid } from 'uuid'; import { friendlyOp } from 'loot-core/shared/rules'; import { type RuleEntity } from 'loot-core/types/models'; -import { SelectCell, Row, Field, Cell } from '../table'; - import { ActionExpression } from './ActionExpression'; import { ConditionExpression } from './ConditionExpression'; +import { SelectCell, Row, Field, Cell } from '@desktop-client/components/table'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useSelectedDispatch } from '@desktop-client/hooks/useSelected'; diff --git a/packages/desktop-client/src/components/rules/RulesHeader.tsx b/packages/desktop-client/src/components/rules/RulesHeader.tsx index 29cd371efd..bd137dcf7e 100644 --- a/packages/desktop-client/src/components/rules/RulesHeader.tsx +++ b/packages/desktop-client/src/components/rules/RulesHeader.tsx @@ -1,8 +1,11 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { SelectCell, Cell, TableHeader } from '../table'; - +import { + SelectCell, + Cell, + TableHeader, +} from '@desktop-client/components/table'; import { useSelectedItems, useSelectedDispatch, diff --git a/packages/desktop-client/src/components/rules/ScheduleValue.tsx b/packages/desktop-client/src/components/rules/ScheduleValue.tsx index e465273ed3..e95f92711d 100644 --- a/packages/desktop-client/src/components/rules/ScheduleValue.tsx +++ b/packages/desktop-client/src/components/rules/ScheduleValue.tsx @@ -7,12 +7,11 @@ import { q } from 'loot-core/shared/query'; import { describeSchedule } from 'loot-core/shared/schedules'; import { type ScheduleEntity } from 'loot-core/types/models'; -import { getPayeesById } from '../../queries/queriesSlice'; - import { Value } from './Value'; import { usePayees } from '@desktop-client/hooks/usePayees'; import { useSchedules } from '@desktop-client/hooks/useSchedules'; +import { getPayeesById } from '@desktop-client/queries/queriesSlice'; type ScheduleValueProps = { value: ScheduleEntity; diff --git a/packages/desktop-client/src/components/rules/Value.tsx b/packages/desktop-client/src/components/rules/Value.tsx index afcb553bd2..6660f2feea 100644 --- a/packages/desktop-client/src/components/rules/Value.tsx +++ b/packages/desktop-client/src/components/rules/Value.tsx @@ -10,8 +10,7 @@ import { getMonthYearFormat } from 'loot-core/shared/months'; import { getRecurringDescription } from 'loot-core/shared/schedules'; import { integerToCurrency } from 'loot-core/shared/util'; -import { Link } from '../common/Link'; - +import { Link } from '@desktop-client/components/common/Link'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; diff --git a/packages/desktop-client/src/components/schedules/DiscoverSchedules.tsx b/packages/desktop-client/src/components/schedules/DiscoverSchedules.tsx index a8874fc6c6..08e64a9a82 100644 --- a/packages/desktop-client/src/components/schedules/DiscoverSchedules.tsx +++ b/packages/desktop-client/src/components/schedules/DiscoverSchedules.tsx @@ -13,13 +13,21 @@ import { q } from 'loot-core/shared/query'; import { getRecurringDescription } from 'loot-core/shared/schedules'; import type { DiscoverScheduleEntity } from 'loot-core/types/models'; -import { aqlQuery } from '../../queries/aqlQuery'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { Table, TableHeader, Row, Field, SelectCell } from '../table'; -import { DisplayId } from '../util/DisplayId'; - import { ScheduleAmountCell } from './SchedulesTable'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { + Table, + TableHeader, + Row, + Field, + SelectCell, +} from '@desktop-client/components/table'; +import { DisplayId } from '@desktop-client/components/util/DisplayId'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { @@ -29,6 +37,7 @@ import { SelectedProvider, } from '@desktop-client/hooks/useSelected'; import { useSendPlatformRequest } from '@desktop-client/hooks/useSendPlatformRequest'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; const ROW_HEIGHT = 43; diff --git a/packages/desktop-client/src/components/schedules/PostsOfflineNotification.tsx b/packages/desktop-client/src/components/schedules/PostsOfflineNotification.tsx index ca063ccb6c..0c080fde5d 100644 --- a/packages/desktop-client/src/components/schedules/PostsOfflineNotification.tsx +++ b/packages/desktop-client/src/components/schedules/PostsOfflineNotification.tsx @@ -11,12 +11,15 @@ import { theme } from '@actual-app/components/theme'; import { send } from 'loot-core/platform/client/fetch'; import { type PayeeEntity } from 'loot-core/types/models'; -import { popModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { DisplayId } from '../util/DisplayId'; - +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { DisplayId } from '@desktop-client/components/util/DisplayId'; import { useFormatList } from '@desktop-client/hooks/useFormatList'; +import { popModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; export function PostsOfflineNotification() { const { t, i18n } = useTranslation(); diff --git a/packages/desktop-client/src/components/schedules/ScheduleDetails.tsx b/packages/desktop-client/src/components/schedules/ScheduleDetails.tsx index bcb3ec6ff3..cc2cadf469 100644 --- a/packages/desktop-client/src/components/schedules/ScheduleDetails.tsx +++ b/packages/desktop-client/src/components/schedules/ScheduleDetails.tsx @@ -21,23 +21,28 @@ import { type RecurConfig, } from 'loot-core/types/models'; -import { type Modal as ModalType, pushModal } from '../../modals/modalsSlice'; -import { aqlQuery } from '../../queries/aqlQuery'; -import { liveQuery } from '../../queries/liveQuery'; -import { getPayeesById } from '../../queries/queriesSlice'; -import { useDispatch } from '../../redux'; -import { AccountAutocomplete } from '../autocomplete/AccountAutocomplete'; -import { PayeeAutocomplete } from '../autocomplete/PayeeAutocomplete'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { FormField, FormLabel, Checkbox } from '../forms'; -import { OpSelect } from '../modals/EditRuleModal'; -import { DateSelect } from '../select/DateSelect'; -import { RecurringSchedulePicker } from '../select/RecurringSchedulePicker'; -import { SelectedItemsButton } from '../table'; -import { SimpleTransactionsTable } from '../transactions/SimpleTransactionsTable'; -import { AmountInput, BetweenAmountInput } from '../util/AmountInput'; -import { GenericInput } from '../util/GenericInput'; - +import { AccountAutocomplete } from '@desktop-client/components/autocomplete/AccountAutocomplete'; +import { PayeeAutocomplete } from '@desktop-client/components/autocomplete/PayeeAutocomplete'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { + FormField, + FormLabel, + Checkbox, +} from '@desktop-client/components/forms'; +import { OpSelect } from '@desktop-client/components/modals/EditRuleModal'; +import { DateSelect } from '@desktop-client/components/select/DateSelect'; +import { RecurringSchedulePicker } from '@desktop-client/components/select/RecurringSchedulePicker'; +import { SelectedItemsButton } from '@desktop-client/components/table'; +import { SimpleTransactionsTable } from '@desktop-client/components/transactions/SimpleTransactionsTable'; +import { + AmountInput, + BetweenAmountInput, +} from '@desktop-client/components/util/AmountInput'; +import { GenericInput } from '@desktop-client/components/util/GenericInput'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; import { useLocale } from '@desktop-client/hooks/useLocale'; import { usePayees } from '@desktop-client/hooks/usePayees'; @@ -45,6 +50,14 @@ import { useSelected, SelectedProvider, } from '@desktop-client/hooks/useSelected'; +import { + type Modal as ModalType, + pushModal, +} from '@desktop-client/modals/modalsSlice'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; +import { liveQuery } from '@desktop-client/queries/liveQuery'; +import { getPayeesById } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; type Fields = { payee: null | string; diff --git a/packages/desktop-client/src/components/schedules/ScheduleLink.tsx b/packages/desktop-client/src/components/schedules/ScheduleLink.tsx index ed784cb465..197af9c53b 100644 --- a/packages/desktop-client/src/components/schedules/ScheduleLink.tsx +++ b/packages/desktop-client/src/components/schedules/ScheduleLink.tsx @@ -11,14 +11,21 @@ import { View } from '@actual-app/components/view'; import { send } from 'loot-core/platform/client/fetch'; import { q } from 'loot-core/shared/query'; -import { useSchedules } from '../../hooks/useSchedules'; -import { type Modal as ModalType, pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; -import { Search } from '../common/Search'; - import { ROW_HEIGHT, SchedulesTable } from './SchedulesTable'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; +import { Search } from '@desktop-client/components/common/Search'; +import { useSchedules } from '@desktop-client/hooks/useSchedules'; +import { + type Modal as ModalType, + pushModal, +} from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; + type ScheduleLinkProps = Extract< ModalType, { name: 'schedule-link' } diff --git a/packages/desktop-client/src/components/schedules/SchedulesTable.tsx b/packages/desktop-client/src/components/schedules/SchedulesTable.tsx index df6ff15c0d..2374c93fa6 100644 --- a/packages/desktop-client/src/components/schedules/SchedulesTable.tsx +++ b/packages/desktop-client/src/components/schedules/SchedulesTable.tsx @@ -17,12 +17,17 @@ import { getScheduledAmount } from 'loot-core/shared/schedules'; import { integerToCurrency } from 'loot-core/shared/util'; import { type ScheduleEntity } from 'loot-core/types/models'; -import { PrivacyFilter } from '../PrivacyFilter'; -import { Table, TableHeader, Row, Field, Cell } from '../table'; -import { DisplayId } from '../util/DisplayId'; - import { StatusBadge } from './StatusBadge'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; +import { + Table, + TableHeader, + Row, + Field, + Cell, +} from '@desktop-client/components/table'; +import { DisplayId } from '@desktop-client/components/util/DisplayId'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; diff --git a/packages/desktop-client/src/components/schedules/StatusBadge.tsx b/packages/desktop-client/src/components/schedules/StatusBadge.tsx index ae910c8c65..95df3a2843 100644 --- a/packages/desktop-client/src/components/schedules/StatusBadge.tsx +++ b/packages/desktop-client/src/components/schedules/StatusBadge.tsx @@ -16,7 +16,7 @@ import { View } from '@actual-app/components/view'; import { titleFirst } from 'loot-core/shared/util'; -import { type ScheduleStatusType } from '../../hooks/useSchedules'; +import { type ScheduleStatusType } from '@desktop-client/hooks/useSchedules'; // Consists of Schedule Statuses + Transaction statuses export type StatusTypes = diff --git a/packages/desktop-client/src/components/schedules/UpcomingLength.tsx b/packages/desktop-client/src/components/schedules/UpcomingLength.tsx index b327d5bb4b..2e0eccda70 100644 --- a/packages/desktop-client/src/components/schedules/UpcomingLength.tsx +++ b/packages/desktop-client/src/components/schedules/UpcomingLength.tsx @@ -8,10 +8,13 @@ import { View } from '@actual-app/components/view'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { Modal, ModalCloseButton, ModalHeader } from '../common/Modal'; - import { CustomUpcomingLength } from './CustomUpcomingLength'; +import { + Modal, + ModalCloseButton, + ModalHeader, +} from '@desktop-client/components/common/Modal'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; function useUpcomingLengthOptions() { diff --git a/packages/desktop-client/src/components/schedules/index.tsx b/packages/desktop-client/src/components/schedules/index.tsx index 285adf86ef..b035996b2c 100644 --- a/packages/desktop-client/src/components/schedules/index.tsx +++ b/packages/desktop-client/src/components/schedules/index.tsx @@ -9,14 +9,14 @@ import { send } from 'loot-core/platform/client/fetch'; import { q } from 'loot-core/shared/query'; import { type ScheduleEntity } from 'loot-core/types/models'; -import { useSchedules } from '../../hooks/useSchedules'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Search } from '../common/Search'; -import { Page } from '../Page'; - import { type ScheduleItemAction, SchedulesTable } from './SchedulesTable'; +import { Search } from '@desktop-client/components/common/Search'; +import { Page } from '@desktop-client/components/Page'; +import { useSchedules } from '@desktop-client/hooks/useSchedules'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; + export function Schedules() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/select/RecurringSchedulePicker.tsx b/packages/desktop-client/src/components/select/RecurringSchedulePicker.tsx index c95e0f39c5..6326a03108 100644 --- a/packages/desktop-client/src/components/select/RecurringSchedulePicker.tsx +++ b/packages/desktop-client/src/components/select/RecurringSchedulePicker.tsx @@ -30,10 +30,9 @@ import { type WithRequired, } from 'loot-core/types/util'; -import { Checkbox } from '../forms'; - import { DateSelect } from './DateSelect'; +import { Checkbox } from '@desktop-client/components/forms'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; import { useLocale } from '@desktop-client/hooks/useLocale'; diff --git a/packages/desktop-client/src/components/settings/AuthSettings.tsx b/packages/desktop-client/src/components/settings/AuthSettings.tsx index 474c303973..6d62d63ed6 100644 --- a/packages/desktop-client/src/components/settings/AuthSettings.tsx +++ b/packages/desktop-client/src/components/settings/AuthSettings.tsx @@ -6,12 +6,15 @@ import { Label } from '@actual-app/components/label'; import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { useMultiuserEnabled, useLoginMethod } from '../ServerContext'; - import { Setting } from './UI'; +import { + useMultiuserEnabled, + useLoginMethod, +} from '@desktop-client/components/ServerContext'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; + export function AuthSettings() { const { t } = useTranslation(); diff --git a/packages/desktop-client/src/components/settings/BudgetTypeSettings.tsx b/packages/desktop-client/src/components/settings/BudgetTypeSettings.tsx index 4a184fd54c..3f09d19e0d 100644 --- a/packages/desktop-client/src/components/settings/BudgetTypeSettings.tsx +++ b/packages/desktop-client/src/components/settings/BudgetTypeSettings.tsx @@ -4,10 +4,9 @@ import { Trans } from 'react-i18next'; import { Button } from '@actual-app/components/button'; import { Text } from '@actual-app/components/text'; -import { Link } from '../common/Link'; - import { Setting } from './UI'; +import { Link } from '@desktop-client/components/common/Link'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; export function BudgetTypeSettings() { diff --git a/packages/desktop-client/src/components/settings/Encryption.tsx b/packages/desktop-client/src/components/settings/Encryption.tsx index 91023e29b1..7a30eefb2a 100644 --- a/packages/desktop-client/src/components/settings/Encryption.tsx +++ b/packages/desktop-client/src/components/settings/Encryption.tsx @@ -5,14 +5,13 @@ import { Button } from '@actual-app/components/button'; import { Text } from '@actual-app/components/text'; import { theme } from '@actual-app/components/theme'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { Link } from '../common/Link'; -import { useServerURL } from '../ServerContext'; - import { Setting } from './UI'; +import { Link } from '@desktop-client/components/common/Link'; +import { useServerURL } from '@desktop-client/components/ServerContext'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; export function EncryptionSettings() { const dispatch = useDispatch(); diff --git a/packages/desktop-client/src/components/settings/Experimental.tsx b/packages/desktop-client/src/components/settings/Experimental.tsx index 64701815c1..44f1469649 100644 --- a/packages/desktop-client/src/components/settings/Experimental.tsx +++ b/packages/desktop-client/src/components/settings/Experimental.tsx @@ -7,11 +7,10 @@ import { View } from '@actual-app/components/view'; import type { FeatureFlag } from 'loot-core/types/prefs'; -import { Link } from '../common/Link'; -import { Checkbox } from '../forms'; - import { Setting } from './UI'; +import { Link } from '@desktop-client/components/common/Link'; +import { Checkbox } from '@desktop-client/components/forms'; import { useFeatureFlag } from '@desktop-client/hooks/useFeatureFlag'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; diff --git a/packages/desktop-client/src/components/settings/Format.tsx b/packages/desktop-client/src/components/settings/Format.tsx index 0e520aba71..6b1a7668dd 100644 --- a/packages/desktop-client/src/components/settings/Format.tsx +++ b/packages/desktop-client/src/components/settings/Format.tsx @@ -12,11 +12,10 @@ import { css } from '@emotion/css'; import { numberFormats } from 'loot-core/shared/util'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { Checkbox } from '../forms'; -import { useSidebar } from '../sidebar/SidebarProvider'; - import { Setting } from './UI'; +import { Checkbox } from '@desktop-client/components/forms'; +import { useSidebar } from '@desktop-client/components/sidebar/SidebarProvider'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; diff --git a/packages/desktop-client/src/components/settings/LanguageSettings.tsx b/packages/desktop-client/src/components/settings/LanguageSettings.tsx index d3e768e00f..a25ab8bbc9 100644 --- a/packages/desktop-client/src/components/settings/LanguageSettings.tsx +++ b/packages/desktop-client/src/components/settings/LanguageSettings.tsx @@ -6,12 +6,11 @@ import { Select, type SelectOption } from '@actual-app/components/select'; import { Text } from '@actual-app/components/text'; import { type TFunction } from 'i18next'; -import { availableLanguages, setI18NextLanguage } from '../../i18n'; -import { Link } from '../common/Link'; - import { Setting } from './UI'; +import { Link } from '@desktop-client/components/common/Link'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; +import { availableLanguages, setI18NextLanguage } from '@desktop-client/i18n'; const languageDisplayNameOverride: { [key: string]: string } = { 'pt-BR': 'Português (Brasil)', diff --git a/packages/desktop-client/src/components/settings/Reset.tsx b/packages/desktop-client/src/components/settings/Reset.tsx index 4b3505c331..ce88d847d0 100644 --- a/packages/desktop-client/src/components/settings/Reset.tsx +++ b/packages/desktop-client/src/components/settings/Reset.tsx @@ -6,12 +6,11 @@ import { Text } from '@actual-app/components/text'; import { send } from 'loot-core/platform/client/fetch'; -import { resetSync } from '../../app/appSlice'; -import { useDispatch } from '../../redux'; - import { Setting } from './UI'; +import { resetSync } from '@desktop-client/app/appSlice'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { useDispatch } from '@desktop-client/redux'; export function ResetCache() { const [resetting, setResetting] = useState(false); diff --git a/packages/desktop-client/src/components/settings/Themes.tsx b/packages/desktop-client/src/components/settings/Themes.tsx index 9b01157cc0..c4a38c3a31 100644 --- a/packages/desktop-client/src/components/settings/Themes.tsx +++ b/packages/desktop-client/src/components/settings/Themes.tsx @@ -10,15 +10,15 @@ import { css } from '@emotion/css'; import { type DarkTheme, type Theme } from 'loot-core/types/prefs'; +import { Setting } from './UI'; + +import { useSidebar } from '@desktop-client/components/sidebar/SidebarProvider'; import { themeOptions, useTheme, usePreferredDarkTheme, darkThemeOptions, -} from '../../style'; -import { useSidebar } from '../sidebar/SidebarProvider'; - -import { Setting } from './UI'; +} from '@desktop-client/style'; function Column({ title, children }: { title: string; children: ReactNode }) { return ( diff --git a/packages/desktop-client/src/components/settings/UI.tsx b/packages/desktop-client/src/components/settings/UI.tsx index b78076a74c..49a399a3df 100644 --- a/packages/desktop-client/src/components/settings/UI.tsx +++ b/packages/desktop-client/src/components/settings/UI.tsx @@ -8,7 +8,7 @@ import { tokens } from '@actual-app/components/tokens'; import { View } from '@actual-app/components/view'; import { css } from '@emotion/css'; -import { Link } from '../common/Link'; +import { Link } from '@desktop-client/components/common/Link'; type SettingProps = { primaryAction?: ReactNode; diff --git a/packages/desktop-client/src/components/settings/index.tsx b/packages/desktop-client/src/components/settings/index.tsx index 54af0432b0..0d306c88fa 100644 --- a/packages/desktop-client/src/components/settings/index.tsx +++ b/packages/desktop-client/src/components/settings/index.tsx @@ -13,15 +13,6 @@ import { css } from '@emotion/css'; import { listen } from 'loot-core/platform/client/fetch'; import { isElectron } from 'loot-core/shared/environment'; -import { closeBudget } from '../../budgets/budgetsSlice'; -import { loadPrefs } from '../../prefs/prefsSlice'; -import { useDispatch } from '../../redux'; -import { Link } from '../common/Link'; -import { FormField, FormLabel } from '../forms'; -import { MOBILE_NAV_HEIGHT } from '../mobile/MobileNavTabs'; -import { Page } from '../Page'; -import { useServerVersion } from '../ServerContext'; - import { AuthSettings } from './AuthSettings'; import { Backups } from './Backups'; import { BudgetTypeSettings } from './BudgetTypeSettings'; @@ -35,12 +26,20 @@ import { ResetCache, ResetSync } from './Reset'; import { ThemeSettings } from './Themes'; import { AdvancedToggle, Setting } from './UI'; +import { closeBudget } from '@desktop-client/budgets/budgetsSlice'; +import { Link } from '@desktop-client/components/common/Link'; +import { FormField, FormLabel } from '@desktop-client/components/forms'; +import { MOBILE_NAV_HEIGHT } from '@desktop-client/components/mobile/MobileNavTabs'; +import { Page } from '@desktop-client/components/Page'; +import { useServerVersion } from '@desktop-client/components/ServerContext'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; import { useIsOutdated, useLatestVersion, } from '@desktop-client/hooks/useLatestVersion'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; +import { loadPrefs } from '@desktop-client/prefs/prefsSlice'; +import { useDispatch } from '@desktop-client/redux'; function About() { const version = useServerVersion(); diff --git a/packages/desktop-client/src/components/sidebar/Account.tsx b/packages/desktop-client/src/components/sidebar/Account.tsx index ea8de87de8..e7999ac7d4 100644 --- a/packages/desktop-client/src/components/sidebar/Account.tsx +++ b/packages/desktop-client/src/components/sidebar/Account.tsx @@ -16,24 +16,29 @@ import { css, cx } from '@emotion/css'; import * as Platform from 'loot-core/shared/platform'; import { type AccountEntity } from 'loot-core/types/models'; -import { openAccountCloseModal } from '../../modals/modalsSlice'; -import { reopenAccount, updateAccount } from '../../queries/queriesSlice'; -import { useDispatch } from '../../redux'; -import { Link } from '../common/Link'; -import { Notes } from '../Notes'; +import { Link } from '@desktop-client/components/common/Link'; +import { Notes } from '@desktop-client/components/Notes'; import { DropHighlight, - type OnDragChangeCallback, - type OnDropCallback, useDraggable, useDroppable, -} from '../sort'; -import { type Binding, type SheetFields } from '../spreadsheet'; -import { CellValue } from '../spreadsheet/CellValue'; - + type OnDragChangeCallback, + type OnDropCallback, +} from '@desktop-client/components/sort'; +import { + type SheetFields, + type Binding, +} from '@desktop-client/components/spreadsheet'; +import { CellValue } from '@desktop-client/components/spreadsheet/CellValue'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useDragRef } from '@desktop-client/hooks/useDragRef'; import { useNotes } from '@desktop-client/hooks/useNotes'; +import { openAccountCloseModal } from '@desktop-client/modals/modalsSlice'; +import { + reopenAccount, + updateAccount, +} from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; export const accountNameStyle: CSSProperties = { marginTop: -2, diff --git a/packages/desktop-client/src/components/sidebar/Accounts.tsx b/packages/desktop-client/src/components/sidebar/Accounts.tsx index 52c94173a4..42a1e63838 100644 --- a/packages/desktop-client/src/components/sidebar/Accounts.tsx +++ b/packages/desktop-client/src/components/sidebar/Accounts.tsx @@ -6,13 +6,10 @@ import { View } from '@actual-app/components/view'; import { type AccountEntity } from 'loot-core/types/models'; -import { moveAccount } from '../../accounts/accountsSlice'; -import * as queries from '../../queries/queries'; -import { useSelector, useDispatch } from '../../redux'; - import { Account } from './Account'; import { SecondaryItem } from './SecondaryItem'; +import { moveAccount } from '@desktop-client/accounts/accountsSlice'; import { useAccounts } from '@desktop-client/hooks/useAccounts'; import { useClosedAccounts } from '@desktop-client/hooks/useClosedAccounts'; import { useFailedAccounts } from '@desktop-client/hooks/useFailedAccounts'; @@ -20,6 +17,8 @@ import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; import { useOffBudgetAccounts } from '@desktop-client/hooks/useOffBudgetAccounts'; import { useOnBudgetAccounts } from '@desktop-client/hooks/useOnBudgetAccounts'; import { useUpdatedAccounts } from '@desktop-client/hooks/useUpdatedAccounts'; +import * as queries from '@desktop-client/queries/queries'; +import { useSelector, useDispatch } from '@desktop-client/redux'; const fontWeight = 600; diff --git a/packages/desktop-client/src/components/sidebar/BudgetName.tsx b/packages/desktop-client/src/components/sidebar/BudgetName.tsx index dda2c43e70..1d3ddce992 100644 --- a/packages/desktop-client/src/components/sidebar/BudgetName.tsx +++ b/packages/desktop-client/src/components/sidebar/BudgetName.tsx @@ -13,12 +13,11 @@ import { View } from '@actual-app/components/view'; import * as Platform from 'loot-core/shared/platform'; -import { closeBudget } from '../../budgets/budgetsSlice'; -import { useDispatch } from '../../redux'; - +import { closeBudget } from '@desktop-client/budgets/budgetsSlice'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useMetadataPref } from '@desktop-client/hooks/useMetadataPref'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; +import { useDispatch } from '@desktop-client/redux'; type BudgetNameProps = { children?: ReactNode; diff --git a/packages/desktop-client/src/components/sidebar/ItemContent.tsx b/packages/desktop-client/src/components/sidebar/ItemContent.tsx index 99e34904fc..b9882c147b 100644 --- a/packages/desktop-client/src/components/sidebar/ItemContent.tsx +++ b/packages/desktop-client/src/components/sidebar/ItemContent.tsx @@ -7,7 +7,7 @@ import React, { import { type CSSProperties } from '@actual-app/components/styles'; import { View } from '@actual-app/components/view'; -import { Link } from '../common/Link'; +import { Link } from '@desktop-client/components/common/Link'; type ItemContentProps = { style: ComponentProps['style']; diff --git a/packages/desktop-client/src/components/sidebar/Sidebar.tsx b/packages/desktop-client/src/components/sidebar/Sidebar.tsx index 96fea37204..f9fdfc79f0 100644 --- a/packages/desktop-client/src/components/sidebar/Sidebar.tsx +++ b/packages/desktop-client/src/components/sidebar/Sidebar.tsx @@ -11,9 +11,6 @@ import { Resizable } from 're-resizable'; import * as Platform from 'loot-core/shared/platform'; -import { replaceModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; - import { Accounts } from './Accounts'; import { BudgetName } from './BudgetName'; import { PrimaryButtons } from './PrimaryButtons'; @@ -24,6 +21,8 @@ import { ToggleButton } from './ToggleButton'; import { useGlobalPref } from '@desktop-client/hooks/useGlobalPref'; import { useLocalPref } from '@desktop-client/hooks/useLocalPref'; import { useResizeObserver } from '@desktop-client/hooks/useResizeObserver'; +import { replaceModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; export function Sidebar() { const hasWindowButtons = !Platform.isBrowser && Platform.OS === 'mac'; diff --git a/packages/desktop-client/src/components/spreadsheet/CellValue.tsx b/packages/desktop-client/src/components/spreadsheet/CellValue.tsx index e0783c23f2..4a9daddf09 100644 --- a/packages/desktop-client/src/components/spreadsheet/CellValue.tsx +++ b/packages/desktop-client/src/components/spreadsheet/CellValue.tsx @@ -8,8 +8,6 @@ import React, { import { styles } from '@actual-app/components/styles'; import { Text } from '@actual-app/components/text'; -import { PrivacyFilter } from '../PrivacyFilter'; - import { type FormatType, useFormat } from './useFormat'; import { useSheetName } from './useSheetName'; import { useSheetValue } from './useSheetValue'; @@ -21,6 +19,8 @@ import { type Spreadsheets, } from '.'; +import { PrivacyFilter } from '@desktop-client/components/PrivacyFilter'; + type CellValueProps< SheetName extends SheetNames, FieldName extends SheetFields, diff --git a/packages/desktop-client/src/components/spreadsheet/useSheetValue.ts b/packages/desktop-client/src/components/spreadsheet/useSheetValue.ts index 774acccbe9..1db2eb0bd9 100644 --- a/packages/desktop-client/src/components/spreadsheet/useSheetValue.ts +++ b/packages/desktop-client/src/components/spreadsheet/useSheetValue.ts @@ -1,7 +1,5 @@ import { useState, useRef, useLayoutEffect } from 'react'; -import { useSpreadsheet } from '../../hooks/useSpreadsheet'; - import { useSheetName } from './useSheetName'; import { @@ -12,6 +10,8 @@ import { type BindingObject, } from '.'; +import { useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; + type SheetValueResult< SheetName extends SheetNames, FieldName extends SheetFields, diff --git a/packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx b/packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx index 33b97ee3ee..6bc37fff54 100644 --- a/packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx +++ b/packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx @@ -13,12 +13,11 @@ import { isPreviewId } from 'loot-core/shared/transactions'; import { validForTransfer } from 'loot-core/shared/transfer'; import { type TransactionEntity } from 'loot-core/types/models'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { SelectedItemsButton } from '../table'; - +import { SelectedItemsButton } from '@desktop-client/components/table'; import { useSchedules } from '@desktop-client/hooks/useSchedules'; import { useSelectedItems } from '@desktop-client/hooks/useSelected'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type SelectedTransactionsButtonProps = { getTransaction: (id: string) => TransactionEntity | undefined; diff --git a/packages/desktop-client/src/components/transactions/SimpleTransactionsTable.tsx b/packages/desktop-client/src/components/transactions/SimpleTransactionsTable.tsx index 9cab3faad5..43fbb021fc 100644 --- a/packages/desktop-client/src/components/transactions/SimpleTransactionsTable.tsx +++ b/packages/desktop-client/src/components/transactions/SimpleTransactionsTable.tsx @@ -20,9 +20,14 @@ import * as monthUtils from 'loot-core/shared/months'; import { integerToCurrency } from 'loot-core/shared/util'; import { type TransactionEntity } from 'loot-core/types/models'; -import { Cell, Field, Row, SelectCell, Table } from '../table'; -import { DisplayId } from '../util/DisplayId'; - +import { + Cell, + Field, + Row, + SelectCell, + Table, +} from '@desktop-client/components/table'; +import { DisplayId } from '@desktop-client/components/util/DisplayId'; import { useAccount } from '@desktop-client/hooks/useAccount'; import { useCategory } from '@desktop-client/hooks/useCategory'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; diff --git a/packages/desktop-client/src/components/transactions/TransactionList.tsx b/packages/desktop-client/src/components/transactions/TransactionList.tsx index 3eb12d3a2f..67928e73fd 100644 --- a/packages/desktop-client/src/components/transactions/TransactionList.tsx +++ b/packages/desktop-client/src/components/transactions/TransactionList.tsx @@ -23,17 +23,16 @@ import { type TransactionFilterEntity, } from 'loot-core/types/models'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; -import { type TableHandleRef } from '../table'; - import { TransactionTable, type TransactionTableProps, } from './TransactionsTable'; +import { type TableHandleRef } from '@desktop-client/components/table'; import { useNavigate } from '@desktop-client/hooks/useNavigate'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; // When data changes, there are two ways to update the UI: // diff --git a/packages/desktop-client/src/components/transactions/TransactionMenu.tsx b/packages/desktop-client/src/components/transactions/TransactionMenu.tsx index ac9082513a..6fd3a4e7e3 100644 --- a/packages/desktop-client/src/components/transactions/TransactionMenu.tsx +++ b/packages/desktop-client/src/components/transactions/TransactionMenu.tsx @@ -11,9 +11,9 @@ import { import { isPreviewId } from 'loot-core/shared/transactions'; import { type TransactionEntity } from 'loot-core/types/models'; -import { useSchedules } from '../../hooks/useSchedules'; -import { pushModal } from '../../modals/modalsSlice'; -import { useDispatch } from '../../redux'; +import { useSchedules } from '@desktop-client/hooks/useSchedules'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { useDispatch } from '@desktop-client/redux'; type BalanceMenuProps = Omit< ComponentPropsWithoutRef, diff --git a/packages/desktop-client/src/components/transactions/TransactionsTable.test.tsx b/packages/desktop-client/src/components/transactions/TransactionsTable.test.tsx index b39e58d469..222d646a92 100644 --- a/packages/desktop-client/src/components/transactions/TransactionsTable.test.tsx +++ b/packages/desktop-client/src/components/transactions/TransactionsTable.test.tsx @@ -26,15 +26,14 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import { AuthProvider } from '../../auth/AuthProvider'; -import { TestProvider } from '../../redux/mock'; - import { TransactionTable } from './TransactionsTable'; +import { AuthProvider } from '@desktop-client/auth/AuthProvider'; import { SchedulesProvider } from '@desktop-client/hooks/useCachedSchedules'; import { SelectedProviderWithItems } from '@desktop-client/hooks/useSelected'; import { SplitsExpandedProvider } from '@desktop-client/hooks/useSplitsExpanded'; import { SpreadsheetProvider } from '@desktop-client/hooks/useSpreadsheet'; +import { TestProvider } from '@desktop-client/redux/mock'; vi.mock('loot-core/platform/client/fetch'); vi.mock('../../hooks/useFeatureFlag', () => ({ diff --git a/packages/desktop-client/src/components/transactions/TransactionsTable.tsx b/packages/desktop-client/src/components/transactions/TransactionsTable.tsx index a997f3cd4d..3a4f9fb125 100644 --- a/packages/desktop-client/src/components/transactions/TransactionsTable.tsx +++ b/packages/desktop-client/src/components/transactions/TransactionsTable.tsx @@ -69,18 +69,27 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import { useSelectedDispatch, useSelectedItems } from '../../hooks/useSelected'; import { - type SplitsExpandedContextValue, - useSplitsExpanded, -} from '../../hooks/useSplitsExpanded'; -import { useDispatch } from '../../redux'; -import { AccountAutocomplete } from '../autocomplete/AccountAutocomplete'; -import { CategoryAutocomplete } from '../autocomplete/CategoryAutocomplete'; -import { PayeeAutocomplete } from '../autocomplete/PayeeAutocomplete'; -import { getStatusProps, type StatusTypes } from '../schedules/StatusBadge'; -import { DateSelect } from '../select/DateSelect'; -import { NamespaceContext } from '../spreadsheet/NamespaceContext'; + deserializeTransaction, + isLastChild, + makeTemporaryTransactions, + selectAscDesc, + type SerializedTransaction, + serializeTransaction, + type TransactionEditFunction, + type TransactionUpdateFunction, +} from './table/utils'; +import { TransactionMenu } from './TransactionMenu'; + +import { AccountAutocomplete } from '@desktop-client/components/autocomplete/AccountAutocomplete'; +import { CategoryAutocomplete } from '@desktop-client/components/autocomplete/CategoryAutocomplete'; +import { PayeeAutocomplete } from '@desktop-client/components/autocomplete/PayeeAutocomplete'; +import { + getStatusProps, + type StatusTypes, +} from '@desktop-client/components/schedules/StatusBadge'; +import { DateSelect } from '@desktop-client/components/select/DateSelect'; +import { NamespaceContext } from '@desktop-client/components/spreadsheet/NamespaceContext'; import { Cell, CellButton, @@ -96,26 +105,21 @@ import { type TableProps, UnexposedCellContent, useTableNavigator, -} from '../table'; - -import { - deserializeTransaction, - isLastChild, - makeTemporaryTransactions, - selectAscDesc, - type SerializedTransaction, - serializeTransaction, - type TransactionEditFunction, - type TransactionUpdateFunction, -} from './table/utils'; -import { TransactionMenu } from './TransactionMenu'; - +} from '@desktop-client/components/table'; import { useCachedSchedules } from '@desktop-client/hooks/useCachedSchedules'; import { useContextMenu } from '@desktop-client/hooks/useContextMenu'; import { useDisplayPayee } from '@desktop-client/hooks/useDisplayPayee'; import { useMergedRefs } from '@desktop-client/hooks/useMergedRefs'; import { usePrevious } from '@desktop-client/hooks/usePrevious'; import { useProperFocus } from '@desktop-client/hooks/useProperFocus'; +import { + useSelectedDispatch, + useSelectedItems, +} from '@desktop-client/hooks/useSelected'; +import { + type SplitsExpandedContextValue, + useSplitsExpanded, +} from '@desktop-client/hooks/useSplitsExpanded'; import { pushModal } from '@desktop-client/modals/modalsSlice'; import { addNotification } from '@desktop-client/notifications/notificationsSlice'; import { @@ -123,6 +127,7 @@ import { getPayeesById, getCategoriesById, } from '@desktop-client/queries/queriesSlice'; +import { useDispatch } from '@desktop-client/redux'; type TransactionHeaderProps = { hasSelected: boolean; diff --git a/packages/desktop-client/src/components/util/AmountInput.tsx b/packages/desktop-client/src/components/util/AmountInput.tsx index ff01744d48..7522b2ced5 100644 --- a/packages/desktop-client/src/components/util/AmountInput.tsx +++ b/packages/desktop-client/src/components/util/AmountInput.tsx @@ -20,8 +20,7 @@ import { css, cx } from '@emotion/css'; import { evalArithmetic } from 'loot-core/shared/arithmetic'; import { amountToInteger, appendDecimals } from 'loot-core/shared/util'; -import { useFormat } from '../spreadsheet/useFormat'; - +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; import { useMergedRefs } from '@desktop-client/hooks/useMergedRefs'; import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; diff --git a/packages/desktop-client/src/components/util/GenericInput.jsx b/packages/desktop-client/src/components/util/GenericInput.jsx index cd7028c827..ade4f13cce 100644 --- a/packages/desktop-client/src/components/util/GenericInput.jsx +++ b/packages/desktop-client/src/components/util/GenericInput.jsx @@ -7,23 +7,22 @@ import { View } from '@actual-app/components/view'; import { getMonthYearFormat } from 'loot-core/shared/months'; import { integerToAmount, amountToInteger } from 'loot-core/shared/util'; -import { useSelector } from '../../redux'; -import { AccountAutocomplete } from '../autocomplete/AccountAutocomplete'; -import { Autocomplete } from '../autocomplete/Autocomplete'; -import { CategoryAutocomplete } from '../autocomplete/CategoryAutocomplete'; -import { FilterAutocomplete } from '../autocomplete/FilterAutocomplete'; -import { PayeeAutocomplete } from '../autocomplete/PayeeAutocomplete'; -import { ReportAutocomplete } from '../autocomplete/ReportAutocomplete'; -import { Checkbox } from '../forms'; -import { DateSelect } from '../select/DateSelect'; -import { RecurringSchedulePicker } from '../select/RecurringSchedulePicker'; - import { AmountInput } from './AmountInput'; import { PercentInput } from './PercentInput'; +import { AccountAutocomplete } from '@desktop-client/components/autocomplete/AccountAutocomplete'; +import { Autocomplete } from '@desktop-client/components/autocomplete/Autocomplete'; +import { CategoryAutocomplete } from '@desktop-client/components/autocomplete/CategoryAutocomplete'; +import { FilterAutocomplete } from '@desktop-client/components/autocomplete/FilterAutocomplete'; +import { PayeeAutocomplete } from '@desktop-client/components/autocomplete/PayeeAutocomplete'; +import { ReportAutocomplete } from '@desktop-client/components/autocomplete/ReportAutocomplete'; +import { Checkbox } from '@desktop-client/components/forms'; +import { DateSelect } from '@desktop-client/components/select/DateSelect'; +import { RecurringSchedulePicker } from '@desktop-client/components/select/RecurringSchedulePicker'; import { useCategories } from '@desktop-client/hooks/useCategories'; import { useDateFormat } from '@desktop-client/hooks/useDateFormat'; import { useReports } from '@desktop-client/hooks/useReports'; +import { useSelector } from '@desktop-client/redux'; export function GenericInput({ field, diff --git a/packages/desktop-client/src/components/util/PercentInput.tsx b/packages/desktop-client/src/components/util/PercentInput.tsx index dd8cbfad57..f4bd93cddf 100644 --- a/packages/desktop-client/src/components/util/PercentInput.tsx +++ b/packages/desktop-client/src/components/util/PercentInput.tsx @@ -12,8 +12,7 @@ import { Input } from '@actual-app/components/input'; import { evalArithmetic } from 'loot-core/shared/arithmetic'; -import { useFormat } from '../spreadsheet/useFormat'; - +import { useFormat } from '@desktop-client/components/spreadsheet/useFormat'; import { useMergedRefs } from '@desktop-client/hooks/useMergedRefs'; type PercentInputProps = { diff --git a/packages/desktop-client/src/hooks/useAccounts.ts b/packages/desktop-client/src/hooks/useAccounts.ts index cdadb5fb59..a8dbe8d88a 100644 --- a/packages/desktop-client/src/hooks/useAccounts.ts +++ b/packages/desktop-client/src/hooks/useAccounts.ts @@ -1,10 +1,10 @@ import { useEffect } from 'react'; -import { getAccounts } from '../queries/queriesSlice'; -import { useSelector, useDispatch } from '../redux'; - import { useInitialMount } from './useInitialMount'; +import { getAccounts } from '@desktop-client/queries/queriesSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; + export function useAccounts() { const dispatch = useDispatch(); const accountsLoaded = useSelector(state => state.queries.accountsLoaded); diff --git a/packages/desktop-client/src/hooks/useCategories.ts b/packages/desktop-client/src/hooks/useCategories.ts index 0c5f0855c5..23df8fd8c9 100644 --- a/packages/desktop-client/src/hooks/useCategories.ts +++ b/packages/desktop-client/src/hooks/useCategories.ts @@ -1,10 +1,10 @@ import { useEffect } from 'react'; -import { getCategories } from '../queries/queriesSlice'; -import { useSelector, useDispatch } from '../redux'; - import { useInitialMount } from './useInitialMount'; +import { getCategories } from '@desktop-client/queries/queriesSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; + export function useCategories() { const dispatch = useDispatch(); const categoriesLoaded = useSelector(state => state.queries.categoriesLoaded); diff --git a/packages/desktop-client/src/hooks/useFailedAccounts.ts b/packages/desktop-client/src/hooks/useFailedAccounts.ts index 86b20b948f..d6a0ff02f5 100644 --- a/packages/desktop-client/src/hooks/useFailedAccounts.ts +++ b/packages/desktop-client/src/hooks/useFailedAccounts.ts @@ -1,6 +1,6 @@ import { useMemo } from 'react'; -import { useSelector } from '../redux'; +import { useSelector } from '@desktop-client/redux'; export function useFailedAccounts() { const failedAccounts = useSelector(state => state.account.failedAccounts); diff --git a/packages/desktop-client/src/hooks/useGlobalPref.ts b/packages/desktop-client/src/hooks/useGlobalPref.ts index 455f6b4314..937d73244a 100644 --- a/packages/desktop-client/src/hooks/useGlobalPref.ts +++ b/packages/desktop-client/src/hooks/useGlobalPref.ts @@ -2,8 +2,8 @@ import { useCallback } from 'react'; import { type GlobalPrefs } from 'loot-core/types/prefs'; -import { saveGlobalPrefs } from '../prefs/prefsSlice'; -import { useSelector, useDispatch } from '../redux'; +import { saveGlobalPrefs } from '@desktop-client/prefs/prefsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; type SetGlobalPrefAction = ( value: GlobalPrefs[K], diff --git a/packages/desktop-client/src/hooks/useLatestVersion.ts b/packages/desktop-client/src/hooks/useLatestVersion.ts index c796264e27..c962e183d0 100644 --- a/packages/desktop-client/src/hooks/useLatestVersion.ts +++ b/packages/desktop-client/src/hooks/useLatestVersion.ts @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react'; -import { getIsOutdated, getLatestVersion } from '../util/versions'; +import { getIsOutdated, getLatestVersion } from '@desktop-client/util/versions'; export function useIsOutdated(): boolean { const [isOutdated, setIsOutdated] = useState(false); diff --git a/packages/desktop-client/src/hooks/useMetadataPref.ts b/packages/desktop-client/src/hooks/useMetadataPref.ts index 566b91096c..193c9d8d28 100644 --- a/packages/desktop-client/src/hooks/useMetadataPref.ts +++ b/packages/desktop-client/src/hooks/useMetadataPref.ts @@ -2,8 +2,8 @@ import { useCallback } from 'react'; import { type MetadataPrefs } from 'loot-core/types/prefs'; -import { savePrefs } from '../prefs/prefsSlice'; -import { useSelector, useDispatch } from '../redux'; +import { savePrefs } from '@desktop-client/prefs/prefsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; type SetMetadataPrefAction = ( value: MetadataPrefs[K], diff --git a/packages/desktop-client/src/hooks/useModalState.ts b/packages/desktop-client/src/hooks/useModalState.ts index 55c4791480..e53f113f3d 100644 --- a/packages/desktop-client/src/hooks/useModalState.ts +++ b/packages/desktop-client/src/hooks/useModalState.ts @@ -1,7 +1,7 @@ import { useCallback } from 'react'; -import { type Modal, popModal } from '../modals/modalsSlice'; -import { useSelector, useDispatch } from '../redux'; +import { type Modal, popModal } from '@desktop-client/modals/modalsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; type ModalState = { onClose: () => void; diff --git a/packages/desktop-client/src/hooks/useOverspentCategories.ts b/packages/desktop-client/src/hooks/useOverspentCategories.ts index db9f46c9a0..318587e74f 100644 --- a/packages/desktop-client/src/hooks/useOverspentCategories.ts +++ b/packages/desktop-client/src/hooks/useOverspentCategories.ts @@ -2,9 +2,10 @@ import { useEffect, useMemo, useState } from 'react'; import * as monthUtils from 'loot-core/shared/months'; -import { useCategories } from '@desktop-client/hooks/useCategories'; -import { useSpreadsheet } from '@desktop-client/hooks/useSpreadsheet'; -import { useSyncedPref } from '@desktop-client/hooks/useSyncedPref'; +import { useCategories } from './useCategories'; +import { useSpreadsheet } from './useSpreadsheet'; +import { useSyncedPref } from './useSyncedPref'; + import { envelopeBudget, trackingBudget, diff --git a/packages/desktop-client/src/hooks/usePayees.ts b/packages/desktop-client/src/hooks/usePayees.ts index 0184215104..525797a0f2 100644 --- a/packages/desktop-client/src/hooks/usePayees.ts +++ b/packages/desktop-client/src/hooks/usePayees.ts @@ -1,10 +1,13 @@ import { useEffect } from 'react'; -import { getCommonPayees, getPayees } from '../queries/queriesSlice'; -import { useSelector, useDispatch } from '../redux'; - import { useInitialMount } from './useInitialMount'; +import { + getCommonPayees, + getPayees, +} from '@desktop-client/queries/queriesSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; + export function useCommonPayees() { const dispatch = useDispatch(); const commonPayeesLoaded = useSelector( diff --git a/packages/desktop-client/src/hooks/useQuery.ts b/packages/desktop-client/src/hooks/useQuery.ts index 7ccaa33d2f..b6aff56b88 100644 --- a/packages/desktop-client/src/hooks/useQuery.ts +++ b/packages/desktop-client/src/hooks/useQuery.ts @@ -2,7 +2,7 @@ import { useState, useMemo, useEffect, type DependencyList } from 'react'; import { type Query } from 'loot-core/shared/query'; -import { liveQuery, type LiveQuery } from '../queries/liveQuery'; +import { liveQuery, type LiveQuery } from '@desktop-client/queries/liveQuery'; type UseQueryResult = { data: null | ReadonlyArray; diff --git a/packages/desktop-client/src/hooks/useSchedules.ts b/packages/desktop-client/src/hooks/useSchedules.ts index fe42ea1115..a4853000ac 100644 --- a/packages/desktop-client/src/hooks/useSchedules.ts +++ b/packages/desktop-client/src/hooks/useSchedules.ts @@ -12,11 +12,11 @@ import type { TransactionEntity, } from 'loot-core/types/models'; -import { liveQuery, type LiveQuery } from '../queries/liveQuery'; -import { accountFilter } from '../queries/queries'; - import { useSyncedPref } from './useSyncedPref'; +import { liveQuery, type LiveQuery } from '@desktop-client/queries/liveQuery'; +import { accountFilter } from '@desktop-client/queries/queries'; + export type ScheduleStatusType = ReturnType; export type ScheduleStatuses = Map; diff --git a/packages/desktop-client/src/hooks/useSyncServerStatus.ts b/packages/desktop-client/src/hooks/useSyncServerStatus.ts index d3c1c733b1..797d6ba570 100644 --- a/packages/desktop-client/src/hooks/useSyncServerStatus.ts +++ b/packages/desktop-client/src/hooks/useSyncServerStatus.ts @@ -1,5 +1,5 @@ -import { useServerURL } from '../components/ServerContext'; -import { useSelector } from '../redux'; +import { useServerURL } from '@desktop-client/components/ServerContext'; +import { useSelector } from '@desktop-client/redux'; type SyncServerStatus = 'offline' | 'no-server' | 'online'; diff --git a/packages/desktop-client/src/hooks/useSyncedPref.ts b/packages/desktop-client/src/hooks/useSyncedPref.ts index 54557af838..3de12c360b 100644 --- a/packages/desktop-client/src/hooks/useSyncedPref.ts +++ b/packages/desktop-client/src/hooks/useSyncedPref.ts @@ -2,8 +2,8 @@ import { useCallback } from 'react'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { saveSyncedPrefs } from '../prefs/prefsSlice'; -import { useSelector, useDispatch } from '../redux'; +import { saveSyncedPrefs } from '@desktop-client/prefs/prefsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; type SetSyncedPrefAction = ( value: SyncedPrefs[K], diff --git a/packages/desktop-client/src/hooks/useSyncedPrefs.ts b/packages/desktop-client/src/hooks/useSyncedPrefs.ts index 7bdcb686bc..a618bac955 100644 --- a/packages/desktop-client/src/hooks/useSyncedPrefs.ts +++ b/packages/desktop-client/src/hooks/useSyncedPrefs.ts @@ -2,8 +2,8 @@ import { useCallback } from 'react'; import { type SyncedPrefs } from 'loot-core/types/prefs'; -import { saveSyncedPrefs } from '../prefs/prefsSlice'; -import { useSelector, useDispatch } from '../redux'; +import { saveSyncedPrefs } from '@desktop-client/prefs/prefsSlice'; +import { useSelector, useDispatch } from '@desktop-client/redux'; type SetSyncedPrefsAction = (value: Partial) => void; diff --git a/packages/desktop-client/src/hooks/useTransactionBatchActions.ts b/packages/desktop-client/src/hooks/useTransactionBatchActions.ts index d58d0c1d74..49477c1f6e 100644 --- a/packages/desktop-client/src/hooks/useTransactionBatchActions.ts +++ b/packages/desktop-client/src/hooks/useTransactionBatchActions.ts @@ -17,9 +17,9 @@ import { type TransactionEntity, } from 'loot-core/types/models'; -import { pushModal } from '../modals/modalsSlice'; -import { aqlQuery } from '../queries/aqlQuery'; -import { useDispatch } from '../redux'; +import { pushModal } from '@desktop-client/modals/modalsSlice'; +import { aqlQuery } from '@desktop-client/queries/aqlQuery'; +import { useDispatch } from '@desktop-client/redux'; type BatchEditProps = { name: keyof TransactionEntity; diff --git a/packages/desktop-client/src/hooks/useTransactions.ts b/packages/desktop-client/src/hooks/useTransactions.ts index cddb9b3c3a..27510b75ee 100644 --- a/packages/desktop-client/src/hooks/useTransactions.ts +++ b/packages/desktop-client/src/hooks/useTransactions.ts @@ -3,7 +3,10 @@ import { useState, useRef, useEffect, useCallback } from 'react'; import type { Query } from 'loot-core/shared/query'; import type { TransactionEntity } from 'loot-core/types/models'; -import { type PagedQuery, pagedQuery } from '../queries/pagedQuery'; +import { + type PagedQuery, + pagedQuery, +} from '@desktop-client/queries/pagedQuery'; type UseTransactionsProps = { /** diff --git a/packages/desktop-client/src/hooks/useTransactionsSearch.ts b/packages/desktop-client/src/hooks/useTransactionsSearch.ts index 1adeef8163..8a697060a6 100644 --- a/packages/desktop-client/src/hooks/useTransactionsSearch.ts +++ b/packages/desktop-client/src/hooks/useTransactionsSearch.ts @@ -4,7 +4,7 @@ import { debounce } from 'lodash'; import type { Query } from 'loot-core/shared/query'; -import * as queries from '../queries/queries'; +import * as queries from '@desktop-client/queries/queries'; type UseTransactionsSearchProps = { updateQuery: (updateFn: (searchQuery: Query) => Query) => void; diff --git a/packages/desktop-client/src/hooks/useUndo.ts b/packages/desktop-client/src/hooks/useUndo.ts index 704eeee689..c624077f88 100644 --- a/packages/desktop-client/src/hooks/useUndo.ts +++ b/packages/desktop-client/src/hooks/useUndo.ts @@ -5,9 +5,9 @@ import { useResponsive } from '@actual-app/components/hooks/useResponsive'; import { addNotification, type Notification, -} from '../notifications/notificationsSlice'; -import { useDispatch } from '../redux'; -import { redo, undo } from '../undo'; +} from '@desktop-client/notifications/notificationsSlice'; +import { useDispatch } from '@desktop-client/redux'; +import { redo, undo } from '@desktop-client/undo'; type UndoActions = { undo: () => void; diff --git a/packages/desktop-client/src/hooks/useUpdatedAccounts.ts b/packages/desktop-client/src/hooks/useUpdatedAccounts.ts index 25a7ec729d..88e00fe972 100644 --- a/packages/desktop-client/src/hooks/useUpdatedAccounts.ts +++ b/packages/desktop-client/src/hooks/useUpdatedAccounts.ts @@ -1,4 +1,4 @@ -import { useSelector } from '../redux'; +import { useSelector } from '@desktop-client/redux'; export function useUpdatedAccounts() { return useSelector(state => state.queries.updatedAccounts); diff --git a/packages/desktop-client/src/modals/modalsSlice.ts b/packages/desktop-client/src/modals/modalsSlice.ts index 4a5bf06ec8..b28eb7a6f6 100644 --- a/packages/desktop-client/src/modals/modalsSlice.ts +++ b/packages/desktop-client/src/modals/modalsSlice.ts @@ -18,9 +18,9 @@ import { type NoteEntity, } from 'loot-core/types/models'; -import { resetApp, setAppState } from '../app/appSlice'; -import { createAppAsyncThunk } from '../redux'; -import { signOut } from '../users/usersSlice'; +import { resetApp, setAppState } from '@desktop-client/app/appSlice'; +import { createAppAsyncThunk } from '@desktop-client/redux'; +import { signOut } from '@desktop-client/users/usersSlice'; const sliceName = 'modals'; diff --git a/packages/desktop-client/src/notifications/notificationsSlice.ts b/packages/desktop-client/src/notifications/notificationsSlice.ts index b5304dbf33..ee2114ae18 100644 --- a/packages/desktop-client/src/notifications/notificationsSlice.ts +++ b/packages/desktop-client/src/notifications/notificationsSlice.ts @@ -2,7 +2,7 @@ import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; import { t } from 'i18next'; import { v4 as uuidv4 } from 'uuid'; -import { resetApp } from '../app/appSlice'; +import { resetApp } from '@desktop-client/app/appSlice'; const sliceName = 'notifications'; diff --git a/packages/desktop-client/src/prefs/prefsSlice.ts b/packages/desktop-client/src/prefs/prefsSlice.ts index 9fbb6687f3..b5e8dc17a5 100644 --- a/packages/desktop-client/src/prefs/prefsSlice.ts +++ b/packages/desktop-client/src/prefs/prefsSlice.ts @@ -8,10 +8,10 @@ import { type SyncedPrefs, } from 'loot-core/types/prefs'; -import { resetApp } from '../app/appSlice'; -import { setI18NextLanguage } from '../i18n'; -import { closeModal } from '../modals/modalsSlice'; -import { createAppAsyncThunk } from '../redux'; +import { resetApp } from '@desktop-client/app/appSlice'; +import { setI18NextLanguage } from '@desktop-client/i18n'; +import { closeModal } from '@desktop-client/modals/modalsSlice'; +import { createAppAsyncThunk } from '@desktop-client/redux'; const sliceName = 'prefs'; diff --git a/packages/desktop-client/src/queries/queries.ts b/packages/desktop-client/src/queries/queries.ts index 40d3331d9e..f35e179b43 100644 --- a/packages/desktop-client/src/queries/queries.ts +++ b/packages/desktop-client/src/queries/queries.ts @@ -21,7 +21,7 @@ import { type SheetFields, type Binding, type SheetNames, -} from '../components/spreadsheet'; +} from '@desktop-client/components/spreadsheet'; type BudgetType = Record< string, diff --git a/packages/desktop-client/src/queries/queriesSlice.ts b/packages/desktop-client/src/queries/queriesSlice.ts index 17158bcd48..1ce7cbfc4d 100644 --- a/packages/desktop-client/src/queries/queriesSlice.ts +++ b/packages/desktop-client/src/queries/queriesSlice.ts @@ -13,12 +13,12 @@ import { type PayeeEntity, } from 'loot-core/types/models'; -import { resetApp } from '../app/appSlice'; +import { resetApp } from '@desktop-client/app/appSlice'; import { addGenericErrorNotification, addNotification, -} from '../notifications/notificationsSlice'; -import { createAppAsyncThunk } from '../redux'; +} from '@desktop-client/notifications/notificationsSlice'; +import { createAppAsyncThunk } from '@desktop-client/redux'; const sliceName = 'queries'; diff --git a/packages/desktop-client/src/redux/mock.tsx b/packages/desktop-client/src/redux/mock.tsx index 1ea1fe7cff..055e40d595 100644 --- a/packages/desktop-client/src/redux/mock.tsx +++ b/packages/desktop-client/src/redux/mock.tsx @@ -3,40 +3,40 @@ import { Provider } from 'react-redux'; import { configureStore, combineReducers } from '@reduxjs/toolkit'; +import { type store as realStore } from './store'; + import { name as accountsSliceName, reducer as accountsSliceReducer, -} from '../accounts/accountsSlice'; +} from '@desktop-client/accounts/accountsSlice'; import { name as appSliceName, reducer as appSliceReducer, -} from '../app/appSlice'; +} from '@desktop-client/app/appSlice'; import { name as budgetsSliceName, reducer as budgetsSliceReducer, -} from '../budgets/budgetsSlice'; +} from '@desktop-client/budgets/budgetsSlice'; import { name as modalsSliceName, reducer as modalsSliceReducer, -} from '../modals/modalsSlice'; +} from '@desktop-client/modals/modalsSlice'; import { name as notificationsSliceName, reducer as notificationsSliceReducer, -} from '../notifications/notificationsSlice'; +} from '@desktop-client/notifications/notificationsSlice'; import { name as prefsSliceName, reducer as prefsSliceReducer, -} from '../prefs/prefsSlice'; +} from '@desktop-client/prefs/prefsSlice'; import { name as queriesSliceName, reducer as queriesSliceReducer, -} from '../queries/queriesSlice'; +} from '@desktop-client/queries/queriesSlice'; import { name as usersSliceName, reducer as usersSliceReducer, -} from '../users/usersSlice'; - -import { type store as realStore } from './store'; +} from '@desktop-client/users/usersSlice'; const appReducer = combineReducers({ [accountsSliceName]: accountsSliceReducer, diff --git a/packages/desktop-client/src/redux/store.ts b/packages/desktop-client/src/redux/store.ts index 2cb3ee3fb3..d305d345ed 100644 --- a/packages/desktop-client/src/redux/store.ts +++ b/packages/desktop-client/src/redux/store.ts @@ -8,36 +8,36 @@ import { import { name as accountsSliceName, reducer as accountsSliceReducer, -} from '../accounts/accountsSlice'; +} from '@desktop-client/accounts/accountsSlice'; import { name as appSliceName, reducer as appSliceReducer, -} from '../app/appSlice'; +} from '@desktop-client/app/appSlice'; import { name as budgetsSliceName, reducer as budgetsSliceReducer, -} from '../budgets/budgetsSlice'; +} from '@desktop-client/budgets/budgetsSlice'; import { name as modalsSliceName, reducer as modalsSliceReducer, -} from '../modals/modalsSlice'; +} from '@desktop-client/modals/modalsSlice'; import { name as notificationsSliceName, reducer as notificationsSliceReducer, addNotification, -} from '../notifications/notificationsSlice'; +} from '@desktop-client/notifications/notificationsSlice'; import { name as prefsSliceName, reducer as prefsSliceReducer, -} from '../prefs/prefsSlice'; +} from '@desktop-client/prefs/prefsSlice'; import { name as queriesSliceName, reducer as queriesSliceReducer, -} from '../queries/queriesSlice'; +} from '@desktop-client/queries/queriesSlice'; import { name as usersSliceName, reducer as usersSliceReducer, -} from '../users/usersSlice'; +} from '@desktop-client/users/usersSlice'; const rootReducer = combineReducers({ [accountsSliceName]: accountsSliceReducer, diff --git a/packages/desktop-client/src/style/themes/dark.ts b/packages/desktop-client/src/style/themes/dark.ts index 893ba14df7..62192a6066 100644 --- a/packages/desktop-client/src/style/themes/dark.ts +++ b/packages/desktop-client/src/style/themes/dark.ts @@ -1,4 +1,4 @@ -import * as colorPalette from '../palette'; +import * as colorPalette from '@desktop-client/style/palette'; export const pageBackground = colorPalette.gray900; export const pageBackgroundModalActive = colorPalette.gray800; diff --git a/packages/desktop-client/src/style/themes/development.ts b/packages/desktop-client/src/style/themes/development.ts index 08595b10c6..186d5c4398 100644 --- a/packages/desktop-client/src/style/themes/development.ts +++ b/packages/desktop-client/src/style/themes/development.ts @@ -1,4 +1,4 @@ -import * as colorPalette from '../palette'; +import * as colorPalette from '@desktop-client/style/palette'; export const pageBackground = colorPalette.navy100; export const pageBackgroundModalActive = colorPalette.navy200; diff --git a/packages/desktop-client/src/style/themes/light.ts b/packages/desktop-client/src/style/themes/light.ts index df648c74f1..e14cdc1c73 100644 --- a/packages/desktop-client/src/style/themes/light.ts +++ b/packages/desktop-client/src/style/themes/light.ts @@ -1,4 +1,4 @@ -import * as colorPalette from '../palette'; +import * as colorPalette from '@desktop-client/style/palette'; export const pageBackground = colorPalette.navy100; export const pageBackgroundModalActive = colorPalette.navy200; diff --git a/packages/desktop-client/src/style/themes/midnight.ts b/packages/desktop-client/src/style/themes/midnight.ts index 71400907ea..38332e2b97 100644 --- a/packages/desktop-client/src/style/themes/midnight.ts +++ b/packages/desktop-client/src/style/themes/midnight.ts @@ -1,4 +1,4 @@ -import * as colorPalette from '../palette'; +import * as colorPalette from '@desktop-client/style/palette'; export const pageBackground = colorPalette.gray600; export const pageBackgroundModalActive = colorPalette.gray700; diff --git a/packages/desktop-client/src/users/usersSlice.ts b/packages/desktop-client/src/users/usersSlice.ts index 3887eed243..e58a1b9a0f 100644 --- a/packages/desktop-client/src/users/usersSlice.ts +++ b/packages/desktop-client/src/users/usersSlice.ts @@ -3,10 +3,13 @@ import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; import { send } from 'loot-core/platform/client/fetch'; import { type Handlers } from 'loot-core/types/handlers'; -import { resetApp } from '../app/appSlice'; -import { closeBudget, loadAllFiles } from '../budgets/budgetsSlice'; -import { loadGlobalPrefs } from '../prefs/prefsSlice'; -import { createAppAsyncThunk } from '../redux'; +import { resetApp } from '@desktop-client/app/appSlice'; +import { + closeBudget, + loadAllFiles, +} from '@desktop-client/budgets/budgetsSlice'; +import { loadGlobalPrefs } from '@desktop-client/prefs/prefsSlice'; +import { createAppAsyncThunk } from '@desktop-client/redux'; const sliceName = 'user'; diff --git a/tsconfig.json b/tsconfig.json index 838dee965e..bd1112bbbd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,7 +32,8 @@ "paths": { // TEMPORARY: Until we can fix the "exports" in the loot-core package.json "loot-core/*": ["./packages/loot-core/src/*"], - "@desktop-client/*": ["./packages/desktop-client/src/*"] + "@desktop-client/*": ["./packages/desktop-client/src/*"], + "@desktop-client/e2e/*": ["./packages/desktop-client/e2e/*"] }, "plugins": [ { diff --git a/upcoming-release-notes/4960.md b/upcoming-release-notes/4960.md new file mode 100644 index 0000000000..0319713458 --- /dev/null +++ b/upcoming-release-notes/4960.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [joel-jeremy] +--- + +Use @desktop-client alias in all of desktop-client package diff --git a/yarn.lock b/yarn.lock index 72deb78ff7..9b1aff1758 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7502,6 +7502,7 @@ __metadata: eslint-plugin-react: "npm:^7.37.5" eslint-plugin-react-hooks: "npm:^5.2.0" eslint-plugin-rulesdir: "npm:^0.2.2" + eslint-plugin-typescript-paths: "npm:^0.0.33" globals: "npm:^15.15.0" html-to-image: "npm:^1.11.13" husky: "npm:^9.1.7" @@ -10979,6 +10980,17 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-typescript-paths@npm:^0.0.33": + version: 0.0.33 + resolution: "eslint-plugin-typescript-paths@npm:0.0.33" + dependencies: + jsonc-parser: "npm:^3.2.0" + peerDependencies: + eslint: ">=8" + checksum: 10/8689e339497c76f4da5b8bf64e19f5397855095535e5a90c09d392513c818fce7af700b16f6c90ca75da72ac5a80031ae1a590f8206f81f47bd0a80cf5915aa3 + languageName: node + linkType: hard + "eslint-scope@npm:5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" @@ -14228,6 +14240,13 @@ __metadata: languageName: node linkType: hard +"jsonc-parser@npm:^3.2.0": + version: 3.3.1 + resolution: "jsonc-parser@npm:3.3.1" + checksum: 10/9b0dc391f20b47378f843ef1e877e73ec652a5bdc3c5fa1f36af0f119a55091d147a86c1ee86a232296f55c929bba174538c2bf0312610e0817a22de131cc3f4 + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0"