diff --git a/src/App.tsx b/src/App.tsx index 1779e079..0d13dcae 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -12,66 +12,69 @@ import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; import { loadErrorMessages, loadDevMessages } from '@apollo/client/dev'; import { loadable } from 'react-lazily/loadable'; import Box from '@mui/material/Box'; -import { AppContext } from '@/modules/core/contexts/AppContext.tsx'; +import { AppContext } from '@/features/core/contexts/AppContext.tsx'; import '@/i18n'; -import { DefaultNavBar } from '@/modules/navigation-bar/components/DefaultNavBar.tsx'; +import { DefaultNavBar } from '@/features/navigation-bar/components/DefaultNavBar.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { WebUIUpdateChecker } from '@/modules/app-updates/components/WebUIUpdateChecker.tsx'; -import { ServerUpdateChecker } from '@/modules/app-updates/components/ServerUpdateChecker.tsx'; -import { lazyLoadFallback } from '@/modules/core/utils/LazyLoad.tsx'; -import { ErrorBoundary } from '@/modules/core/components/feedback/ErrorBoundary.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; +import { WebUIUpdateChecker } from '@/features/app-updates/components/WebUIUpdateChecker.tsx'; +import { ServerUpdateChecker } from '@/features/app-updates/components/ServerUpdateChecker.tsx'; +import { lazyLoadFallback } from '@/features/core/utils/LazyLoad.tsx'; +import { ErrorBoundary } from '@/features/core/components/feedback/ErrorBoundary.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { BrowseTab } from '@/modules/browse/Browse.types.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { BrowseTab } from '@/features/browse/Browse.types.ts'; -const { Browse } = loadable(() => import('@/modules/browse/screens/Browse.tsx'), lazyLoadFallback); -const { DownloadQueue } = loadable(() => import('@/modules/downloads/screens/DownloadQueue.tsx'), lazyLoadFallback); -const { Library } = loadable(() => import('@/modules/library/screens/Library.tsx'), lazyLoadFallback); -const { Manga } = loadable(() => import('@/modules/manga/screens/Manga.tsx'), lazyLoadFallback); -const { SearchAll } = loadable(() => import('@/modules/global-search/screens/SearchAll.tsx'), lazyLoadFallback); -const { Settings } = loadable(() => import('@/modules/settings/screens/Settings.tsx'), lazyLoadFallback); -const { About } = loadable(() => import('@/modules/settings/screens/About.tsx'), lazyLoadFallback); -const { Backup } = loadable(() => import('@/modules/backup/screens/Backup.tsx'), lazyLoadFallback); +const { Browse } = loadable(() => import('@/features/browse/screens/Browse.tsx'), lazyLoadFallback); +const { DownloadQueue } = loadable(() => import('@/features/downloads/screens/DownloadQueue.tsx'), lazyLoadFallback); +const { Library } = loadable(() => import('@/features/library/screens/Library.tsx'), lazyLoadFallback); +const { Manga } = loadable(() => import('@/features/manga/screens/Manga.tsx'), lazyLoadFallback); +const { SearchAll } = loadable(() => import('@/features/global-search/screens/SearchAll.tsx'), lazyLoadFallback); +const { Settings } = loadable(() => import('@/features/settings/screens/Settings.tsx'), lazyLoadFallback); +const { About } = loadable(() => import('@/features/settings/screens/About.tsx'), lazyLoadFallback); +const { Backup } = loadable(() => import('@/features/backup/screens/Backup.tsx'), lazyLoadFallback); const { CategorySettings } = loadable( - () => import('@/modules/category/screens/CategorySettings.tsx'), + () => import('@/features/category/screens/CategorySettings.tsx'), lazyLoadFallback, ); -const { SourceConfigure } = loadable(() => import('@/modules/source/screens/SourceConfigure.tsx'), lazyLoadFallback); -const { SourceMangas } = loadable(() => import('@/modules/source/screens/SourceMangas.tsx'), lazyLoadFallback); -const { ExtensionInfo } = loadable(() => import('@/modules/extension/screens/ExtensionInfo.tsx'), lazyLoadFallback); -const { Updates } = loadable(() => import('@/modules/updates/screens/Updates.tsx'), lazyLoadFallback); -const { History } = loadable(() => import('@/modules/history/screens/History.tsx'), lazyLoadFallback); -const { LibrarySettings } = loadable(() => import('@/modules/library/screens/LibrarySettings.tsx'), lazyLoadFallback); +const { SourceConfigure } = loadable(() => import('@/features/source/screens/SourceConfigure.tsx'), lazyLoadFallback); +const { SourceMangas } = loadable(() => import('@/features/source/screens/SourceMangas.tsx'), lazyLoadFallback); +const { ExtensionInfo } = loadable(() => import('@/features/extension/screens/ExtensionInfo.tsx'), lazyLoadFallback); +const { Updates } = loadable(() => import('@/features/updates/screens/Updates.tsx'), lazyLoadFallback); +const { History } = loadable(() => import('@/features/history/screens/History.tsx'), lazyLoadFallback); +const { LibrarySettings } = loadable(() => import('@/features/library/screens/LibrarySettings.tsx'), lazyLoadFallback); const { DownloadSettings } = loadable( - () => import('@/modules/downloads/screens/DownloadSettings.tsx'), + () => import('@/features/downloads/screens/DownloadSettings.tsx'), + lazyLoadFallback, +); +const { ServerSettings } = loadable(() => import('@/features/settings/screens/ServerSettings.tsx'), lazyLoadFallback); +const { BrowseSettings } = loadable(() => import('@/features/browse/screens/BrowseSettings.tsx'), lazyLoadFallback); +const { WebUISettings } = loadable(() => import('@/features/settings/screens/WebUISettings.tsx'), lazyLoadFallback); +const { Migrate } = loadable(() => import('@/features/migration/screens/Migrate.tsx'), lazyLoadFallback); +const { DeviceSetting } = loadable(() => import('@/features/device/screens/DeviceSetting.tsx'), lazyLoadFallback); +const { TrackingSettings } = loadable( + () => import('@/features/tracker/screens/TrackingSettings.tsx'), lazyLoadFallback, ); -const { ServerSettings } = loadable(() => import('@/modules/settings/screens/ServerSettings.tsx'), lazyLoadFallback); -const { BrowseSettings } = loadable(() => import('@/modules/browse/screens/BrowseSettings.tsx'), lazyLoadFallback); -const { WebUISettings } = loadable(() => import('@/modules/settings/screens/WebUISettings.tsx'), lazyLoadFallback); -const { Migrate } = loadable(() => import('@/modules/migration/screens/Migrate.tsx'), lazyLoadFallback); -const { DeviceSetting } = loadable(() => import('@/modules/device/screens/DeviceSetting.tsx'), lazyLoadFallback); -const { TrackingSettings } = loadable(() => import('@/modules/tracker/screens/TrackingSettings.tsx'), lazyLoadFallback); const { TrackerOAuthLogin } = loadable( - () => import('@/modules/tracker/screens/TrackerOAuthLogin.tsx'), + () => import('@/features/tracker/screens/TrackerOAuthLogin.tsx'), lazyLoadFallback, ); const { LibraryDuplicates } = loadable( - () => import('@/modules/library/screens/LibraryDuplicates.tsx'), + () => import('@/features/library/screens/LibraryDuplicates.tsx'), lazyLoadFallback, ); -const { Appearance } = loadable(() => import('@/modules/settings/screens/Appearance.tsx'), lazyLoadFallback); +const { Appearance } = loadable(() => import('@/features/settings/screens/Appearance.tsx'), lazyLoadFallback); const { GlobalReaderSettings } = loadable( - () => import('@/modules/reader/screens/GlobalReaderSettings.tsx'), + () => import('@/features/reader/screens/GlobalReaderSettings.tsx'), lazyLoadFallback, ); -const { More } = loadable(() => import('@/modules/settings/screens/More.tsx'), lazyLoadFallback); -const { Reader } = loadable(() => import('@/modules/reader/screens/Reader.tsx'), lazyLoadFallback); -const { HistorySettings } = loadable(() => import('@/modules/history/screens/HistorySettings.tsx'), lazyLoadFallback); +const { More } = loadable(() => import('@/features/settings/screens/More.tsx'), lazyLoadFallback); +const { Reader } = loadable(() => import('@/features/reader/screens/Reader.tsx'), lazyLoadFallback); +const { HistorySettings } = loadable(() => import('@/features/history/screens/HistorySettings.tsx'), lazyLoadFallback); if (process.env.NODE_ENV !== 'production') { // Adds messages only in a dev environment diff --git a/src/modules/app-updates/AppUpdateChecker.types.ts b/src/features/app-updates/AppUpdateChecker.types.ts similarity index 100% rename from src/modules/app-updates/AppUpdateChecker.types.ts rename to src/features/app-updates/AppUpdateChecker.types.ts diff --git a/src/modules/app-updates/components/ServerUpdateChecker.tsx b/src/features/app-updates/components/ServerUpdateChecker.tsx similarity index 91% rename from src/modules/app-updates/components/ServerUpdateChecker.tsx rename to src/features/app-updates/components/ServerUpdateChecker.tsx index 59e6bc6e..5e4f8e0b 100644 --- a/src/modules/app-updates/components/ServerUpdateChecker.tsx +++ b/src/features/app-updates/components/ServerUpdateChecker.tsx @@ -15,11 +15,11 @@ import DialogContentText from '@mui/material/DialogContentText'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { useUpdateChecker } from '@/modules/app-updates/hooks/useUpdateChecker.tsx'; -import { VersionUpdateInfoDialog } from '@/modules/app-updates/components/VersionUpdateInfoDialog.tsx'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { useUpdateChecker } from '@/features/app-updates/hooks/useUpdateChecker.tsx'; +import { VersionUpdateInfoDialog } from '@/features/app-updates/components/VersionUpdateInfoDialog.tsx'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; const disabledUpdateCheck = () => Promise.resolve(); diff --git a/src/modules/app-updates/components/VersionInfo.tsx b/src/features/app-updates/components/VersionInfo.tsx similarity index 100% rename from src/modules/app-updates/components/VersionInfo.tsx rename to src/features/app-updates/components/VersionInfo.tsx diff --git a/src/modules/app-updates/components/VersionUpdateInfoDialog.tsx b/src/features/app-updates/components/VersionUpdateInfoDialog.tsx similarity index 98% rename from src/modules/app-updates/components/VersionUpdateInfoDialog.tsx rename to src/features/app-updates/components/VersionUpdateInfoDialog.tsx index 3ebbdd94..3081ebdd 100644 --- a/src/modules/app-updates/components/VersionUpdateInfoDialog.tsx +++ b/src/features/app-updates/components/VersionUpdateInfoDialog.tsx @@ -17,7 +17,7 @@ import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import { useTranslation } from 'react-i18next'; import Stack from '@mui/material/Stack'; -import { useUpdateChecker } from '@/modules/app-updates/hooks/useUpdateChecker.tsx'; +import { useUpdateChecker } from '@/features/app-updates/hooks/useUpdateChecker.tsx'; interface BaseProps { info: string; diff --git a/src/modules/app-updates/components/WebUIUpdateChecker.tsx b/src/features/app-updates/components/WebUIUpdateChecker.tsx similarity index 94% rename from src/modules/app-updates/components/WebUIUpdateChecker.tsx rename to src/features/app-updates/components/WebUIUpdateChecker.tsx index 41056645..ef0fc787 100644 --- a/src/modules/app-updates/components/WebUIUpdateChecker.tsx +++ b/src/features/app-updates/components/WebUIUpdateChecker.tsx @@ -16,13 +16,13 @@ import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { UpdateState, WebUiChannel, WebUiUpdateStatus } from '@/lib/graphql/generated/graphql.ts'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { ABOUT_WEBUI, WEBUI_UPDATE_CHECK } from '@/lib/graphql/fragments/InfoFragments.ts'; -import { VersionUpdateInfoDialog } from '@/modules/app-updates/components/VersionUpdateInfoDialog.tsx'; -import { useUpdateChecker } from '@/modules/app-updates/hooks/useUpdateChecker.tsx'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { VersionUpdateInfoDialog } from '@/features/app-updates/components/VersionUpdateInfoDialog.tsx'; +import { useUpdateChecker } from '@/features/app-updates/hooks/useUpdateChecker.tsx'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; const disabledUpdateCheck = () => Promise.resolve(); diff --git a/src/modules/app-updates/hooks/useUpdateChecker.tsx b/src/features/app-updates/hooks/useUpdateChecker.tsx similarity index 97% rename from src/modules/app-updates/hooks/useUpdateChecker.tsx rename to src/features/app-updates/hooks/useUpdateChecker.tsx index f9cc9485..f7b38e48 100644 --- a/src/modules/app-updates/hooks/useUpdateChecker.tsx +++ b/src/features/app-updates/hooks/useUpdateChecker.tsx @@ -8,7 +8,7 @@ import { useCallback, useEffect, useMemo } from 'react'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; const UPDATE_CHECK_INTERVAL = 1000 * 60 * 60; // 1 hour const UPDATE_REMINDER_THRESHOLD = 1000 * 60 * 60; // 1 hour diff --git a/src/modules/backup/screens/Backup.tsx b/src/features/backup/screens/Backup.tsx similarity index 94% rename from src/modules/backup/screens/Backup.tsx rename to src/features/backup/screens/Backup.tsx index 6464cdf5..48a9567a 100644 --- a/src/modules/backup/screens/Backup.tsx +++ b/src/features/backup/screens/Backup.tsx @@ -25,20 +25,20 @@ import { Link } from 'react-router-dom'; import Stack from '@mui/material/Stack'; import { useEventListener, useMergedRef, useWindowEvent } from '@mantine/hooks'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { BackupRestoreState, ValidateBackupQuery } from '@/lib/graphql/generated/graphql.ts'; -import { Progress } from '@/modules/core/components/feedback/Progress.tsx'; -import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; -import { TimeSetting } from '@/modules/core/components/settings/TimeSetting.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { Progress } from '@/features/core/components/feedback/Progress.tsx'; +import { TextSetting } from '@/features/core/components/settings/text/TextSetting.tsx'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; +import { TimeSetting } from '@/features/core/components/settings/TimeSetting.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { ServerSettings } from '@/modules/settings/Settings.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { ServerSettings } from '@/features/settings/Settings.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { BrowseTab } from '@/modules/browse/Browse.types.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { BrowseTab } from '@/features/browse/Browse.types.ts'; type BackupSettingsType = Pick; diff --git a/src/modules/browse/Browse.types.ts b/src/features/browse/Browse.types.ts similarity index 91% rename from src/modules/browse/Browse.types.ts rename to src/features/browse/Browse.types.ts index a9a5e9e7..87b90eb2 100644 --- a/src/modules/browse/Browse.types.ts +++ b/src/features/browse/Browse.types.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { SourceIdInfo } from '@/modules/source/Source.types.ts'; +import { SourceIdInfo } from '@/features/source/Source.types.ts'; export type MetadataBrowseSettings = { hideLibraryEntries: boolean; diff --git a/src/modules/browse/screens/Browse.tsx b/src/features/browse/screens/Browse.tsx similarity index 77% rename from src/modules/browse/screens/Browse.tsx rename to src/features/browse/screens/Browse.tsx index ee077585..aed23cd8 100644 --- a/src/modules/browse/screens/Browse.tsx +++ b/src/features/browse/screens/Browse.tsx @@ -10,17 +10,17 @@ import { useCallback, useRef, useState } from 'react'; import Tab from '@mui/material/Tab'; import { useTranslation } from 'react-i18next'; import { StringParam, useQueryParam } from 'use-query-params'; -import { Sources } from '@/modules/source/screens/Sources.tsx'; -import { Extensions } from '@/modules/extension/screens/Extensions.tsx'; -import { TabPanel } from '@/modules/core/components/tabs/TabPanel.tsx'; -import { TabsWrapper } from '@/modules/core/components/tabs/TabsWrapper.tsx'; -import { TabsMenu } from '@/modules/core/components/tabs/TabsMenu.tsx'; -import { Migration } from '@/modules/migration/screens/Migration.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { BrowseTab } from '@/modules/browse/Browse.types.ts'; +import { Sources } from '@/features/source/screens/Sources.tsx'; +import { Extensions } from '@/features/extension/screens/Extensions.tsx'; +import { TabPanel } from '@/features/core/components/tabs/TabPanel.tsx'; +import { TabsWrapper } from '@/features/core/components/tabs/TabsWrapper.tsx'; +import { TabsMenu } from '@/features/core/components/tabs/TabsMenu.tsx'; +import { Migration } from '@/features/migration/screens/Migration.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { BrowseTab } from '@/features/browse/Browse.types.ts'; import { GROUPED_VIRTUOSO_Z_INDEX } from '@/lib/virtuoso/Virtuoso.constants.ts'; -import { SearchParam } from '@/modules/core/Core.types.ts'; +import { SearchParam } from '@/features/core/Core.types.ts'; export function Browse() { const { t } = useTranslation(); diff --git a/src/modules/browse/screens/BrowseSettings.tsx b/src/features/browse/screens/BrowseSettings.tsx similarity index 88% rename from src/modules/browse/screens/BrowseSettings.tsx rename to src/features/browse/screens/BrowseSettings.tsx index 5c906270..6e420bfb 100644 --- a/src/modules/browse/screens/BrowseSettings.tsx +++ b/src/features/browse/screens/BrowseSettings.tsx @@ -12,21 +12,21 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; -import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx'; -import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; +import { MutableListSetting } from '@/features/core/components/settings/MutableListSetting.tsx'; +import { TextSetting } from '@/features/core/components/settings/text/TextSetting.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { MetadataBrowseSettings } from '@/modules/browse/Browse.types.ts'; -import { ServerSettings as GqlServerSettings } from '@/modules/settings/Settings.types.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { MetadataBrowseSettings } from '@/features/browse/Browse.types.ts'; +import { ServerSettings as GqlServerSettings } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; type ExtensionsSettings = Pick; diff --git a/src/modules/category/Category.constants.ts b/src/features/category/Category.constants.ts similarity index 100% rename from src/modules/category/Category.constants.ts rename to src/features/category/Category.constants.ts diff --git a/src/modules/category/Category.types.ts b/src/features/category/Category.types.ts similarity index 92% rename from src/modules/category/Category.types.ts rename to src/features/category/Category.types.ts index 1e17f450..187bae56 100644 --- a/src/modules/category/Category.types.ts +++ b/src/features/category/Category.types.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { LibraryOptions } from '@/modules/library/Library.types.ts'; +import { LibraryOptions } from '@/features/library/Library.types.ts'; import { CategoryMetaType, CategoryType } from '@/lib/graphql/generated/graphql.ts'; export interface ICategoryMetadata extends LibraryOptions {} diff --git a/src/modules/category/components/CategoriesInclusionSetting.tsx b/src/features/category/components/CategoriesInclusionSetting.tsx similarity index 96% rename from src/modules/category/components/CategoriesInclusionSetting.tsx rename to src/features/category/components/CategoriesInclusionSetting.tsx index f52eb52f..787561ba 100644 --- a/src/modules/category/components/CategoriesInclusionSetting.tsx +++ b/src/features/category/components/CategoriesInclusionSetting.tsx @@ -17,17 +17,17 @@ import DialogContentText from '@mui/material/DialogContentText'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; import { t as translate } from 'i18next'; -import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { ThreeStateCheckboxInput } from '@/features/core/components/inputs/ThreeStateCheckboxInput.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { IncludeOrExclude } from '@/lib/graphql/generated/graphql.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { CheckboxContainer } from '@/modules/core/components/inputs/CheckboxContainer.ts'; +import { CheckboxContainer } from '@/features/core/components/inputs/CheckboxContainer.ts'; import { CategoryDownloadInclusionInfo, CategoryIdInfo, CategoryNameInfo, CategoryUpdateInclusionInfo, -} from '@/modules/category/Category.types.ts'; +} from '@/features/category/Category.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; type CategoryType = CategoryIdInfo & CategoryNameInfo & CategoryUpdateInclusionInfo & CategoryDownloadInclusionInfo; diff --git a/src/modules/category/components/CategorySelect.tsx b/src/features/category/components/CategorySelect.tsx similarity index 93% rename from src/modules/category/components/CategorySelect.tsx rename to src/features/category/components/CategorySelect.tsx index 80341832..92c3788d 100644 --- a/src/modules/category/components/CategorySelect.tsx +++ b/src/features/category/components/CategorySelect.tsx @@ -17,14 +17,14 @@ import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; import Stack from '@mui/material/Stack'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { useSelectableCollection } from '@/modules/collection/hooks/useSelectableCollection.ts'; -import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; -import { Categories } from '@/modules/category/services/Categories.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { useSelectableCollection } from '@/features/collection/hooks/useSelectableCollection.ts'; +import { ThreeStateCheckboxInput } from '@/features/core/components/inputs/ThreeStateCheckboxInput.tsx'; +import { Categories } from '@/features/category/services/Categories.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { updateMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { updateMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { GetCategoriesBaseQuery, GetCategoriesBaseQueryVariables, @@ -33,7 +33,7 @@ import { } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_BASE } from '@/lib/graphql/queries/CategoryQuery.ts'; import { GET_MANGA_CATEGORIES } from '@/lib/graphql/queries/MangaQuery.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; type BaseProps = { diff --git a/src/modules/category/components/CategorySettingsCard.tsx b/src/features/category/components/CategorySettingsCard.tsx similarity index 92% rename from src/modules/category/components/CategorySettingsCard.tsx rename to src/features/category/components/CategorySettingsCard.tsx index 420b9f67..003ac3e2 100644 --- a/src/modules/category/components/CategorySettingsCard.tsx +++ b/src/features/category/components/CategorySettingsCard.tsx @@ -15,10 +15,10 @@ import Box from '@mui/material/Box'; import Card from '@mui/material/Card'; import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { CategoryType } from '@/lib/graphql/generated/graphql.ts'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; export const CategorySettingsCard = ({ category, diff --git a/src/modules/category/components/CreateOrEditCategoryDialog.tsx b/src/features/category/components/CreateOrEditCategoryDialog.tsx similarity index 97% rename from src/modules/category/components/CreateOrEditCategoryDialog.tsx rename to src/features/category/components/CreateOrEditCategoryDialog.tsx index 0a57833f..cb7b1e0a 100644 --- a/src/modules/category/components/CreateOrEditCategoryDialog.tsx +++ b/src/features/category/components/CreateOrEditCategoryDialog.tsx @@ -17,9 +17,9 @@ import Checkbox from '@mui/material/Checkbox'; import FormControlLabel from '@mui/material/FormControlLabel'; import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { CategoryDefaultInfo, CategoryIdInfo, CategoryNameInfo } from '@/modules/category/Category.types.ts'; +import { CategoryDefaultInfo, CategoryIdInfo, CategoryNameInfo } from '@/features/category/Category.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { assertIsDefined } from '@/Asserts.ts'; export const CreateOrEditCategoryDialog = ({ diff --git a/src/modules/category/hooks/useCategorySelect.tsx b/src/features/category/hooks/useCategorySelect.tsx similarity index 93% rename from src/modules/category/hooks/useCategorySelect.tsx rename to src/features/category/hooks/useCategorySelect.tsx index f80ce1d6..f602786b 100644 --- a/src/modules/category/hooks/useCategorySelect.tsx +++ b/src/features/category/hooks/useCategorySelect.tsx @@ -7,7 +7,7 @@ */ import { useMemo, useState } from 'react'; -import { CategorySelect, CategorySelectProps } from '@/modules/category/components/CategorySelect.tsx'; +import { CategorySelect, CategorySelectProps } from '@/features/category/components/CategorySelect.tsx'; export const useCategorySelect = ({ mangaId, diff --git a/src/modules/category/screens/CategorySettings.tsx b/src/features/category/screens/CategorySettings.tsx similarity index 88% rename from src/modules/category/screens/CategorySettings.tsx rename to src/features/category/screens/CategorySettings.tsx index 2609b57f..7a6bceea 100644 --- a/src/modules/category/screens/CategorySettings.tsx +++ b/src/features/category/screens/CategorySettings.tsx @@ -14,21 +14,21 @@ import Box from '@mui/material/Box'; import { closestCenter, DndContext, DragEndEvent } from '@dnd-kit/core'; import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { DEFAULT_FULL_FAB_HEIGHT } from '@/modules/core/components/buttons/StyledFab.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { DEFAULT_FULL_FAB_HEIGHT } from '@/features/core/components/buttons/StyledFab.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetCategoriesSettingsQuery, GetCategoriesSettingsQueryVariables } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_SETTINGS } from '@/lib/graphql/queries/CategoryQuery.ts'; -import { CategorySettingsCard } from '@/modules/category/components/CategorySettingsCard.tsx'; -import { CategoryIdInfo } from '@/modules/category/Category.types.ts'; +import { CategorySettingsCard } from '@/features/category/components/CategorySettingsCard.tsx'; +import { CategoryIdInfo } from '@/features/category/Category.types.ts'; import { getErrorMessage, noOp } from '@/lib/HelperFunctions.ts'; import { DndSortableItem } from '@/lib/dnd-kit/DndSortableItem.tsx'; import { DndKitUtil } from '@/lib/dnd-kit/DndKitUtil.ts'; import { DndOverlayItem } from '@/lib/dnd-kit/DndOverlayItem.tsx'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { CREATE_NEW_CATEGORY_ID } from '@/modules/category/Category.constants.ts'; -import { CreateOrEditCategoryDialog } from '@/modules/category/components/CreateOrEditCategoryDialog.tsx'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { CREATE_NEW_CATEGORY_ID } from '@/features/category/Category.constants.ts'; +import { CreateOrEditCategoryDialog } from '@/features/category/components/CreateOrEditCategoryDialog.tsx'; export function CategorySettings() { const { t } = useTranslation(); diff --git a/src/modules/category/services/Categories.ts b/src/features/category/services/Categories.ts similarity index 89% rename from src/modules/category/services/Categories.ts rename to src/features/category/services/Categories.ts index f06fd65e..69ee8198 100644 --- a/src/modules/category/services/Categories.ts +++ b/src/features/category/services/Categories.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { CategoryDefaultInfo, CategoryIdInfo } from '@/modules/category/Category.types.ts'; +import { CategoryDefaultInfo, CategoryIdInfo } from '@/features/category/Category.types.ts'; export const DEFAULT_CATEGORY_ID = 0; diff --git a/src/modules/category/services/CategoryMetadata.ts b/src/features/category/services/CategoryMetadata.ts similarity index 88% rename from src/modules/category/services/CategoryMetadata.ts rename to src/features/category/services/CategoryMetadata.ts index a330bfbf..59c57b72 100644 --- a/src/modules/category/services/CategoryMetadata.ts +++ b/src/features/category/services/CategoryMetadata.ts @@ -7,18 +7,18 @@ */ import { useEffect, useMemo } from 'react'; -import { requestUpdateCategoryMetadata } from '@/modules/metadata/services/MetadataUpdater.ts'; +import { requestUpdateCategoryMetadata } from '@/features/metadata/services/MetadataUpdater.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { LibraryOptions } from '@/modules/library/Library.types.ts'; -import { CategoryIdInfo, CategoryMetadataKeys, ICategoryMetadata } from '@/modules/category/Category.types.ts'; -import { convertFromGqlMeta } from '@/modules/metadata/services/MetadataConverter.ts'; -import { getMetadataFrom } from '@/modules/metadata/services/MetadataReader.ts'; +import { LibraryOptions } from '@/features/library/Library.types.ts'; +import { CategoryIdInfo, CategoryMetadataKeys, ICategoryMetadata } from '@/features/category/Category.types.ts'; +import { convertFromGqlMeta } from '@/features/metadata/services/MetadataConverter.ts'; +import { getMetadataFrom } from '@/features/metadata/services/MetadataReader.ts'; import { AllowedMetadataValueTypes, GqlMetaHolder, Metadata, MetadataHolder, -} from '@/modules/metadata/Metadata.types.ts'; +} from '@/features/metadata/Metadata.types.ts'; export const DEFAULT_CATEGORY_METADATA: ICategoryMetadata = { // sort options diff --git a/src/modules/chapter/Chapter.constants.ts b/src/features/chapter/Chapter.constants.ts similarity index 98% rename from src/modules/chapter/Chapter.constants.ts rename to src/features/chapter/Chapter.constants.ts index e5b3e951..6edae1ba 100644 --- a/src/modules/chapter/Chapter.constants.ts +++ b/src/features/chapter/Chapter.constants.ts @@ -7,7 +7,7 @@ */ import { TranslationKey } from '@/Base.types.ts'; -import { ChapterAction, ChapterListOptions, ChapterSortMode } from '@/modules/chapter/Chapter.types.ts'; +import { ChapterAction, ChapterListOptions, ChapterSortMode } from '@/features/chapter/Chapter.types.ts'; export const FALLBACK_CHAPTER = { id: -1, name: '', realUrl: '', isBookmarked: false }; diff --git a/src/modules/chapter/Chapter.types.ts b/src/features/chapter/Chapter.types.ts similarity index 100% rename from src/modules/chapter/Chapter.types.ts rename to src/features/chapter/Chapter.types.ts diff --git a/src/modules/chapter/components/ChapterExcludeSanlatorsFilter.tsx b/src/features/chapter/components/ChapterExcludeSanlatorsFilter.tsx similarity index 88% rename from src/modules/chapter/components/ChapterExcludeSanlatorsFilter.tsx rename to src/features/chapter/components/ChapterExcludeSanlatorsFilter.tsx index 8dece8a2..91dbd9ba 100644 --- a/src/modules/chapter/components/ChapterExcludeSanlatorsFilter.tsx +++ b/src/features/chapter/components/ChapterExcludeSanlatorsFilter.tsx @@ -10,9 +10,9 @@ import { bindTrigger, usePopupState } from 'material-ui-popup-state/hooks'; import { useTranslation } from 'react-i18next'; import PeopleAltOutlinedIcon from '@mui/icons-material/PeopleAltOutlined'; import DisabledByDefaultRounded from '@mui/icons-material/DisabledByDefaultRounded'; -import { CheckboxListSetting } from '@/modules/core/components/settings/CheckboxListSetting.tsx'; -import { updateChapterListOptions } from '@/modules/chapter/utils/ChapterList.util.tsx'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { CheckboxListSetting } from '@/features/core/components/settings/CheckboxListSetting.tsx'; +import { updateChapterListOptions } from '@/features/chapter/utils/ChapterList.util.tsx'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; export const ChapterExcludeSanlatorsFilter = ({ updateOption, diff --git a/src/modules/chapter/components/ChapterList.tsx b/src/features/chapter/components/ChapterList.tsx similarity index 87% rename from src/modules/chapter/components/ChapterList.tsx rename to src/features/chapter/components/ChapterList.tsx index acad6db2..874733e2 100644 --- a/src/modules/chapter/components/ChapterList.tsx +++ b/src/features/chapter/components/ChapterList.tsx @@ -13,36 +13,36 @@ import Typography from '@mui/material/Typography'; import { ComponentProps, useCallback, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { ResumeFab } from '@/modules/manga/components/ResumeFAB.tsx'; +import { ResumeFab } from '@/features/manga/components/ResumeFAB.tsx'; import { filterAndSortChapters, updateChapterListOptions, useChapterListOptions, -} from '@/modules/chapter/utils/ChapterList.util.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { ChaptersToolbarMenu } from '@/modules/chapter/components/ChaptersToolbarMenu.tsx'; -import { SelectionFAB } from '@/modules/collection/components/SelectionFAB.tsx'; -import { DEFAULT_FULL_FAB_HEIGHT } from '@/modules/core/components/buttons/StyledFab.tsx'; +} from '@/features/chapter/utils/ChapterList.util.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { ChaptersToolbarMenu } from '@/features/chapter/components/ChaptersToolbarMenu.tsx'; +import { SelectionFAB } from '@/features/collection/components/SelectionFAB.tsx'; +import { DEFAULT_FULL_FAB_HEIGHT } from '@/features/core/components/buttons/StyledFab.tsx'; import { ChapterListFieldsFragment, GetChaptersMangaQuery, GetChaptersMangaQueryVariables, MangaScreenFieldsFragment, } from '@/lib/graphql/generated/graphql.ts'; -import { useSelectableCollection } from '@/modules/collection/hooks/useSelectableCollection.ts'; -import { SelectableCollectionSelectAll } from '@/modules/collection/components/SelectableCollectionSelectAll.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { ChapterActionMenuItems } from '@/modules/chapter/components/actions/ChapterActionMenuItems.tsx'; +import { useSelectableCollection } from '@/features/collection/hooks/useSelectableCollection.ts'; +import { SelectableCollectionSelectAll } from '@/features/collection/components/SelectableCollectionSelectAll.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { ChapterActionMenuItems } from '@/features/chapter/components/actions/ChapterActionMenuItems.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; import { GET_CHAPTERS_MANGA } from '@/lib/graphql/queries/ChapterQuery.ts'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { shouldForwardProp } from '@/features/core/utils/ShouldForwardProp.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { ChapterListCard } from '@/modules/chapter/components/cards/ChapterListCard.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { ChapterListCard } from '@/features/chapter/components/cards/ChapterListCard.tsx'; import { VirtuosoPersisted } from '@/lib/virtuoso/Component/VirtuosoPersisted.tsx'; type ChapterListHeaderProps = { diff --git a/src/modules/chapter/components/ChapterOptions.tsx b/src/features/chapter/components/ChapterOptions.tsx similarity index 85% rename from src/modules/chapter/components/ChapterOptions.tsx rename to src/features/chapter/components/ChapterOptions.tsx index 0815d92d..180f1eaf 100644 --- a/src/modules/chapter/components/ChapterOptions.tsx +++ b/src/features/chapter/components/ChapterOptions.tsx @@ -9,15 +9,15 @@ import RadioGroup from '@mui/material/RadioGroup'; import React from 'react'; import { useTranslation } from 'react-i18next'; -import { RadioInput } from '@/modules/core/components/inputs/RadioInput.tsx'; -import { SortRadioInput } from '@/modules/core/components/inputs/SortRadioInput.tsx'; -import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; -import { OptionsTabs } from '@/modules/core/components/modals/OptionsTabs.tsx'; -import { CHAPTER_SORT_OPTIONS_TO_TRANSLATION_KEY } from '@/modules/chapter/Chapter.constants.ts'; +import { RadioInput } from '@/features/core/components/inputs/RadioInput.tsx'; +import { SortRadioInput } from '@/features/core/components/inputs/SortRadioInput.tsx'; +import { ThreeStateCheckboxInput } from '@/features/core/components/inputs/ThreeStateCheckboxInput.tsx'; +import { OptionsTabs } from '@/features/core/components/modals/OptionsTabs.tsx'; +import { CHAPTER_SORT_OPTIONS_TO_TRANSLATION_KEY } from '@/features/chapter/Chapter.constants.ts'; import { TranslationKey } from '@/Base.types.ts'; -import { ChapterListOptions } from '@/modules/chapter/Chapter.types.ts'; -import { updateChapterListOptions } from '@/modules/chapter/utils/ChapterList.util.tsx'; -import { ChapterExcludeSanlatorsFilter } from '@/modules/chapter/components/ChapterExcludeSanlatorsFilter.tsx'; +import { ChapterListOptions } from '@/features/chapter/Chapter.types.ts'; +import { updateChapterListOptions } from '@/features/chapter/utils/ChapterList.util.tsx'; +import { ChapterExcludeSanlatorsFilter } from '@/features/chapter/components/ChapterExcludeSanlatorsFilter.tsx'; interface IProps { open: boolean; diff --git a/src/modules/chapter/components/ChaptersToolbarMenu.tsx b/src/features/chapter/components/ChaptersToolbarMenu.tsx similarity index 88% rename from src/modules/chapter/components/ChaptersToolbarMenu.tsx rename to src/features/chapter/components/ChaptersToolbarMenu.tsx index ce03f346..0c88c52d 100644 --- a/src/modules/chapter/components/ChaptersToolbarMenu.tsx +++ b/src/features/chapter/components/ChaptersToolbarMenu.tsx @@ -15,18 +15,18 @@ import Menu from '@mui/material/Menu'; import DownloadIcon from '@mui/icons-material/Download'; import DoneAllIcon from '@mui/icons-material/DoneAll'; import { useMemo } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ChapterOptions } from '@/modules/chapter/components/ChapterOptions.tsx'; -import { isFilterActive, updateChapterListOptions } from '@/modules/chapter/utils/ChapterList.util.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ChapterOptions } from '@/features/chapter/components/ChapterOptions.tsx'; +import { isFilterActive, updateChapterListOptions } from '@/features/chapter/utils/ChapterList.util.tsx'; import { ChapterBookmarkInfo, ChapterDownloadInfo, ChapterIdInfo, ChapterListOptions, ChapterReadInfo, -} from '@/modules/chapter/Chapter.types.ts'; -import { ChaptersDownloadActionMenuItems } from '@/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +} from '@/features/chapter/Chapter.types.ts'; +import { ChaptersDownloadActionMenuItems } from '@/features/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; interface IProps { mangaId: number; diff --git a/src/modules/chapter/components/MissingChaptersInfoSeparator.tsx b/src/features/chapter/components/MissingChaptersInfoSeparator.tsx similarity index 100% rename from src/modules/chapter/components/MissingChaptersInfoSeparator.tsx rename to src/features/chapter/components/MissingChaptersInfoSeparator.tsx diff --git a/src/modules/chapter/components/actions/ChapterActionMenuItems.tsx b/src/features/chapter/components/actions/ChapterActionMenuItems.tsx similarity index 93% rename from src/modules/chapter/components/actions/ChapterActionMenuItems.tsx rename to src/features/chapter/components/actions/ChapterActionMenuItems.tsx index 98cef3ca..9cad34b4 100644 --- a/src/modules/chapter/components/actions/ChapterActionMenuItems.tsx +++ b/src/features/chapter/components/actions/ChapterActionMenuItems.tsx @@ -16,21 +16,21 @@ import BookmarkRemove from '@mui/icons-material/BookmarkRemove'; import BookmarkAdd from '@mui/icons-material/BookmarkAdd'; import DoneAll from '@mui/icons-material/DoneAll'; import { ComponentProps, useMemo } from 'react'; -import { SelectableCollectionReturnType } from '@/modules/collection/hooks/useSelectableCollection.ts'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { MenuItem } from '@/modules/core/components/menu/MenuItem.tsx'; +import { SelectableCollectionReturnType } from '@/features/collection/hooks/useSelectableCollection.ts'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { MenuItem } from '@/features/core/components/menu/MenuItem.tsx'; import { createGetMenuItemTitle, createIsMenuItemDisabled, createShouldShowMenuItem, -} from '@/modules/core/components/menu/Menu.utils.ts'; +} from '@/features/core/components/menu/Menu.utils.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { ChapterCard } from '@/modules/chapter/components/cards/ChapterCard.tsx'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { ChapterCard } from '@/features/chapter/components/cards/ChapterCard.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { GetChaptersMangaQuery } from '@/lib/graphql/generated/graphql.ts'; import { GET_CHAPTERS_MANGA } from '@/lib/graphql/queries/ChapterQuery.ts'; -import { CHAPTER_ACTION_TO_TRANSLATION } from '@/modules/chapter/Chapter.constants.ts'; +import { CHAPTER_ACTION_TO_TRANSLATION } from '@/features/chapter/Chapter.constants.ts'; import { ChapterAction, ChapterBookmarkInfo, @@ -39,7 +39,7 @@ import { ChapterMangaInfo, ChapterReadInfo, ChapterRealUrlInfo, -} from '@/modules/chapter/Chapter.types.ts'; +} from '@/features/chapter/Chapter.types.ts'; import { IconWebView } from '@/assets/icons/IconWebView.tsx'; import { IconBrowser } from '@/assets/icons/IconBrowser.tsx'; diff --git a/src/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx b/src/features/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx similarity index 91% rename from src/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx rename to src/features/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx index a74acae9..3f7042ac 100644 --- a/src/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx +++ b/src/features/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx @@ -9,8 +9,8 @@ import MenuItem from '@mui/material/MenuItem'; import { useTranslation } from 'react-i18next'; import gql from 'graphql-tag'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { ChapterOrderBy, @@ -21,13 +21,13 @@ import { } from '@/lib/graphql/generated/graphql.ts'; import { TranslationKey } from '@/Base.types.ts'; import { MANGA_META_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts'; -import { getMangaMetadata } from '@/modules/manga/services/MangaMetadata.ts'; +import { getMangaMetadata } from '@/features/manga/services/MangaMetadata.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { GET_CHAPTERS_MANGA } from '@/lib/graphql/queries/ChapterQuery.ts'; -import { filterChapters } from '@/modules/chapter/utils/ChapterList.util.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { CHAPTER_ACTION_TO_TRANSLATION } from '@/modules/chapter/Chapter.constants.ts'; +import { filterChapters } from '@/features/chapter/utils/ChapterList.util.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { CHAPTER_ACTION_TO_TRANSLATION } from '@/features/chapter/Chapter.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; const DOWNLOAD_OPTIONS: { diff --git a/src/modules/chapter/components/buttons/ChapterDownloadButton.tsx b/src/features/chapter/components/buttons/ChapterDownloadButton.tsx similarity index 85% rename from src/modules/chapter/components/buttons/ChapterDownloadButton.tsx rename to src/features/chapter/components/buttons/ChapterDownloadButton.tsx index f123eb40..3b452090 100644 --- a/src/modules/chapter/components/buttons/ChapterDownloadButton.tsx +++ b/src/features/chapter/components/buttons/ChapterDownloadButton.tsx @@ -9,13 +9,13 @@ import IconButton from '@mui/material/IconButton'; import { useTranslation } from 'react-i18next'; import DownloadIcon from '@mui/icons-material/Download'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; export const ChapterDownloadButton = ({ chapterId, diff --git a/src/modules/chapter/components/buttons/ChapterDownloadRetryButton.tsx b/src/features/chapter/components/buttons/ChapterDownloadRetryButton.tsx similarity index 85% rename from src/modules/chapter/components/buttons/ChapterDownloadRetryButton.tsx rename to src/features/chapter/components/buttons/ChapterDownloadRetryButton.tsx index b785ab19..d4c32f8e 100644 --- a/src/modules/chapter/components/buttons/ChapterDownloadRetryButton.tsx +++ b/src/features/chapter/components/buttons/ChapterDownloadRetryButton.tsx @@ -10,13 +10,13 @@ import Refresh from '@mui/icons-material/Refresh'; import IconButton from '@mui/material/IconButton'; import { useTranslation } from 'react-i18next'; import { DownloadState } from '@/lib/graphql/generated/graphql.ts'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; export const ChapterDownloadRetryButton = ({ chapterId }: { chapterId: ChapterIdInfo['id'] }) => { const { t } = useTranslation(); diff --git a/src/modules/chapter/components/cards/ChapterCard.tsx b/src/features/chapter/components/cards/ChapterCard.tsx similarity index 92% rename from src/modules/chapter/components/cards/ChapterCard.tsx rename to src/features/chapter/components/cards/ChapterCard.tsx index ec2f964f..3bf3eb3f 100644 --- a/src/modules/chapter/components/cards/ChapterCard.tsx +++ b/src/features/chapter/components/cards/ChapterCard.tsx @@ -19,17 +19,17 @@ import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; import { useLongPress } from 'use-long-press'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { getDateString } from '@/util/DateHelper.ts'; -import { DownloadStateIndicator } from '@/modules/core/components/downloads/DownloadStateIndicator.tsx'; +import { DownloadStateIndicator } from '@/features/core/components/downloads/DownloadStateIndicator.tsx'; import { ChapterType } from '@/lib/graphql/generated/graphql.ts'; -import { ChapterActionMenuItems } from '@/modules/chapter/components/actions/ChapterActionMenuItems.tsx'; -import { Menu } from '@/modules/core/components/menu/Menu.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { ChapterCardMetadata } from '@/modules/chapter/components/cards/ChapterCardMetadata.tsx'; +import { ChapterActionMenuItems } from '@/features/chapter/components/actions/ChapterActionMenuItems.tsx'; +import { Menu } from '@/features/core/components/menu/Menu.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { ChapterCardMetadata } from '@/features/chapter/components/cards/ChapterCardMetadata.tsx'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; import { ChapterBookmarkInfo, ChapterDownloadInfo, @@ -38,8 +38,8 @@ import { ChapterNumberInfo, ChapterReadInfo, ChapterScanlatorInfo, -} from '@/modules/chapter/Chapter.types.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +} from '@/features/chapter/Chapter.types.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; type TChapter = ChapterIdInfo & ChapterMangaInfo & diff --git a/src/modules/chapter/components/cards/ChapterCardMetadata.tsx b/src/features/chapter/components/cards/ChapterCardMetadata.tsx similarity index 93% rename from src/modules/chapter/components/cards/ChapterCardMetadata.tsx rename to src/features/chapter/components/cards/ChapterCardMetadata.tsx index 4665c784..43f12933 100644 --- a/src/modules/chapter/components/cards/ChapterCardMetadata.tsx +++ b/src/features/chapter/components/cards/ChapterCardMetadata.tsx @@ -9,8 +9,8 @@ import Box from '@mui/material/Box'; import { ComponentProps, ReactNode } from 'react'; import Stack from '@mui/material/Stack'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; export const ChapterCardMetadata = ({ title, diff --git a/src/modules/chapter/components/cards/ChapterCardThumbnail.tsx b/src/features/chapter/components/cards/ChapterCardThumbnail.tsx similarity index 75% rename from src/modules/chapter/components/cards/ChapterCardThumbnail.tsx rename to src/features/chapter/components/cards/ChapterCardThumbnail.tsx index 8eaf7535..8a52cb8c 100644 --- a/src/modules/chapter/components/cards/ChapterCardThumbnail.tsx +++ b/src/features/chapter/components/cards/ChapterCardThumbnail.tsx @@ -7,11 +7,11 @@ */ import { Link } from 'react-router-dom'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { MangaIdInfo, MangaThumbnailInfo } from '@/modules/manga/Manga.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { MangaIdInfo, MangaThumbnailInfo } from '@/features/manga/Manga.types.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { ListCardAvatar } from '@/modules/core/components/lists/cards/ListCardAvatar.tsx'; +import { ListCardAvatar } from '@/features/core/components/lists/cards/ListCardAvatar.tsx'; export const ChapterCardThumbnail = ({ mangaId, diff --git a/src/modules/chapter/components/cards/ChapterListCard.tsx b/src/features/chapter/components/cards/ChapterListCard.tsx similarity index 79% rename from src/modules/chapter/components/cards/ChapterListCard.tsx rename to src/features/chapter/components/cards/ChapterListCard.tsx index 979c65e8..1d1c5eff 100644 --- a/src/modules/chapter/components/cards/ChapterListCard.tsx +++ b/src/features/chapter/components/cards/ChapterListCard.tsx @@ -8,11 +8,11 @@ import Stack from '@mui/material/Stack'; import { ComponentProps } from 'react'; -import { ChapterCard } from '@/modules/chapter/components/cards/ChapterCard.tsx'; +import { ChapterCard } from '@/features/chapter/components/cards/ChapterCard.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { MissingChaptersInfoSeparator } from '@/modules/chapter/components/MissingChaptersInfoSeparator.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { MissingChaptersInfoSeparator } from '@/features/chapter/components/MissingChaptersInfoSeparator.tsx'; type ChapterCardProps = ComponentProps; diff --git a/src/modules/chapter/services/Chapters.ts b/src/features/chapter/services/Chapters.ts similarity index 97% rename from src/modules/chapter/services/Chapters.ts rename to src/features/chapter/services/Chapters.ts index e63cf493..830ded4a 100644 --- a/src/modules/chapter/services/Chapters.ts +++ b/src/features/chapter/services/Chapters.ts @@ -8,9 +8,9 @@ import { t as translate } from 'i18next'; import { DocumentNode, MaybeMasked, Unmasked, useFragment } from '@apollo/client'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { getMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { getMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { ChapterListFieldsFragment, ChapterType, @@ -20,16 +20,16 @@ import { import { CHAPTER_LIST_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; import { DirectionOffset } from '@/Base.types.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; -import { ReaderOpenChapterLocationState, ReaderResumeMode } from '@/modules/reader/types/Reader.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; +import { ReaderOpenChapterLocationState, ReaderResumeMode } from '@/features/reader/types/Reader.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { DOWNLOAD_TYPE_FIELDS } from '@/lib/graphql/fragments/DownloadFragments.ts'; import { epochToDate, getDateString } from '@/util/DateHelper.ts'; import { CHAPTER_ACTION_TO_CONFIRMATION_REQUIRED, CHAPTER_ACTION_TO_TRANSLATION, -} from '@/modules/chapter/Chapter.constants.ts'; +} from '@/features/chapter/Chapter.constants.ts'; import { ChapterAction, ChapterBookmarkInfo, @@ -40,9 +40,9 @@ import { ChapterReadInfo, ChapterScanlatorInfo, ChapterSourceOrderInfo, -} from '@/modules/chapter/Chapter.types.ts'; +} from '@/features/chapter/Chapter.types.ts'; import { assertIsDefined } from '@/Asserts.ts'; -import { awaitConfirmation } from '@/modules/core/utils/AwaitableDialog.tsx'; +import { awaitConfirmation } from '@/features/core/utils/AwaitableDialog.tsx'; export class Chapters { static getIds(chapters: { id: number }[]): number[] { diff --git a/src/modules/chapter/utils/ChapterList.util.tsx b/src/features/chapter/utils/ChapterList.util.tsx similarity index 95% rename from src/modules/chapter/utils/ChapterList.util.tsx rename to src/features/chapter/utils/ChapterList.util.tsx index df7d9b84..bcc00d68 100644 --- a/src/modules/chapter/utils/ChapterList.util.tsx +++ b/src/features/chapter/utils/ChapterList.util.tsx @@ -15,10 +15,10 @@ import { ChapterListOptions, ChapterReadInfo, ChapterScanlatorInfo, -} from '@/modules/chapter/Chapter.types.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; -import { GqlMetaHolder } from '@/modules/metadata/Metadata.types.ts'; -import { createUpdateMangaMetadata, useGetMangaMetadata } from '@/modules/manga/services/MangaMetadata.ts'; +} from '@/features/chapter/Chapter.types.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; +import { GqlMetaHolder } from '@/features/metadata/Metadata.types.ts'; +import { createUpdateMangaMetadata, useGetMangaMetadata } from '@/features/manga/services/MangaMetadata.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; export function unreadFilter(unread: NullAndUndefined, { isRead: isChapterRead }: ChapterReadInfo) { diff --git a/src/modules/collection/components/SelectableCollectionSelectAll.tsx b/src/features/collection/components/SelectableCollectionSelectAll.tsx similarity index 94% rename from src/modules/collection/components/SelectableCollectionSelectAll.tsx rename to src/features/collection/components/SelectableCollectionSelectAll.tsx index 67ff4cc8..483f3e5c 100644 --- a/src/modules/collection/components/SelectableCollectionSelectAll.tsx +++ b/src/features/collection/components/SelectableCollectionSelectAll.tsx @@ -8,7 +8,7 @@ import Checkbox from '@mui/material/Checkbox'; import { useTranslation } from 'react-i18next'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; export const SelectableCollectionSelectAll = ({ areAllItemsSelected, diff --git a/src/modules/collection/components/SelectableCollectionSelectMode.tsx b/src/features/collection/components/SelectableCollectionSelectMode.tsx similarity index 89% rename from src/modules/collection/components/SelectableCollectionSelectMode.tsx rename to src/features/collection/components/SelectableCollectionSelectMode.tsx index c62d02f3..b0de9980 100644 --- a/src/modules/collection/components/SelectableCollectionSelectMode.tsx +++ b/src/features/collection/components/SelectableCollectionSelectMode.tsx @@ -9,8 +9,8 @@ import Checkbox from '@mui/material/Checkbox'; import { useTranslation } from 'react-i18next'; import ClearIcon from '@mui/icons-material/Clear'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { SelectableCollectionSelectAll } from '@/modules/collection/components/SelectableCollectionSelectAll.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { SelectableCollectionSelectAll } from '@/features/collection/components/SelectableCollectionSelectAll.tsx'; export const SelectableCollectionSelectMode = ({ isActive, diff --git a/src/modules/collection/components/SelectionFAB.tsx b/src/features/collection/components/SelectionFAB.tsx similarity index 94% rename from src/modules/collection/components/SelectionFAB.tsx rename to src/features/collection/components/SelectionFAB.tsx index 4cfa8f0e..9081d107 100644 --- a/src/modules/collection/components/SelectionFAB.tsx +++ b/src/features/collection/components/SelectionFAB.tsx @@ -13,8 +13,8 @@ import { styled } from '@mui/material/styles'; import React, { type JSX } from 'react'; import { useTranslation } from 'react-i18next'; import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; -import { DEFAULT_FAB_STYLE } from '@/modules/core/components/buttons/StyledFab.tsx'; -import { Menu } from '@/modules/core/components/menu/Menu.tsx'; +import { DEFAULT_FAB_STYLE } from '@/features/core/components/buttons/StyledFab.tsx'; +import { Menu } from '@/features/core/components/menu/Menu.tsx'; import { TranslationKey } from '@/Base.types.ts'; interface SelectionFABProps { diff --git a/src/modules/collection/hooks/useSelectableCollection.ts b/src/features/collection/hooks/useSelectableCollection.ts similarity index 100% rename from src/modules/collection/hooks/useSelectableCollection.ts rename to src/features/collection/hooks/useSelectableCollection.ts diff --git a/src/modules/core/AppRoute.constants.ts b/src/features/core/AppRoute.constants.ts similarity index 95% rename from src/modules/core/AppRoute.constants.ts rename to src/features/core/AppRoute.constants.ts index 1cbf25b5..1264d67b 100644 --- a/src/modules/core/AppRoute.constants.ts +++ b/src/features/core/AppRoute.constants.ts @@ -7,11 +7,11 @@ */ import { SourceType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; -import { ChapterSourceOrderInfo } from '@/modules/chapter/Chapter.types.ts'; -import { BrowseTab } from '@/modules/browse/Browse.types.ts'; -import { SearchParam } from '@/modules/core/Core.types.ts'; +import { ChapterSourceOrderInfo } from '@/features/chapter/Chapter.types.ts'; +import { BrowseTab } from '@/features/browse/Browse.types.ts'; +import { SearchParam } from '@/features/core/Core.types.ts'; type AppRouteInfo = { match: string; diff --git a/src/modules/core/Core.types.ts b/src/features/core/Core.types.ts similarity index 100% rename from src/modules/core/Core.types.ts rename to src/features/core/Core.types.ts diff --git a/src/modules/core/IsoLanguages.ts b/src/features/core/IsoLanguages.ts similarity index 100% rename from src/modules/core/IsoLanguages.ts rename to src/features/core/IsoLanguages.ts diff --git a/src/modules/core/components/AppbarSearch.tsx b/src/features/core/components/AppbarSearch.tsx similarity index 94% rename from src/modules/core/components/AppbarSearch.tsx rename to src/features/core/components/AppbarSearch.tsx index 6e604504..ea8bc30c 100644 --- a/src/modules/core/components/AppbarSearch.tsx +++ b/src/features/core/components/AppbarSearch.tsx @@ -14,9 +14,9 @@ import { useTranslation } from 'react-i18next'; import { useLocation } from 'react-router-dom'; import { useTheme } from '@mui/material/styles'; import { useHotkeys } from 'react-hotkeys-hook'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { SearchTextField } from '@/modules/core/components/inputs/SearchTextField.tsx'; -import { SearchParam } from '@/modules/core/Core.types.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { SearchTextField } from '@/features/core/components/inputs/SearchTextField.tsx'; +import { SearchParam } from '@/features/core/Core.types.ts'; interface IProps { isClosable?: boolean; diff --git a/src/modules/core/components/CustomTooltip.tsx b/src/features/core/components/CustomTooltip.tsx similarity index 100% rename from src/modules/core/components/CustomTooltip.tsx rename to src/features/core/components/CustomTooltip.tsx diff --git a/src/modules/core/components/GridLayouts.tsx b/src/features/core/components/GridLayouts.tsx similarity index 96% rename from src/modules/core/components/GridLayouts.tsx rename to src/features/core/components/GridLayouts.tsx index 0fbcf5e3..31428d7c 100644 --- a/src/modules/core/components/GridLayouts.tsx +++ b/src/features/core/components/GridLayouts.tsx @@ -14,9 +14,9 @@ import Radio from '@mui/material/Radio'; import React from 'react'; import ViewModuleIcon from '@mui/icons-material/ViewModule'; import { useTranslation } from 'react-i18next'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; -import { GridLayout } from '@/modules/core/Core.types.ts'; +import { GridLayout } from '@/features/core/Core.types.ts'; // TODO: clean up this to use a FormControl, and remove dependency on name o radio button export function GridLayouts({ diff --git a/src/modules/core/components/SpinnerImage.tsx b/src/features/core/components/SpinnerImage.tsx similarity index 98% rename from src/modules/core/components/SpinnerImage.tsx rename to src/features/core/components/SpinnerImage.tsx index 59b66895..f4694b1a 100644 --- a/src/modules/core/components/SpinnerImage.tsx +++ b/src/features/core/components/SpinnerImage.tsx @@ -18,8 +18,8 @@ import ImageIcon from '@mui/icons-material/Image'; import { SxProps, Theme } from '@mui/material/styles'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { Priority } from '@/lib/Queue.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { useIntersectionObserver } from '@/modules/core/hooks/useIntersectionObserver.tsx'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { useIntersectionObserver } from '@/features/core/hooks/useIntersectionObserver.tsx'; export interface SpinnerImageProps { shouldLoad?: boolean; diff --git a/src/modules/core/components/UpdateChecker.tsx b/src/features/core/components/UpdateChecker.tsx similarity index 94% rename from src/modules/core/components/UpdateChecker.tsx rename to src/features/core/components/UpdateChecker.tsx index e2fc44ff..9dfab49c 100644 --- a/src/modules/core/components/UpdateChecker.tsx +++ b/src/features/core/components/UpdateChecker.tsx @@ -15,15 +15,15 @@ import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import ClearIcon from '@mui/icons-material/Clear'; import Stack from '@mui/material/Stack'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { Progress } from '@/modules/core/components/feedback/Progress.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { Progress } from '@/features/core/components/feedback/Progress.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { dateTimeFormatter } from '@/util/DateHelper.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; -import { CategoryIdInfo } from '@/modules/category/Category.types.ts'; +import { CategoryIdInfo } from '@/features/category/Category.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; let lastRunningState = false; diff --git a/src/modules/core/components/buttons/ButtonSelect.tsx b/src/features/core/components/buttons/ButtonSelect.tsx similarity index 89% rename from src/modules/core/components/buttons/ButtonSelect.tsx rename to src/features/core/components/buttons/ButtonSelect.tsx index 5e6dccc0..daf68dd0 100644 --- a/src/modules/core/components/buttons/ButtonSelect.tsx +++ b/src/features/core/components/buttons/ButtonSelect.tsx @@ -9,9 +9,9 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; import Button from '@mui/material/Button'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { MultiValueButtonProps } from '@/modules/core/Core.types.ts'; -import { Superscript } from '@/modules/core/components/texts/Superscript.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { MultiValueButtonProps } from '@/features/core/Core.types.ts'; +import { Superscript } from '@/features/core/components/texts/Superscript.tsx'; export const ButtonSelect = ({ value, diff --git a/src/modules/core/components/buttons/CustomButton.tsx b/src/features/core/components/buttons/CustomButton.tsx similarity index 100% rename from src/modules/core/components/buttons/CustomButton.tsx rename to src/features/core/components/buttons/CustomButton.tsx diff --git a/src/modules/core/components/buttons/CustomButtonIcon.tsx b/src/features/core/components/buttons/CustomButtonIcon.tsx similarity index 100% rename from src/modules/core/components/buttons/CustomButtonIcon.tsx rename to src/features/core/components/buttons/CustomButtonIcon.tsx diff --git a/src/modules/core/components/buttons/ResetButton.tsx b/src/features/core/components/buttons/ResetButton.tsx similarity index 93% rename from src/modules/core/components/buttons/ResetButton.tsx rename to src/features/core/components/buttons/ResetButton.tsx index 1d34ca84..dbb63c40 100644 --- a/src/modules/core/components/buttons/ResetButton.tsx +++ b/src/features/core/components/buttons/ResetButton.tsx @@ -10,7 +10,7 @@ import Button, { ButtonProps } from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; import RestartAltIcon from '@mui/icons-material/RestartAlt'; import IconButton, { IconButtonProps } from '@mui/material/IconButton'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; type PropsIconButton = { asIconButton: true } & IconButtonProps; type PropsButton = { asIconButton?: false } & ButtonProps; diff --git a/src/modules/core/components/buttons/StyledFab.tsx b/src/features/core/components/buttons/StyledFab.tsx similarity index 100% rename from src/modules/core/components/buttons/StyledFab.tsx rename to src/features/core/components/buttons/StyledFab.tsx diff --git a/src/modules/core/components/buttons/ValueRotationButton.tsx b/src/features/core/components/buttons/ValueRotationButton.tsx similarity index 89% rename from src/modules/core/components/buttons/ValueRotationButton.tsx rename to src/features/core/components/buttons/ValueRotationButton.tsx index ee76d87e..066dc292 100644 --- a/src/modules/core/components/buttons/ValueRotationButton.tsx +++ b/src/features/core/components/buttons/ValueRotationButton.tsx @@ -9,10 +9,10 @@ import { useTranslation } from 'react-i18next'; import { ReactNode, useMemo } from 'react'; import Button from '@mui/material/Button'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { MultiValueButtonProps } from '@/modules/core/Core.types.ts'; -import { getNextRotationValue } from '@/modules/core/utils/ValueRotationButton.utils.ts'; -import { Superscript } from '@/modules/core/components/texts/Superscript.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { MultiValueButtonProps } from '@/features/core/Core.types.ts'; +import { getNextRotationValue } from '@/features/core/utils/ValueRotationButton.utils.ts'; +import { Superscript } from '@/features/core/components/texts/Superscript.tsx'; export const ValueRotationButton = ({ tooltip, diff --git a/src/modules/core/components/downloads/DownloadStateIndicator.tsx b/src/features/core/components/downloads/DownloadStateIndicator.tsx similarity index 95% rename from src/modules/core/components/downloads/DownloadStateIndicator.tsx rename to src/features/core/components/downloads/DownloadStateIndicator.tsx index f8799c33..94cf059c 100644 --- a/src/modules/core/components/downloads/DownloadStateIndicator.tsx +++ b/src/features/core/components/downloads/DownloadStateIndicator.tsx @@ -11,9 +11,9 @@ import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import { useTranslation } from 'react-i18next'; import { DownloadState } from '@/lib/graphql/generated/graphql.ts'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { TranslationKey } from '@/Base.types.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; const DOWNLOAD_STATE_TO_TRANSLATION_KEY_MAP: { [state in DownloadState]: TranslationKey } = { DOWNLOADING: 'download.state.label.downloading', diff --git a/src/modules/core/components/feedback/EmptyView.tsx b/src/features/core/components/feedback/EmptyView.tsx similarity index 100% rename from src/modules/core/components/feedback/EmptyView.tsx rename to src/features/core/components/feedback/EmptyView.tsx diff --git a/src/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx b/src/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx similarity index 86% rename from src/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx rename to src/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx index 9b50499b..0b7890f6 100644 --- a/src/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx +++ b/src/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { EmptyView, EmptyViewProps } from '@/modules/core/components/feedback/EmptyView.tsx'; +import { EmptyView, EmptyViewProps } from '@/features/core/components/feedback/EmptyView.tsx'; export function EmptyViewAbsoluteCentered({ sx, ...emptyViewProps }: EmptyViewProps) { return ( diff --git a/src/modules/core/components/feedback/ErrorBoundary.tsx b/src/features/core/components/feedback/ErrorBoundary.tsx similarity index 97% rename from src/modules/core/components/feedback/ErrorBoundary.tsx rename to src/features/core/components/feedback/ErrorBoundary.tsx index f626f400..1cf4920a 100644 --- a/src/modules/core/components/feedback/ErrorBoundary.tsx +++ b/src/features/core/components/feedback/ErrorBoundary.tsx @@ -10,7 +10,7 @@ import { Component, ErrorInfo, ReactNode, useEffect, useRef, useState } from 're import { useLocation } from 'react-router-dom'; import { t } from 'i18next'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { EmptyView } from '@/modules/core/components/feedback/EmptyView.tsx'; +import { EmptyView } from '@/features/core/components/feedback/EmptyView.tsx'; interface Props { children?: ReactNode; diff --git a/src/modules/core/components/feedback/LoadingPlaceholder.tsx b/src/features/core/components/feedback/LoadingPlaceholder.tsx similarity index 100% rename from src/modules/core/components/feedback/LoadingPlaceholder.tsx rename to src/features/core/components/feedback/LoadingPlaceholder.tsx diff --git a/src/modules/core/components/feedback/Progress.tsx b/src/features/core/components/feedback/Progress.tsx similarity index 100% rename from src/modules/core/components/feedback/Progress.tsx rename to src/features/core/components/feedback/Progress.tsx diff --git a/src/modules/core/components/feedback/SnackbarWithDescription.tsx b/src/features/core/components/feedback/SnackbarWithDescription.tsx similarity index 97% rename from src/modules/core/components/feedback/SnackbarWithDescription.tsx rename to src/features/core/components/feedback/SnackbarWithDescription.tsx index 5cff412f..7b8ceb27 100644 --- a/src/modules/core/components/feedback/SnackbarWithDescription.tsx +++ b/src/features/core/components/feedback/SnackbarWithDescription.tsx @@ -13,10 +13,10 @@ import AlertTitle from '@mui/material/AlertTitle'; import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; import { useTheme } from '@mui/material/styles'; -import { awaitConfirmation } from '@/modules/core/utils/AwaitableDialog.tsx'; +import { awaitConfirmation } from '@/features/core/utils/AwaitableDialog.tsx'; import { TranslationKey } from '@/Base.types.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; import { extractGraphqlExceptionInfo } from '@/lib/HelperFunctions.ts'; const MAX_DESCRIPTION_LENGTH = 200; diff --git a/src/modules/core/components/inputs/ButtonSelectInput.tsx b/src/features/core/components/inputs/ButtonSelectInput.tsx similarity index 91% rename from src/modules/core/components/inputs/ButtonSelectInput.tsx rename to src/features/core/components/inputs/ButtonSelectInput.tsx index 4464632e..69ca8632 100644 --- a/src/modules/core/components/inputs/ButtonSelectInput.tsx +++ b/src/features/core/components/inputs/ButtonSelectInput.tsx @@ -10,7 +10,7 @@ import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; import { ComponentProps } from 'react'; -import { ButtonSelect } from '@/modules/core/components/buttons/ButtonSelect.tsx'; +import { ButtonSelect } from '@/features/core/components/buttons/ButtonSelect.tsx'; export const ButtonSelectInput = ({ label, diff --git a/src/modules/core/components/inputs/CheckboxContainer.ts b/src/features/core/components/inputs/CheckboxContainer.ts similarity index 100% rename from src/modules/core/components/inputs/CheckboxContainer.ts rename to src/features/core/components/inputs/CheckboxContainer.ts diff --git a/src/modules/core/components/inputs/CheckboxInput.tsx b/src/features/core/components/inputs/CheckboxInput.tsx similarity index 100% rename from src/modules/core/components/inputs/CheckboxInput.tsx rename to src/features/core/components/inputs/CheckboxInput.tsx diff --git a/src/modules/core/components/inputs/LanguageSelect.tsx b/src/features/core/components/inputs/LanguageSelect.tsx similarity index 95% rename from src/modules/core/components/inputs/LanguageSelect.tsx rename to src/features/core/components/inputs/LanguageSelect.tsx index 328b4f12..29b78083 100644 --- a/src/modules/core/components/inputs/LanguageSelect.tsx +++ b/src/features/core/components/inputs/LanguageSelect.tsx @@ -19,9 +19,9 @@ import ListItemText from '@mui/material/ListItemText'; import ListItem from '@mui/material/ListItem'; import { useTranslation } from 'react-i18next'; import { Virtuoso } from 'react-virtuoso'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts'; -import { languageSortComparator, toUniqueLanguageCodes } from '@/modules/core/utils/Languages.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { translateExtensionLanguage } from '@/features/extension/Extensions.utils.ts'; +import { languageSortComparator, toUniqueLanguageCodes } from '@/features/core/utils/Languages.ts'; interface IProps { selectedLanguages: string[]; diff --git a/src/modules/core/components/inputs/PasswordTextField.tsx b/src/features/core/components/inputs/PasswordTextField.tsx similarity index 100% rename from src/modules/core/components/inputs/PasswordTextField.tsx rename to src/features/core/components/inputs/PasswordTextField.tsx diff --git a/src/modules/core/components/inputs/RadioInput.tsx b/src/features/core/components/inputs/RadioInput.tsx similarity index 100% rename from src/modules/core/components/inputs/RadioInput.tsx rename to src/features/core/components/inputs/RadioInput.tsx diff --git a/src/modules/core/components/inputs/SearchTextField.tsx b/src/features/core/components/inputs/SearchTextField.tsx similarity index 100% rename from src/modules/core/components/inputs/SearchTextField.tsx rename to src/features/core/components/inputs/SearchTextField.tsx diff --git a/src/modules/core/components/inputs/Select.tsx b/src/features/core/components/inputs/Select.tsx similarity index 100% rename from src/modules/core/components/inputs/Select.tsx rename to src/features/core/components/inputs/Select.tsx diff --git a/src/modules/core/components/inputs/SliderInput.tsx b/src/features/core/components/inputs/SliderInput.tsx similarity index 94% rename from src/modules/core/components/inputs/SliderInput.tsx rename to src/features/core/components/inputs/SliderInput.tsx index 70488daa..46613b55 100644 --- a/src/modules/core/components/inputs/SliderInput.tsx +++ b/src/features/core/components/inputs/SliderInput.tsx @@ -9,7 +9,7 @@ import Slider, { SliderProps } from '@mui/material/Slider'; import Typography, { TypographyProps } from '@mui/material/Typography'; import Stack from '@mui/material/Stack'; -import { ResetButton } from '@/modules/core/components/buttons/ResetButton.tsx'; +import { ResetButton } from '@/features/core/components/buttons/ResetButton.tsx'; export const SliderInput = ({ label, diff --git a/src/modules/core/components/inputs/SortRadioInput.tsx b/src/features/core/components/inputs/SortRadioInput.tsx similarity index 88% rename from src/modules/core/components/inputs/SortRadioInput.tsx rename to src/features/core/components/inputs/SortRadioInput.tsx index 392d9e66..04a1bf7e 100644 --- a/src/modules/core/components/inputs/SortRadioInput.tsx +++ b/src/features/core/components/inputs/SortRadioInput.tsx @@ -9,7 +9,7 @@ import ArrowDownward from '@mui/icons-material/ArrowDownward'; import ArrowUpward from '@mui/icons-material/ArrowUpward'; import { memo } from 'react'; -import { RadioInput, RadioInputProps } from '@/modules/core/components/inputs/RadioInput.tsx'; +import { RadioInput, RadioInputProps } from '@/features/core/components/inputs/RadioInput.tsx'; interface IProps extends RadioInputProps { sortDescending?: boolean | null | undefined; diff --git a/src/modules/core/components/inputs/ThreeStateCheckbox.tsx b/src/features/core/components/inputs/ThreeStateCheckbox.tsx similarity index 100% rename from src/modules/core/components/inputs/ThreeStateCheckbox.tsx rename to src/features/core/components/inputs/ThreeStateCheckbox.tsx diff --git a/src/modules/core/components/inputs/ThreeStateCheckboxInput.tsx b/src/features/core/components/inputs/ThreeStateCheckboxInput.tsx similarity index 83% rename from src/modules/core/components/inputs/ThreeStateCheckboxInput.tsx rename to src/features/core/components/inputs/ThreeStateCheckboxInput.tsx index 7a0d0224..363a547d 100644 --- a/src/modules/core/components/inputs/ThreeStateCheckboxInput.tsx +++ b/src/features/core/components/inputs/ThreeStateCheckboxInput.tsx @@ -8,7 +8,7 @@ import FormControlLabel from '@mui/material/FormControlLabel'; import React from 'react'; -import { ThreeStateCheckbox, ThreeStateCheckboxProps } from '@/modules/core/components/inputs/ThreeStateCheckbox.tsx'; +import { ThreeStateCheckbox, ThreeStateCheckboxProps } from '@/features/core/components/inputs/ThreeStateCheckbox.tsx'; interface IProps extends ThreeStateCheckboxProps { label?: string; diff --git a/src/modules/core/components/lists/ListItemLink.tsx b/src/features/core/components/lists/ListItemLink.tsx similarity index 100% rename from src/modules/core/components/lists/ListItemLink.tsx rename to src/features/core/components/lists/ListItemLink.tsx diff --git a/src/modules/core/components/lists/cards/ListCardAvatar.tsx b/src/features/core/components/lists/cards/ListCardAvatar.tsx similarity index 92% rename from src/modules/core/components/lists/cards/ListCardAvatar.tsx rename to src/features/core/components/lists/cards/ListCardAvatar.tsx index e012a07c..a982b1cb 100644 --- a/src/modules/core/components/lists/cards/ListCardAvatar.tsx +++ b/src/features/core/components/lists/cards/ListCardAvatar.tsx @@ -7,7 +7,7 @@ */ import Avatar, { AvatarProps } from '@mui/material/Avatar'; -import { SpinnerImage, SpinnerImageProps } from '@/modules/core/components/SpinnerImage.tsx'; +import { SpinnerImage, SpinnerImageProps } from '@/features/core/components/SpinnerImage.tsx'; export const ListCardAvatar = ({ iconUrl, diff --git a/src/modules/core/components/lists/cards/ListCardContent.tsx b/src/features/core/components/lists/cards/ListCardContent.tsx similarity index 100% rename from src/modules/core/components/lists/cards/ListCardContent.tsx rename to src/features/core/components/lists/cards/ListCardContent.tsx diff --git a/src/modules/core/components/lists/cards/OptionalCardActionAreaLink.tsx b/src/features/core/components/lists/cards/OptionalCardActionAreaLink.tsx similarity index 100% rename from src/modules/core/components/lists/cards/OptionalCardActionAreaLink.tsx rename to src/features/core/components/lists/cards/OptionalCardActionAreaLink.tsx diff --git a/src/modules/core/components/menu/IconMenuItem.tsx b/src/features/core/components/menu/IconMenuItem.tsx similarity index 100% rename from src/modules/core/components/menu/IconMenuItem.tsx rename to src/features/core/components/menu/IconMenuItem.tsx diff --git a/src/modules/core/components/menu/Menu.tsx b/src/features/core/components/menu/Menu.tsx similarity index 100% rename from src/modules/core/components/menu/Menu.tsx rename to src/features/core/components/menu/Menu.tsx diff --git a/src/modules/core/components/menu/Menu.utils.ts b/src/features/core/components/menu/Menu.utils.ts similarity index 100% rename from src/modules/core/components/menu/Menu.utils.ts rename to src/features/core/components/menu/Menu.utils.ts diff --git a/src/modules/core/components/menu/MenuItem.tsx b/src/features/core/components/menu/MenuItem.tsx similarity index 100% rename from src/modules/core/components/menu/MenuItem.tsx rename to src/features/core/components/menu/MenuItem.tsx diff --git a/src/modules/core/components/menu/NestedMenuItem.tsx b/src/features/core/components/menu/NestedMenuItem.tsx similarity index 96% rename from src/modules/core/components/menu/NestedMenuItem.tsx rename to src/features/core/components/menu/NestedMenuItem.tsx index ba2be0a2..b24afb7b 100644 --- a/src/modules/core/components/menu/NestedMenuItem.tsx +++ b/src/features/core/components/menu/NestedMenuItem.tsx @@ -33,9 +33,9 @@ import Box from '@mui/material/Box'; import { OverridableComponent } from '@mui/material/OverridableComponent'; import { SvgIconTypeMap } from '@mui/material/SvgIcon'; import { useMergedRef } from '@mantine/hooks'; -import { IconMenuItem } from '@/modules/core/components/menu/IconMenuItem.tsx'; -import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { IconMenuItem } from '@/features/core/components/menu/IconMenuItem.tsx'; +import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; export type NestedMenuItemProps = Omit & { parentMenuOpen: boolean; diff --git a/src/modules/core/components/modals/ConfirmDialog.tsx b/src/features/core/components/modals/ConfirmDialog.tsx similarity index 100% rename from src/modules/core/components/modals/ConfirmDialog.tsx rename to src/features/core/components/modals/ConfirmDialog.tsx diff --git a/src/modules/core/components/modals/OptionsPanel.tsx b/src/features/core/components/modals/OptionsPanel.tsx similarity index 100% rename from src/modules/core/components/modals/OptionsPanel.tsx rename to src/features/core/components/modals/OptionsPanel.tsx diff --git a/src/modules/core/components/modals/OptionsTabs.tsx b/src/features/core/components/modals/OptionsTabs.tsx similarity index 91% rename from src/modules/core/components/modals/OptionsTabs.tsx rename to src/features/core/components/modals/OptionsTabs.tsx index 2c7a3c24..2803045e 100644 --- a/src/modules/core/components/modals/OptionsTabs.tsx +++ b/src/features/core/components/modals/OptionsTabs.tsx @@ -10,8 +10,8 @@ import Stack from '@mui/material/Stack'; import Tab from '@mui/material/Tab'; import Tabs from '@mui/material/Tabs'; import React, { useState } from 'react'; -import { TabPanel } from '@/modules/core/components/tabs/TabPanel.tsx'; -import { OptionsPanel } from '@/modules/core/components/modals/OptionsPanel.tsx'; +import { TabPanel } from '@/features/core/components/tabs/TabPanel.tsx'; +import { OptionsPanel } from '@/features/core/components/modals/OptionsPanel.tsx'; interface IProps { open: boolean; diff --git a/src/modules/core/components/settings/CheckboxListSetting.tsx b/src/features/core/components/settings/CheckboxListSetting.tsx similarity index 96% rename from src/modules/core/components/settings/CheckboxListSetting.tsx rename to src/features/core/components/settings/CheckboxListSetting.tsx index 958ead02..75ed7f44 100644 --- a/src/modules/core/components/settings/CheckboxListSetting.tsx +++ b/src/features/core/components/settings/CheckboxListSetting.tsx @@ -16,8 +16,8 @@ import { useTranslation } from 'react-i18next'; import Stack from '@mui/material/Stack'; import { useCallback, useMemo } from 'react'; import { CheckboxProps } from '@mui/material/Checkbox'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { useSelectableCollection } from '@/modules/collection/hooks/useSelectableCollection.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { useSelectableCollection } from '@/features/collection/hooks/useSelectableCollection.ts'; export function CheckboxListSetting({ title, diff --git a/src/modules/core/components/settings/DateSetting.tsx b/src/features/core/components/settings/DateSetting.tsx similarity index 100% rename from src/modules/core/components/settings/DateSetting.tsx rename to src/features/core/components/settings/DateSetting.tsx diff --git a/src/modules/core/components/settings/MutableListSetting.tsx b/src/features/core/components/settings/MutableListSetting.tsx similarity index 96% rename from src/modules/core/components/settings/MutableListSetting.tsx rename to src/features/core/components/settings/MutableListSetting.tsx index d7d79986..56a3076c 100644 --- a/src/modules/core/components/settings/MutableListSetting.tsx +++ b/src/features/core/components/settings/MutableListSetting.tsx @@ -23,10 +23,10 @@ import DeleteIcon from '@mui/icons-material/Delete'; import IconButton from '@mui/material/IconButton'; import DialogContentText from '@mui/material/DialogContentText'; import InfoIcon from '@mui/icons-material/Info'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { TextSetting, TextSettingProps } from '@/modules/core/components/settings/text/TextSetting.tsx'; -import { TextSettingDialog } from '@/modules/core/components/settings/text/TextSettingDialog.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { TextSetting, TextSettingProps } from '@/features/core/components/settings/text/TextSetting.tsx'; +import { TextSettingDialog } from '@/features/core/components/settings/text/TextSettingDialog.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; const MutableListItem = ({ handleDelete, diff --git a/src/modules/core/components/settings/NumberSetting.tsx b/src/features/core/components/settings/NumberSetting.tsx similarity index 100% rename from src/modules/core/components/settings/NumberSetting.tsx rename to src/features/core/components/settings/NumberSetting.tsx diff --git a/src/modules/core/components/settings/SelectSetting.tsx b/src/features/core/components/settings/SelectSetting.tsx similarity index 98% rename from src/modules/core/components/settings/SelectSetting.tsx rename to src/features/core/components/settings/SelectSetting.tsx index 854453e6..cfe97095 100644 --- a/src/modules/core/components/settings/SelectSetting.tsx +++ b/src/features/core/components/settings/SelectSetting.tsx @@ -21,7 +21,7 @@ import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import DialogContentText from '@mui/material/DialogContentText'; import InfoIcon from '@mui/icons-material/Info'; -import { Select } from '@/modules/core/components/inputs/Select.tsx'; +import { Select } from '@/features/core/components/inputs/Select.tsx'; import { TranslationKey } from '@/Base.types.ts'; export type SelectSettingValueDisplayInfo = { diff --git a/src/modules/core/components/settings/TimeSetting.tsx b/src/features/core/components/settings/TimeSetting.tsx similarity index 100% rename from src/modules/core/components/settings/TimeSetting.tsx rename to src/features/core/components/settings/TimeSetting.tsx diff --git a/src/modules/core/components/settings/text/TextSetting.tsx b/src/features/core/components/settings/text/TextSetting.tsx similarity index 95% rename from src/modules/core/components/settings/text/TextSetting.tsx rename to src/features/core/components/settings/text/TextSetting.tsx index 81fd2a85..6bc9e7a9 100644 --- a/src/modules/core/components/settings/text/TextSetting.tsx +++ b/src/features/core/components/settings/text/TextSetting.tsx @@ -12,7 +12,7 @@ import { useState } from 'react'; import { TextSettingDialog, TextSettingDialogProps, -} from '@/modules/core/components/settings/text/TextSettingDialog.tsx'; +} from '@/features/core/components/settings/text/TextSettingDialog.tsx'; export type TextSettingProps = Omit & Required> & { diff --git a/src/modules/core/components/settings/text/TextSettingDialog.tsx b/src/features/core/components/settings/text/TextSettingDialog.tsx similarity index 97% rename from src/modules/core/components/settings/text/TextSettingDialog.tsx rename to src/features/core/components/settings/text/TextSettingDialog.tsx index 4509ec56..07e16962 100644 --- a/src/modules/core/components/settings/text/TextSettingDialog.tsx +++ b/src/features/core/components/settings/text/TextSettingDialog.tsx @@ -15,7 +15,7 @@ import TextField from '@mui/material/TextField'; import DialogActions from '@mui/material/DialogActions'; import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { PasswordTextField } from '@/modules/core/components/inputs/PasswordTextField.tsx'; +import { PasswordTextField } from '@/features/core/components/inputs/PasswordTextField.tsx'; export type TextSettingDialogProps = { settingName: string; diff --git a/src/modules/core/components/tabs/TabPanel.tsx b/src/features/core/components/tabs/TabPanel.tsx similarity index 100% rename from src/modules/core/components/tabs/TabPanel.tsx rename to src/features/core/components/tabs/TabPanel.tsx diff --git a/src/modules/core/components/tabs/TabsMenu.tsx b/src/features/core/components/tabs/TabsMenu.tsx similarity index 93% rename from src/modules/core/components/tabs/TabsMenu.tsx rename to src/features/core/components/tabs/TabsMenu.tsx index 316d092e..a8960fd4 100644 --- a/src/modules/core/components/tabs/TabsMenu.tsx +++ b/src/features/core/components/tabs/TabsMenu.tsx @@ -9,7 +9,7 @@ import Tabs, { TabsProps } from '@mui/material/Tabs'; import { styled } from '@mui/material/styles'; import { ForwardedRef, forwardRef } from 'react'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; const StyledTabsMenu = styled(Tabs)(({ theme }) => ({ display: 'flex', diff --git a/src/modules/core/components/tabs/TabsWrapper.tsx b/src/features/core/components/tabs/TabsWrapper.tsx similarity index 100% rename from src/modules/core/components/tabs/TabsWrapper.tsx rename to src/features/core/components/tabs/TabsWrapper.tsx diff --git a/src/modules/core/components/texts/Kbd.tsx b/src/features/core/components/texts/Kbd.tsx similarity index 100% rename from src/modules/core/components/texts/Kbd.tsx rename to src/features/core/components/texts/Kbd.tsx diff --git a/src/modules/core/components/texts/Metadata.tsx b/src/features/core/components/texts/Metadata.tsx similarity index 100% rename from src/modules/core/components/texts/Metadata.tsx rename to src/features/core/components/texts/Metadata.tsx diff --git a/src/modules/core/components/texts/Superscript.tsx b/src/features/core/components/texts/Superscript.tsx similarity index 100% rename from src/modules/core/components/texts/Superscript.tsx rename to src/features/core/components/texts/Superscript.tsx diff --git a/src/modules/core/components/texts/TypographyMaxLines.tsx b/src/features/core/components/texts/TypographyMaxLines.tsx similarity index 94% rename from src/modules/core/components/texts/TypographyMaxLines.tsx rename to src/features/core/components/texts/TypographyMaxLines.tsx index f3bb0d20..d0fb123f 100644 --- a/src/modules/core/components/texts/TypographyMaxLines.tsx +++ b/src/features/core/components/texts/TypographyMaxLines.tsx @@ -8,7 +8,7 @@ import { styled, Theme, TypographyVariant } from '@mui/material/styles'; import Typography, { TypographyProps } from '@mui/material/Typography'; -import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; +import { shouldForwardProp } from '@/features/core/utils/ShouldForwardProp.ts'; const DEFAULT_LINE_HEIGHT = '1.5'; diff --git a/src/modules/core/components/virtuoso/StyledGroupHeader.tsx b/src/features/core/components/virtuoso/StyledGroupHeader.tsx similarity index 92% rename from src/modules/core/components/virtuoso/StyledGroupHeader.tsx rename to src/features/core/components/virtuoso/StyledGroupHeader.tsx index 5449ccc2..c98918fd 100644 --- a/src/modules/core/components/virtuoso/StyledGroupHeader.tsx +++ b/src/features/core/components/virtuoso/StyledGroupHeader.tsx @@ -9,7 +9,7 @@ import { styled } from '@mui/material/styles'; import { TypographyProps } from '@mui/material/Typography'; import Stack from '@mui/material/Stack'; -import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; +import { shouldForwardProp } from '@/features/core/utils/ShouldForwardProp.ts'; type StyledGroupHeaderProps = { isFirstItem: boolean; diff --git a/src/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx b/src/features/core/components/virtuoso/StyledGroupItemWrapper.tsx similarity index 100% rename from src/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx rename to src/features/core/components/virtuoso/StyledGroupItemWrapper.tsx diff --git a/src/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx b/src/features/core/components/virtuoso/StyledGroupedVirtuoso.tsx similarity index 94% rename from src/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx rename to src/features/core/components/virtuoso/StyledGroupedVirtuoso.tsx index ab55e961..23577005 100644 --- a/src/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx +++ b/src/features/core/components/virtuoso/StyledGroupedVirtuoso.tsx @@ -9,7 +9,7 @@ import { ContextProp, TopItemListProps } from 'react-virtuoso'; import { ComponentProps, useMemo } from 'react'; import Box from '@mui/material/Box'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; import { GroupedVirtuosoPersisted } from '@/lib/virtuoso/Component/GroupedVirtuosoPersisted.tsx'; const StickyVirtuosoHeaderWithOffset = diff --git a/src/modules/core/contexts/AppContext.tsx b/src/features/core/contexts/AppContext.tsx similarity index 75% rename from src/modules/core/contexts/AppContext.tsx rename to src/features/core/contexts/AppContext.tsx index d677ca84..ea477400 100644 --- a/src/modules/core/contexts/AppContext.tsx +++ b/src/features/core/contexts/AppContext.tsx @@ -12,13 +12,13 @@ import { BrowserRouter as Router } from 'react-router-dom'; import { QueryParamProvider } from 'use-query-params'; import { ReactRouter6Adapter } from 'use-query-params/adapters/react-router-6'; import { SnackbarProvider } from 'notistack'; -import { NavBarContextProvider } from '@/modules/navigation-bar/contexts/NavBarContextProvider.tsx'; -import { ActiveDeviceContextProvider } from '@/modules/device/contexts/DeviceContext.tsx'; -import { ReaderContextProvider } from '@/modules/reader/contexts/ReaderContextProvider.tsx'; -import { AppHotkeysProvider } from '@/modules/hotkeys/contexts/AppHotkeysProvider.tsx'; -import { SnackbarWithDescription } from '@/modules/core/components/feedback/SnackbarWithDescription.tsx'; -import { AppPageHistoryContextProvider } from '@/modules/core/contexts/AppPageHistoryContextProvider.tsx'; -import { AppThemeContextProvider } from '@/modules/theme/contexts/AppThemeContextProvider.tsx'; +import { NavBarContextProvider } from '@/features/navigation-bar/contexts/NavBarContextProvider.tsx'; +import { ActiveDeviceContextProvider } from '@/features/device/contexts/DeviceContext.tsx'; +import { ReaderContextProvider } from '@/features/reader/contexts/ReaderContextProvider.tsx'; +import { AppHotkeysProvider } from '@/features/hotkeys/contexts/AppHotkeysProvider.tsx'; +import { SnackbarWithDescription } from '@/features/core/components/feedback/SnackbarWithDescription.tsx'; +import { AppPageHistoryContextProvider } from '@/features/core/contexts/AppPageHistoryContextProvider.tsx'; +import { AppThemeContextProvider } from '@/features/theme/contexts/AppThemeContextProvider.tsx'; interface Props { children: React.ReactNode; diff --git a/src/modules/core/contexts/AppPageHistoryContext.tsx b/src/features/core/contexts/AppPageHistoryContext.tsx similarity index 100% rename from src/modules/core/contexts/AppPageHistoryContext.tsx rename to src/features/core/contexts/AppPageHistoryContext.tsx diff --git a/src/modules/core/contexts/AppPageHistoryContextProvider.tsx b/src/features/core/contexts/AppPageHistoryContextProvider.tsx similarity index 77% rename from src/modules/core/contexts/AppPageHistoryContextProvider.tsx rename to src/features/core/contexts/AppPageHistoryContextProvider.tsx index 08221b3c..a118f869 100644 --- a/src/modules/core/contexts/AppPageHistoryContextProvider.tsx +++ b/src/features/core/contexts/AppPageHistoryContextProvider.tsx @@ -7,8 +7,8 @@ */ import React from 'react'; -import { AppPageHistoryContext } from '@/modules/core/contexts/AppPageHistoryContext.tsx'; -import { useHistory } from '@/modules/core/hooks/useHistory.ts'; +import { AppPageHistoryContext } from '@/features/core/contexts/AppPageHistoryContext.tsx'; +import { useHistory } from '@/features/core/hooks/useHistory.ts'; export const AppPageHistoryContextProvider = ({ children }: { children: React.ReactNode }) => { const history = useHistory(); diff --git a/src/modules/core/hoc/withPropsFrom.tsx b/src/features/core/hoc/withPropsFrom.tsx similarity index 100% rename from src/modules/core/hoc/withPropsFrom.tsx rename to src/features/core/hoc/withPropsFrom.tsx diff --git a/src/modules/core/hooks/useAutomaticScrolling.ts b/src/features/core/hooks/useAutomaticScrolling.ts similarity index 97% rename from src/modules/core/hooks/useAutomaticScrolling.ts rename to src/features/core/hooks/useAutomaticScrolling.ts index cfc64d51..1c7e3213 100644 --- a/src/modules/core/hooks/useAutomaticScrolling.ts +++ b/src/features/core/hooks/useAutomaticScrolling.ts @@ -7,8 +7,8 @@ */ import { MutableRefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { ScrollDirection } from '@/modules/core/Core.types.ts'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; +import { ScrollDirection } from '@/features/core/Core.types.ts'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; // "scrollBy" and "scrollTo" both require at least a change of 1px, otherwise, nothing happens const MIN_SCROLL_AMOUNT_PX = 1; diff --git a/src/modules/core/hooks/useBackButton.ts b/src/features/core/hooks/useBackButton.ts similarity index 88% rename from src/modules/core/hooks/useBackButton.ts rename to src/features/core/hooks/useBackButton.ts index bc670368..e881d61a 100644 --- a/src/modules/core/hooks/useBackButton.ts +++ b/src/features/core/hooks/useBackButton.ts @@ -8,8 +8,8 @@ import { useLocation, useNavigate } from 'react-router-dom'; import { useCallback } from 'react'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { useAppPageHistoryContext } from '@/modules/core/contexts/AppPageHistoryContext.tsx'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { useAppPageHistoryContext } from '@/features/core/contexts/AppPageHistoryContext.tsx'; const PAGES_TO_IGNORE: readonly RegExp[] = [/\/manga\/[0-9]+\/chapter\/[0-9]+/g]; diff --git a/src/modules/core/hooks/useDebounce.ts b/src/features/core/hooks/useDebounce.ts similarity index 100% rename from src/modules/core/hooks/useDebounce.ts rename to src/features/core/hooks/useDebounce.ts diff --git a/src/modules/core/hooks/useHistory.ts b/src/features/core/hooks/useHistory.ts similarity index 100% rename from src/modules/core/hooks/useHistory.ts rename to src/features/core/hooks/useHistory.ts diff --git a/src/modules/core/hooks/useIntersectionObserver.tsx b/src/features/core/hooks/useIntersectionObserver.tsx similarity index 100% rename from src/modules/core/hooks/useIntersectionObserver.tsx rename to src/features/core/hooks/useIntersectionObserver.tsx diff --git a/src/modules/core/hooks/useMouseDragScroll.tsx b/src/features/core/hooks/useMouseDragScroll.tsx similarity index 99% rename from src/modules/core/hooks/useMouseDragScroll.tsx rename to src/features/core/hooks/useMouseDragScroll.tsx index 2f5956bb..2d0187ed 100644 --- a/src/modules/core/hooks/useMouseDragScroll.tsx +++ b/src/features/core/hooks/useMouseDragScroll.tsx @@ -13,7 +13,7 @@ */ import { MutableRefObject, useEffect, useRef, useState } from 'react'; -import { ScrollDirection } from '@/modules/core/Core.types.ts'; +import { ScrollDirection } from '@/features/core/Core.types.ts'; import { coerceIn } from '@/lib/HelperFunctions.ts'; type Positions = [OldestPos: number, SecondOldestPos: number, LatestPos: number]; diff --git a/src/modules/core/hooks/usePersistedValue.tsx b/src/features/core/hooks/usePersistedValue.tsx similarity index 92% rename from src/modules/core/hooks/usePersistedValue.tsx rename to src/features/core/hooks/usePersistedValue.tsx index b99fc2ba..e4b219e6 100644 --- a/src/modules/core/hooks/usePersistedValue.tsx +++ b/src/features/core/hooks/usePersistedValue.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; export const getPersistedServerSetting = (serverValue: T | undefined, lastValue: T): T => { const isDisabled = serverValue === 0; diff --git a/src/modules/core/hooks/useResizeObserver.tsx b/src/features/core/hooks/useResizeObserver.tsx similarity index 100% rename from src/modules/core/hooks/useResizeObserver.tsx rename to src/features/core/hooks/useResizeObserver.tsx diff --git a/src/modules/core/hooks/useStorage.tsx b/src/features/core/hooks/useStorage.tsx similarity index 100% rename from src/modules/core/hooks/useStorage.tsx rename to src/features/core/hooks/useStorage.tsx diff --git a/src/modules/core/utils/ApplyStyles.ts b/src/features/core/utils/ApplyStyles.ts similarity index 100% rename from src/modules/core/utils/ApplyStyles.ts rename to src/features/core/utils/ApplyStyles.ts diff --git a/src/modules/core/utils/AwaitableDialog.tsx b/src/features/core/utils/AwaitableDialog.tsx similarity index 90% rename from src/modules/core/utils/AwaitableDialog.tsx rename to src/features/core/utils/AwaitableDialog.tsx index 3a237403..82554e7d 100644 --- a/src/modules/core/utils/AwaitableDialog.tsx +++ b/src/features/core/utils/AwaitableDialog.tsx @@ -8,9 +8,9 @@ import { createRoot } from 'react-dom/client'; import { ThemeProvider } from '@mui/material/styles'; -import { ConfirmDialog } from '@/modules/core/components/modals/ConfirmDialog.tsx'; +import { ConfirmDialog } from '@/features/core/components/modals/ConfirmDialog.tsx'; import { ControlledPromise } from '@/lib/ControlledPromise.ts'; -import { getCurrentTheme } from '@/modules/theme/services/ThemeCreator.ts'; +import { getCurrentTheme } from '@/features/theme/services/ThemeCreator.ts'; export const awaitConfirmation = async ( dialogProps: Omit, 'onCancel' | 'onConfirm'>, diff --git a/src/modules/core/utils/Languages.ts b/src/features/core/utils/Languages.ts similarity index 98% rename from src/modules/core/utils/Languages.ts rename to src/features/core/utils/Languages.ts index 2438e283..b2ff65fb 100644 --- a/src/modules/core/utils/Languages.ts +++ b/src/features/core/utils/Languages.ts @@ -7,7 +7,7 @@ */ import { t } from 'i18next'; -import { ISOLanguage, IsoLanguages } from '@/modules/core/IsoLanguages.ts'; +import { ISOLanguage, IsoLanguages } from '@/features/core/IsoLanguages.ts'; import { TranslationKey } from '@/Base.types.ts'; export enum DefaultLanguage { diff --git a/src/modules/core/utils/LazyLoad.tsx b/src/features/core/utils/LazyLoad.tsx similarity index 77% rename from src/modules/core/utils/LazyLoad.tsx rename to src/features/core/utils/LazyLoad.tsx index ac1bf2c0..ecbf68d0 100644 --- a/src/modules/core/utils/LazyLoad.tsx +++ b/src/features/core/utils/LazyLoad.tsx @@ -6,6 +6,6 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; export const lazyLoadFallback = { fallback: }; diff --git a/src/modules/core/utils/MediaQuery.tsx b/src/features/core/utils/MediaQuery.tsx similarity index 94% rename from src/modules/core/utils/MediaQuery.tsx rename to src/features/core/utils/MediaQuery.tsx index 6f1e7d4e..b839623f 100644 --- a/src/modules/core/utils/MediaQuery.tsx +++ b/src/features/core/utils/MediaQuery.tsx @@ -9,9 +9,9 @@ import useMediaQuery from '@mui/material/useMediaQuery'; import { Breakpoint, SxProps, Theme } from '@mui/material/styles'; import { useCallback, useState } from 'react'; -import { getCurrentTheme } from '@/modules/theme/services/ThemeCreator.ts'; -import { ThemeMode } from '@/modules/theme/contexts/AppThemeContext.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; +import { getCurrentTheme } from '@/features/theme/services/ThemeCreator.ts'; +import { ThemeMode } from '@/features/theme/contexts/AppThemeContext.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; export class MediaQuery { static readonly MOBILE_WIDTH: Breakpoint | number = 'sm'; diff --git a/src/modules/core/utils/ShouldForwardProp.ts b/src/features/core/utils/ShouldForwardProp.ts similarity index 100% rename from src/modules/core/utils/ShouldForwardProp.ts rename to src/features/core/utils/ShouldForwardProp.ts diff --git a/src/modules/core/utils/Toast.ts b/src/features/core/utils/Toast.ts similarity index 100% rename from src/modules/core/utils/Toast.ts rename to src/features/core/utils/Toast.ts diff --git a/src/modules/core/utils/ValueRotationButton.utils.ts b/src/features/core/utils/ValueRotationButton.utils.ts similarity index 100% rename from src/modules/core/utils/ValueRotationButton.utils.ts rename to src/features/core/utils/ValueRotationButton.utils.ts diff --git a/src/modules/device/Device.types.ts b/src/features/device/Device.types.ts similarity index 100% rename from src/modules/device/Device.types.ts rename to src/features/device/Device.types.ts diff --git a/src/modules/device/contexts/DeviceContext.tsx b/src/features/device/contexts/DeviceContext.tsx similarity index 87% rename from src/modules/device/contexts/DeviceContext.tsx rename to src/features/device/contexts/DeviceContext.tsx index 42114e5b..0f83f64d 100644 --- a/src/modules/device/contexts/DeviceContext.tsx +++ b/src/features/device/contexts/DeviceContext.tsx @@ -7,8 +7,8 @@ */ import React, { ReactNode, useContext, useMemo } from 'react'; -import { DEFAULT_DEVICE, setActiveDevice } from '@/modules/device/services/Device.ts'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { DEFAULT_DEVICE, setActiveDevice } from '@/features/device/services/Device.ts'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; export const DeviceContext = React.createContext<{ activeDevice: string; diff --git a/src/modules/device/screens/DeviceSetting.tsx b/src/features/device/screens/DeviceSetting.tsx similarity index 83% rename from src/modules/device/screens/DeviceSetting.tsx rename to src/features/device/screens/DeviceSetting.tsx index 8d7163af..248e51ac 100644 --- a/src/modules/device/screens/DeviceSetting.tsx +++ b/src/features/device/screens/DeviceSetting.tsx @@ -14,18 +14,18 @@ import { useTranslation } from 'react-i18next'; import { updateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx'; -import { useDeviceContext } from '@/modules/device/contexts/DeviceContext.tsx'; -import { Select } from '@/modules/core/components/inputs/Select.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { MutableListSetting } from '@/features/core/components/settings/MutableListSetting.tsx'; +import { useDeviceContext } from '@/features/device/contexts/DeviceContext.tsx'; +import { Select } from '@/features/core/components/inputs/Select.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { DEFAULT_DEVICE } from '@/modules/device/services/Device.ts'; -import { MetadataServerSettingKeys, MetadataServerSettings } from '@/modules/settings/Settings.types.ts'; +import { DEFAULT_DEVICE } from '@/features/device/services/Device.ts'; +import { MetadataServerSettingKeys, MetadataServerSettings } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; export const DeviceSetting = () => { const { t } = useTranslation(); diff --git a/src/modules/device/services/Device.ts b/src/features/device/services/Device.ts similarity index 100% rename from src/modules/device/services/Device.ts rename to src/features/device/services/Device.ts diff --git a/src/modules/downloads/Downloads.constants.ts b/src/features/downloads/Downloads.constants.ts similarity index 100% rename from src/modules/downloads/Downloads.constants.ts rename to src/features/downloads/Downloads.constants.ts diff --git a/src/modules/downloads/Downloads.types.ts b/src/features/downloads/Downloads.types.ts similarity index 100% rename from src/modules/downloads/Downloads.types.ts rename to src/features/downloads/Downloads.types.ts diff --git a/src/modules/downloads/components/DeleteChaptersWhileReadingSetting.tsx b/src/features/downloads/components/DeleteChaptersWhileReadingSetting.tsx similarity index 97% rename from src/modules/downloads/components/DeleteChaptersWhileReadingSetting.tsx rename to src/features/downloads/components/DeleteChaptersWhileReadingSetting.tsx index 2c8ec1bd..71a1eca1 100644 --- a/src/modules/downloads/components/DeleteChaptersWhileReadingSetting.tsx +++ b/src/features/downloads/components/DeleteChaptersWhileReadingSetting.tsx @@ -11,7 +11,7 @@ import { SelectSetting, SelectSettingValue, SelectSettingValueDisplayInfo, -} from '@/modules/core/components/settings/SelectSetting.tsx'; +} from '@/features/core/components/settings/SelectSetting.tsx'; const CHAPTERS_TO_DELETE = [0, 1, 2, 3, 4, 5] as const; const CHAPTERS_TO_DELETE_TO_TRANSLATION_KEY: { diff --git a/src/modules/downloads/components/DownloadAheadSetting.tsx b/src/features/downloads/components/DownloadAheadSetting.tsx similarity index 84% rename from src/modules/downloads/components/DownloadAheadSetting.tsx rename to src/features/downloads/components/DownloadAheadSetting.tsx index 38721d0f..6450c242 100644 --- a/src/modules/downloads/components/DownloadAheadSetting.tsx +++ b/src/features/downloads/components/DownloadAheadSetting.tsx @@ -11,14 +11,14 @@ import List from '@mui/material/List'; import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; -import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx'; -import { updateMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts'; -import { MetadataServerSettings } from '@/modules/settings/Settings.types.ts'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; +import { getPersistedServerSetting, usePersistedValue } from '@/features/core/hooks/usePersistedValue.tsx'; +import { updateMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { MetadataDownloadSettings } from '@/features/downloads/Downloads.types.ts'; +import { MetadataServerSettings } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { DOWNLOAD_AHEAD } from '@/modules/downloads/Downloads.constants.ts'; +import { DOWNLOAD_AHEAD } from '@/features/downloads/Downloads.constants.ts'; export const DownloadAheadSetting = ({ downloadAheadLimit, diff --git a/src/modules/downloads/components/DownloadConversionSetting.tsx b/src/features/downloads/components/DownloadConversionSetting.tsx similarity index 98% rename from src/modules/downloads/components/DownloadConversionSetting.tsx rename to src/features/downloads/components/DownloadConversionSetting.tsx index 698c4b17..8ce7be52 100644 --- a/src/modules/downloads/components/DownloadConversionSetting.tsx +++ b/src/features/downloads/components/DownloadConversionSetting.tsx @@ -22,9 +22,9 @@ import Button from '@mui/material/Button'; import DialogActions from '@mui/material/DialogActions'; import DialogContentText from '@mui/material/DialogContentText'; import { SettingsDownloadConversion } from '@/lib/graphql/generated/graphql.ts'; -import { DOWNLOAD_CONVERSION_COMPRESSION } from '@/modules/downloads/Downloads.constants.ts'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; +import { DOWNLOAD_CONVERSION_COMPRESSION } from '@/features/downloads/Downloads.constants.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; const DEFAULT_MIME_TYPE = 'default'; const MIME_TYPE_PREFIX = 'image/'; diff --git a/src/modules/downloads/components/DownloadQueueChapterCard.tsx b/src/features/downloads/components/DownloadQueueChapterCard.tsx similarity index 84% rename from src/modules/downloads/components/DownloadQueueChapterCard.tsx rename to src/features/downloads/components/DownloadQueueChapterCard.tsx index 90c83e8f..c3617a7c 100644 --- a/src/modules/downloads/components/DownloadQueueChapterCard.tsx +++ b/src/features/downloads/components/DownloadQueueChapterCard.tsx @@ -15,20 +15,20 @@ import IconButton from '@mui/material/IconButton'; import { memo, useCallback } from 'react'; import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ChapterDownloadRetryButton } from '@/modules/chapter/components/buttons/ChapterDownloadRetryButton.tsx'; -import { DownloadStateIndicator } from '@/modules/core/components/downloads/DownloadStateIndicator.tsx'; -import { ChapterCardMetadata } from '@/modules/chapter/components/cards/ChapterCardMetadata.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ChapterDownloadRetryButton } from '@/features/chapter/components/buttons/ChapterDownloadRetryButton.tsx'; +import { DownloadStateIndicator } from '@/features/core/components/downloads/DownloadStateIndicator.tsx'; +import { ChapterCardMetadata } from '@/features/chapter/components/cards/ChapterCardMetadata.tsx'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { DownloaderState } from '@/lib/graphql/generated/graphql.ts'; -import { ChapterDownloadStatus, ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { ChapterDownloadStatus, ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; export const DownloadQueueChapterCard = memo( ({ item, status }: { item: ChapterDownloadStatus; status: DownloaderState }) => { diff --git a/src/modules/downloads/screens/DownloadQueue.tsx b/src/features/downloads/screens/DownloadQueue.tsx similarity index 90% rename from src/modules/downloads/screens/DownloadQueue.tsx rename to src/features/downloads/screens/DownloadQueue.tsx index 50dde35e..ee8eee9e 100644 --- a/src/modules/downloads/screens/DownloadQueue.tsx +++ b/src/features/downloads/screens/DownloadQueue.tsx @@ -16,21 +16,21 @@ import DeleteSweepIcon from '@mui/icons-material/DeleteSweep'; import { closestCenter, DndContext, DragEndEvent } from '@dnd-kit/core'; import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'; import { useWindowEvent } from '@mantine/hooks'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { DownloaderState } from '@/lib/graphql/generated/graphql.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { DndSortableItem } from '@/lib/dnd-kit/DndSortableItem.tsx'; import { DndKitUtil } from '@/lib/dnd-kit/DndKitUtil.ts'; import { DndOverlayItem } from '@/lib/dnd-kit/DndOverlayItem.tsx'; -import { DownloadQueueChapterCard } from '@/modules/downloads/components/DownloadQueueChapterCard.tsx'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { useAppAction } from '@/modules/navigation-bar/hooks/useAppAction.ts'; -import { ChapterDownloadStatus } from '@/modules/chapter/Chapter.types.ts'; +import { DownloadQueueChapterCard } from '@/features/downloads/components/DownloadQueueChapterCard.tsx'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { useAppAction } from '@/features/navigation-bar/hooks/useAppAction.ts'; +import { ChapterDownloadStatus } from '@/features/chapter/Chapter.types.ts'; import { VirtuosoPersisted } from '@/lib/virtuoso/Component/VirtuosoPersisted.tsx'; export const DownloadQueue: React.FC = () => { diff --git a/src/modules/downloads/screens/DownloadSettings.tsx b/src/features/downloads/screens/DownloadSettings.tsx similarity index 90% rename from src/modules/downloads/screens/DownloadSettings.tsx rename to src/features/downloads/screens/DownloadSettings.tsx index 89728fc6..e7fb449f 100644 --- a/src/modules/downloads/screens/DownloadSettings.tsx +++ b/src/features/downloads/screens/DownloadSettings.tsx @@ -12,27 +12,27 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import ListSubheader from '@mui/material/ListSubheader'; -import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; +import { TextSetting } from '@/features/core/components/settings/text/TextSetting.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { DownloadAheadSetting } from '@/modules/downloads/components/DownloadAheadSetting.tsx'; +import { DownloadAheadSetting } from '@/features/downloads/components/DownloadAheadSetting.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { DeleteChaptersWhileReadingSetting } from '@/modules/downloads/components/DeleteChaptersWhileReadingSetting.tsx'; -import { CategoriesInclusionSetting } from '@/modules/category/components/CategoriesInclusionSetting.tsx'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { DeleteChaptersWhileReadingSetting } from '@/features/downloads/components/DeleteChaptersWhileReadingSetting.tsx'; +import { CategoriesInclusionSetting } from '@/features/category/components/CategoriesInclusionSetting.tsx'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetCategoriesSettingsQuery, GetCategoriesSettingsQueryVariables } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_SETTINGS } from '@/lib/graphql/queries/CategoryQuery.ts'; -import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts'; -import { ServerSettings } from '@/modules/settings/Settings.types.ts'; +import { MetadataDownloadSettings } from '@/features/downloads/Downloads.types.ts'; +import { ServerSettings } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { DownloadConversionSetting } from '@/modules/downloads/components/DownloadConversionSetting.tsx'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { DownloadConversionSetting } from '@/features/downloads/components/DownloadConversionSetting.tsx'; type DownloadSettingsType = Pick< ServerSettings, diff --git a/src/modules/extension/Extensions.constants.ts b/src/features/extension/Extensions.constants.ts similarity index 95% rename from src/modules/extension/Extensions.constants.ts rename to src/features/extension/Extensions.constants.ts index 6cdefea3..cd15fe4e 100644 --- a/src/modules/extension/Extensions.constants.ts +++ b/src/features/extension/Extensions.constants.ts @@ -12,9 +12,9 @@ import { ExtensionState, InstalledState, InstalledStates, -} from '@/modules/extension/Extensions.types.ts'; +} from '@/features/extension/Extensions.types.ts'; import { TranslationKey } from '@/Base.types.ts'; -import { DefaultLanguage } from '@/modules/core/utils/Languages.ts'; +import { DefaultLanguage } from '@/features/core/utils/Languages.ts'; export const EXTENSION_ACTION_TO_STATE_MAP: { [action in ExtensionAction]: ExtensionState } = { [ExtensionAction.UPDATE]: ExtensionState.UPDATING, diff --git a/src/modules/extension/Extensions.types.ts b/src/features/extension/Extensions.types.ts similarity index 100% rename from src/modules/extension/Extensions.types.ts rename to src/features/extension/Extensions.types.ts diff --git a/src/modules/extension/Extensions.utils.ts b/src/features/extension/Extensions.utils.ts similarity index 96% rename from src/modules/extension/Extensions.utils.ts rename to src/features/extension/Extensions.utils.ts index b04063ad..280352c0 100644 --- a/src/modules/extension/Extensions.utils.ts +++ b/src/features/extension/Extensions.utils.ts @@ -14,7 +14,7 @@ import { GroupedExtensionsResult, InstalledState, TExtension, -} from '@/modules/extension/Extensions.types.ts'; +} from '@/features/extension/Extensions.types.ts'; import { DefaultLanguage, languageCodeToName, @@ -22,14 +22,14 @@ import { toComparableLanguage, toComparableLanguages, toUniqueLanguageCodes, -} from '@/modules/core/utils/Languages.ts'; +} from '@/features/core/utils/Languages.ts'; import { EXTENSION_ACTION_TO_FAILURE_TRANSLATION_KEY_MAP, extensionLanguageToTranslationKey, -} from '@/modules/extension/Extensions.constants.ts'; +} from '@/features/extension/Extensions.constants.ts'; import { enhancedCleanup } from '@/util/Strings.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const getInstalledState = ( diff --git a/src/modules/extension/components/ExtensionCard.tsx b/src/features/extension/components/ExtensionCard.tsx similarity index 88% rename from src/modules/extension/components/ExtensionCard.tsx rename to src/features/extension/components/ExtensionCard.tsx index 17e321ae..30e50bd7 100644 --- a/src/modules/extension/components/ExtensionCard.tsx +++ b/src/features/extension/components/ExtensionCard.tsx @@ -22,20 +22,20 @@ import { InstalledState, InstalledStates, TExtension, -} from '@/modules/extension/Extensions.types.ts'; +} from '@/features/extension/Extensions.types.ts'; import { EXTENSION_ACTION_TO_NEXT_ACTION_MAP, EXTENSION_ACTION_TO_STATE_MAP, INSTALLED_STATE_TO_TRANSLATION_KEY_MAP, -} from '@/modules/extension/Extensions.constants.ts'; -import { getInstalledState, updateExtension } from '@/modules/extension/Extensions.utils.ts'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip'; -import { ListCardAvatar } from '@/modules/core/components/lists/cards/ListCardAvatar.tsx'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +} from '@/features/extension/Extensions.constants.ts'; +import { getInstalledState, updateExtension } from '@/features/extension/Extensions.utils.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip'; +import { ListCardAvatar } from '@/features/core/components/lists/cards/ListCardAvatar.tsx'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { OptionalCardActionAreaLink } from '@/modules/core/components/lists/cards/OptionalCardActionAreaLink.tsx'; -import { languageCodeToName } from '@/modules/core/utils/Languages.ts'; +import { OptionalCardActionAreaLink } from '@/features/core/components/lists/cards/OptionalCardActionAreaLink.tsx'; +import { languageCodeToName } from '@/features/core/utils/Languages.ts'; interface IProps { extension: TExtension; diff --git a/src/modules/extension/components/ExtensionOptions.tsx b/src/features/extension/components/ExtensionOptions.tsx similarity index 84% rename from src/modules/extension/components/ExtensionOptions.tsx rename to src/features/extension/components/ExtensionOptions.tsx index a256bf65..ff8ffd87 100644 --- a/src/modules/extension/components/ExtensionOptions.tsx +++ b/src/features/extension/components/ExtensionOptions.tsx @@ -19,16 +19,16 @@ import DialogContent from '@mui/material/DialogContent'; import { useMemo } from 'react'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered'; import { getErrorMessage } from '@/lib/HelperFunctions'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip'; -import { AppRoutes } from '@/modules/core/AppRoute.constants'; -import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils'; -import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; -import { TExtension } from '@/modules/extension/Extensions.types.ts'; -import { Sources } from '@/modules/source/services/Sources.ts'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip'; +import { AppRoutes } from '@/features/core/AppRoute.constants'; +import { translateExtensionLanguage } from '@/features/extension/Extensions.utils'; +import { StyledGroupItemWrapper } from '@/features/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { TExtension } from '@/features/extension/Extensions.types.ts'; +import { Sources } from '@/features/source/services/Sources.ts'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; interface IExtensionOptions { extensionId: TExtension['pkgName'] | undefined; diff --git a/src/modules/extension/screens/ExtensionInfo.tsx b/src/features/extension/screens/ExtensionInfo.tsx similarity index 86% rename from src/modules/extension/screens/ExtensionInfo.tsx rename to src/features/extension/screens/ExtensionInfo.tsx index 5b8210d2..c0a62078 100644 --- a/src/modules/extension/screens/ExtensionInfo.tsx +++ b/src/features/extension/screens/ExtensionInfo.tsx @@ -19,33 +19,33 @@ import SettingsIcon from '@mui/icons-material/Settings'; import Divider from '@mui/material/Divider'; import Switch from '@mui/material/Switch'; import CardActionArea from '@mui/material/CardActionArea'; -import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; -import { Metadata } from '@/modules/core/components/texts/Metadata.tsx'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { SpinnerImage } from '@/features/core/components/SpinnerImage.tsx'; +import { Metadata } from '@/features/core/components/texts/Metadata.tsx'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { ExtensionAction, InstalledState, TExtension } from '@/modules/extension/Extensions.types.ts'; -import { languageCodeToName, languageSortComparator } from '@/modules/core/utils/Languages.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { ExtensionAction, InstalledState, TExtension } from '@/features/extension/Extensions.types.ts'; +import { languageCodeToName, languageSortComparator } from '@/features/core/utils/Languages.ts'; import { assertIsDefined } from '@/Asserts.ts'; -import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; +import { StyledGroupItemWrapper } from '@/features/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; import { getInstalledState, translateExtensionLanguage, updateExtension, -} from '@/modules/extension/Extensions.utils.ts'; -import { Sources } from '@/modules/source/services/Sources.ts'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { SourceConfigurableInfo, SourceIdInfo, SourceLanguageInfo } from '@/modules/source/Source.types.ts'; +} from '@/features/extension/Extensions.utils.ts'; +import { Sources } from '@/features/source/services/Sources.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { SourceConfigurableInfo, SourceIdInfo, SourceLanguageInfo } from '@/features/source/Source.types.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { useBackButton } from '@/modules/core/hooks/useBackButton.ts'; -import { createUpdateSourceMetadata, useGetSourceMetadata } from '@/modules/source/services/SourceMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { INSTALLED_STATE_TO_TRANSLATION_KEY_MAP } from '@/modules/extension/Extensions.constants.ts'; +import { useBackButton } from '@/features/core/hooks/useBackButton.ts'; +import { createUpdateSourceMetadata, useGetSourceMetadata } from '@/features/source/services/SourceMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { INSTALLED_STATE_TO_TRANSLATION_KEY_MAP } from '@/features/extension/Extensions.constants.ts'; const Header = ({ name, pkgName, iconUrl, repo }: TExtension) => ( diff --git a/src/modules/extension/screens/Extensions.tsx b/src/features/extension/screens/Extensions.tsx similarity index 89% rename from src/modules/extension/screens/Extensions.tsx rename to src/features/extension/screens/Extensions.tsx index cbe988ef..4cbb421f 100644 --- a/src/modules/extension/screens/Extensions.tsx +++ b/src/features/extension/screens/Extensions.tsx @@ -17,17 +17,17 @@ import Typography from '@mui/material/Typography'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; import { useWindowEvent } from '@mantine/hooks'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { LanguageSelect } from '@/modules/core/components/inputs/LanguageSelect.tsx'; -import { ExtensionCard } from '@/modules/extension/components/ExtensionCard.tsx'; -import { StyledGroupedVirtuoso } from '@/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; -import { StyledGroupHeader } from '@/modules/core/components/virtuoso/StyledGroupHeader.tsx'; -import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { AppbarSearch } from '@/features/core/components/AppbarSearch.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { LanguageSelect } from '@/features/core/components/inputs/LanguageSelect.tsx'; +import { ExtensionCard } from '@/features/extension/components/ExtensionCard.tsx'; +import { StyledGroupedVirtuoso } from '@/features/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; +import { StyledGroupHeader } from '@/features/core/components/virtuoso/StyledGroupHeader.tsx'; +import { StyledGroupItemWrapper } from '@/features/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { VirtuosoUtil } from '@/lib/virtuoso/Virtuoso.util.tsx'; import { @@ -35,23 +35,23 @@ import { getLanguagesFromExtensions, translateExtensionLanguage, filterExtensions, -} from '@/modules/extension/Extensions.utils.ts'; +} from '@/features/extension/Extensions.utils.ts'; import { ExtensionAction, ExtensionGroupState, ExtensionState, TExtension, -} from '@/modules/extension/Extensions.types.ts'; -import { EXTENSION_ACTION_TO_FAILURE_TRANSLATION_KEY_MAP } from '@/modules/extension/Extensions.constants.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +} from '@/features/extension/Extensions.types.ts'; +import { EXTENSION_ACTION_TO_FAILURE_TRANSLATION_KEY_MAP } from '@/features/extension/Extensions.constants.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { MetadataBrowseSettings } from '@/modules/browse/Browse.types.ts'; -import { useAppAction } from '@/modules/navigation-bar/hooks/useAppAction.ts'; -import { SearchParam } from '@/modules/core/Core.types.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { MetadataBrowseSettings } from '@/features/browse/Browse.types.ts'; +import { useAppAction } from '@/features/navigation-bar/hooks/useAppAction.ts'; +import { SearchParam } from '@/features/core/Core.types.ts'; const LANGUAGE = 0; const EXTENSIONS = 1; diff --git a/src/modules/global-search/screens/SearchAll.tsx b/src/features/global-search/screens/SearchAll.tsx similarity index 91% rename from src/modules/global-search/screens/SearchAll.tsx rename to src/features/global-search/screens/SearchAll.tsx index 9c857e72..5d614f8e 100644 --- a/src/modules/global-search/screens/SearchAll.tsx +++ b/src/features/global-search/screens/SearchAll.tsx @@ -23,37 +23,37 @@ import { useElementSize } from '@mantine/hooks'; import IconButton from '@mui/material/IconButton'; // ms import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx'; -import { useDebounce } from '@/modules/core/hooks/useDebounce.ts'; -import { MangaCardProps } from '@/modules/manga/Manga.types.ts'; -import { EmptyView } from '@/modules/core/components/feedback/EmptyView.tsx'; +import { AppbarSearch } from '@/features/core/components/AppbarSearch.tsx'; +import { useDebounce } from '@/features/core/hooks/useDebounce.ts'; +import { MangaCardProps } from '@/features/manga/Manga.types.ts'; +import { EmptyView } from '@/features/core/components/feedback/EmptyView.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { BaseMangaGrid } from '@/modules/manga/components/BaseMangaGrid.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { BaseMangaGrid } from '@/features/manga/components/BaseMangaGrid.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { translateExtensionLanguage } from '@/features/extension/Extensions.utils.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { Sources } from '@/modules/source/services/Sources.ts'; +import { Sources } from '@/features/source/services/Sources.ts'; import { SourceDisplayNameInfo, SourceIdInfo, SourceLanguageInfo, SourceMetaInfo, SourceNameInfo, -} from '@/modules/source/Source.types.ts'; +} from '@/features/source/Source.types.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { useAppTitleAndAction } from '@/modules/navigation-bar/hooks/useAppTitleAndAction.ts'; -import { getSourceMetadata } from '@/modules/source/services/SourceMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { useAppTitleAndAction } from '@/features/navigation-bar/hooks/useAppTitleAndAction.ts'; +import { getSourceMetadata } from '@/features/source/services/SourceMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { MetadataBrowseSettings } from '@/modules/browse/Browse.types.ts'; -import { SourceLanguageSelect } from '@/modules/source/components/SourceLanguageSelect.tsx'; -import { SearchParam } from '@/modules/core/Core.types.ts'; +import { MetadataBrowseSettings } from '@/features/browse/Browse.types.ts'; +import { SourceLanguageSelect } from '@/features/source/components/SourceLanguageSelect.tsx'; +import { SearchParam } from '@/features/core/Core.types.ts'; type SourceLoadingState = { isLoading: boolean; hasResults: boolean; emptySearch: boolean; error: any }; type SourceToLoadingStateMap = Map; diff --git a/src/modules/history/History.types.ts b/src/features/history/History.types.ts similarity index 100% rename from src/modules/history/History.types.ts rename to src/features/history/History.types.ts diff --git a/src/modules/history/components/ChapterHistoryCard.tsx b/src/features/history/components/ChapterHistoryCard.tsx similarity index 75% rename from src/modules/history/components/ChapterHistoryCard.tsx rename to src/features/history/components/ChapterHistoryCard.tsx index f609f4f1..8770dc27 100644 --- a/src/modules/history/components/ChapterHistoryCard.tsx +++ b/src/features/history/components/ChapterHistoryCard.tsx @@ -11,16 +11,16 @@ import CardActionArea from '@mui/material/CardActionArea'; import Card from '@mui/material/Card'; import { Link } from 'react-router-dom'; import { memo } from 'react'; -import { DownloadStateIndicator } from '@/modules/core/components/downloads/DownloadStateIndicator.tsx'; +import { DownloadStateIndicator } from '@/features/core/components/downloads/DownloadStateIndicator.tsx'; import { ChapterHistoryListFieldsFragment } from '@/lib/graphql/generated/graphql.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { epochToDate, timeFormatter } from '@/util/DateHelper.ts'; -import { ChapterCardThumbnail } from '@/modules/chapter/components/cards/ChapterCardThumbnail.tsx'; -import { ChapterCardMetadata } from '@/modules/chapter/components/cards/ChapterCardMetadata.tsx'; -import { ChapterDownloadButton } from '@/modules/chapter/components/buttons/ChapterDownloadButton.tsx'; -import { ChapterDownloadRetryButton } from '@/modules/chapter/components/buttons/ChapterDownloadRetryButton.tsx'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent'; +import { ChapterCardThumbnail } from '@/features/chapter/components/cards/ChapterCardThumbnail.tsx'; +import { ChapterCardMetadata } from '@/features/chapter/components/cards/ChapterCardMetadata.tsx'; +import { ChapterDownloadButton } from '@/features/chapter/components/buttons/ChapterDownloadButton.tsx'; +import { ChapterDownloadRetryButton } from '@/features/chapter/components/buttons/ChapterDownloadRetryButton.tsx'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent'; export const ChapterHistoryCard = memo(({ chapter }: { chapter: ChapterHistoryListFieldsFragment }) => { const { manga } = chapter; diff --git a/src/modules/history/screens/History.tsx b/src/features/history/screens/History.tsx similarity index 82% rename from src/modules/history/screens/History.tsx rename to src/features/history/screens/History.tsx index 002bac0f..25e07079 100644 --- a/src/modules/history/screens/History.tsx +++ b/src/features/history/screens/History.tsx @@ -10,17 +10,17 @@ import Typography from '@mui/material/Typography'; import React, { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { StyledGroupedVirtuoso } from '@/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; -import { StyledGroupHeader } from '@/modules/core/components/virtuoso/StyledGroupHeader.tsx'; -import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { StyledGroupedVirtuoso } from '@/features/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; +import { StyledGroupHeader } from '@/features/core/components/virtuoso/StyledGroupHeader.tsx'; +import { StyledGroupItemWrapper } from '@/features/core/components/virtuoso/StyledGroupItemWrapper.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { VirtuosoUtil } from '@/lib/virtuoso/Virtuoso.util.tsx'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { ChapterHistoryCard } from '@/modules/history/components/ChapterHistoryCard.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { ChapterHistoryCard } from '@/features/history/components/ChapterHistoryCard.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; export const History: React.FC = () => { const { t } = useTranslation(); diff --git a/src/modules/history/screens/HistorySettings.tsx b/src/features/history/screens/HistorySettings.tsx similarity index 80% rename from src/modules/history/screens/HistorySettings.tsx rename to src/features/history/screens/HistorySettings.tsx index 11e5d6e7..b137db85 100644 --- a/src/modules/history/screens/HistorySettings.tsx +++ b/src/features/history/screens/HistorySettings.tsx @@ -14,14 +14,14 @@ import Switch from '@mui/material/Switch'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { MetadataHistorySettings } from '@/modules/history/History.types.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { MetadataHistorySettings } from '@/features/history/History.types.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; export const HistorySettings = () => { const { t } = useTranslation(); diff --git a/src/modules/hotkeys/Hotkeys.constants.ts b/src/features/hotkeys/Hotkeys.constants.ts similarity index 86% rename from src/modules/hotkeys/Hotkeys.constants.ts rename to src/features/hotkeys/Hotkeys.constants.ts index 701300a4..e8055b04 100644 --- a/src/modules/hotkeys/Hotkeys.constants.ts +++ b/src/features/hotkeys/Hotkeys.constants.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { HotkeyScope } from '@/modules/hotkeys/Hotkeys.types.ts'; +import { HotkeyScope } from '@/features/hotkeys/Hotkeys.types.ts'; export const HOTKEY_SCOPES = Object.fromEntries( Object.values(HotkeyScope).map((scope) => [scope, { scopes: scope }]), diff --git a/src/modules/hotkeys/Hotkeys.types.ts b/src/features/hotkeys/Hotkeys.types.ts similarity index 100% rename from src/modules/hotkeys/Hotkeys.types.ts rename to src/features/hotkeys/Hotkeys.types.ts diff --git a/src/modules/hotkeys/Hotkeys.utils.ts b/src/features/hotkeys/Hotkeys.utils.ts similarity index 93% rename from src/modules/hotkeys/Hotkeys.utils.ts rename to src/features/hotkeys/Hotkeys.utils.ts index 899aa60f..fd1acfd5 100644 --- a/src/modules/hotkeys/Hotkeys.utils.ts +++ b/src/features/hotkeys/Hotkeys.utils.ts @@ -8,7 +8,7 @@ import { useEffect, useRef } from 'react'; import { useHotkeysContext } from 'react-hotkeys-hook'; -import { HotkeyScope } from '@/modules/hotkeys/Hotkeys.types.ts'; +import { HotkeyScope } from '@/features/hotkeys/Hotkeys.types.ts'; export const useDisableAllHotkeysWhileMounted = (shouldDisable?: boolean) => { const { activeScopes, enableScope, disableScope } = useHotkeysContext(); diff --git a/src/modules/hotkeys/contexts/AppHotkeysProvider.tsx b/src/features/hotkeys/contexts/AppHotkeysProvider.tsx similarity index 88% rename from src/modules/hotkeys/contexts/AppHotkeysProvider.tsx rename to src/features/hotkeys/contexts/AppHotkeysProvider.tsx index f8704f33..8a2b5308 100644 --- a/src/modules/hotkeys/contexts/AppHotkeysProvider.tsx +++ b/src/features/hotkeys/contexts/AppHotkeysProvider.tsx @@ -8,7 +8,7 @@ import { HotkeysProvider } from 'react-hotkeys-hook'; import { ReactNode } from 'react'; -import { HotkeyScope } from '@/modules/hotkeys/Hotkeys.types.ts'; +import { HotkeyScope } from '@/features/hotkeys/Hotkeys.types.ts'; export const AppHotkeysProvider = ({ children }: { children?: ReactNode }) => ( {children} diff --git a/src/modules/library/Library.types.ts b/src/features/library/Library.types.ts similarity index 97% rename from src/modules/library/Library.types.ts rename to src/features/library/Library.types.ts index 4165ec9e..6ecfd313 100644 --- a/src/modules/library/Library.types.ts +++ b/src/features/library/Library.types.ts @@ -8,7 +8,7 @@ import { NullAndUndefined } from '@/Base.types.ts'; import { MangaStatus, MangaType, TrackerType } from '@/lib/graphql/generated/graphql.ts'; -import { GridLayout } from '@/modules/core/Core.types.ts'; +import { GridLayout } from '@/features/core/Core.types.ts'; export type MetadataLibrarySettings = { showAddToLibraryCategorySelectDialog: boolean; diff --git a/src/modules/library/components/LibraryMangaGrid.tsx b/src/features/library/components/LibraryMangaGrid.tsx similarity index 86% rename from src/modules/library/components/LibraryMangaGrid.tsx rename to src/features/library/components/LibraryMangaGrid.tsx index 28c190b7..32b1fdc6 100644 --- a/src/modules/library/components/LibraryMangaGrid.tsx +++ b/src/features/library/components/LibraryMangaGrid.tsx @@ -8,9 +8,9 @@ import React, { useLayoutEffect } from 'react'; import { useTranslation } from 'react-i18next'; -import { IMangaGridProps, MangaGrid } from '@/modules/manga/components/MangaGrid.tsx'; -import { GridLayout } from '@/modules/core/Core.types.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { IMangaGridProps, MangaGrid } from '@/features/manga/components/MangaGrid.tsx'; +import { GridLayout } from '@/features/core/Core.types.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; interface LibraryMangaGridProps extends Required>, diff --git a/src/modules/library/components/LibraryOptionsPanel.tsx b/src/features/library/components/LibraryOptionsPanel.tsx similarity index 91% rename from src/modules/library/components/LibraryOptionsPanel.tsx rename to src/features/library/components/LibraryOptionsPanel.tsx index 98ffcd44..ed7b6b26 100644 --- a/src/modules/library/components/LibraryOptionsPanel.tsx +++ b/src/features/library/components/LibraryOptionsPanel.tsx @@ -9,27 +9,27 @@ import FormLabel from '@mui/material/FormLabel'; import RadioGroup from '@mui/material/RadioGroup'; import { useTranslation } from 'react-i18next'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { RadioInput } from '@/modules/core/components/inputs/RadioInput.tsx'; -import { SortRadioInput } from '@/modules/core/components/inputs/SortRadioInput.tsx'; -import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; -import { OptionsTabs } from '@/modules/core/components/modals/OptionsTabs.tsx'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { RadioInput } from '@/features/core/components/inputs/RadioInput.tsx'; +import { SortRadioInput } from '@/features/core/components/inputs/SortRadioInput.tsx'; +import { ThreeStateCheckboxInput } from '@/features/core/components/inputs/ThreeStateCheckboxInput.tsx'; +import { OptionsTabs } from '@/features/core/components/modals/OptionsTabs.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { Trackers } from '@/modules/tracker/services/Trackers.ts'; +import { Trackers } from '@/features/tracker/services/Trackers.ts'; import { GetTrackersSettingsQuery, MangaStatus } from '@/lib/graphql/generated/graphql.ts'; import { GET_TRACKERS_SETTINGS } from '@/lib/graphql/queries/TrackerQuery.ts'; -import { createUpdateCategoryMetadata, useGetCategoryMetadata } from '@/modules/category/services/CategoryMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { createUpdateCategoryMetadata, useGetCategoryMetadata } from '@/features/category/services/CategoryMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { createUpdateMetadataServerSettings, updateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; import { TranslationKey } from '@/Base.types.ts'; -import { LibrarySortMode } from '@/modules/library/Library.types.ts'; -import { CategoryMetadataInfo } from '@/modules/category/Category.types.ts'; -import { MANGA_STATUS_TO_TRANSLATION } from '@/modules/manga/Manga.constants.ts'; -import { GridLayout } from '@/modules/core/Core.types.ts'; +import { LibrarySortMode } from '@/features/library/Library.types.ts'; +import { CategoryMetadataInfo } from '@/features/category/Category.types.ts'; +import { MANGA_STATUS_TO_TRANSLATION } from '@/features/manga/Manga.constants.ts'; +import { GridLayout } from '@/features/core/Core.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; const TITLES: { [key in 'filter' | 'sort' | 'display']: TranslationKey } = { diff --git a/src/modules/library/components/LibraryToolbarMenu.tsx b/src/features/library/components/LibraryToolbarMenu.tsx similarity index 85% rename from src/modules/library/components/LibraryToolbarMenu.tsx rename to src/features/library/components/LibraryToolbarMenu.tsx index a3dc49ea..00667801 100644 --- a/src/modules/library/components/LibraryToolbarMenu.tsx +++ b/src/features/library/components/LibraryToolbarMenu.tsx @@ -10,9 +10,9 @@ import FilterList from '@mui/icons-material/FilterList'; import IconButton from '@mui/material/IconButton'; import { ComponentProps, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { LibraryOptionsPanel } from '@/modules/library/components/LibraryOptionsPanel.tsx'; -import { getCategoryMetadata } from '@/modules/category/services/CategoryMetadata.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { LibraryOptionsPanel } from '@/features/library/components/LibraryOptionsPanel.tsx'; +import { getCategoryMetadata } from '@/features/category/services/CategoryMetadata.ts'; export const LibraryToolbarMenu = ({ category, diff --git a/src/modules/library/hooks/useGetVisibleLibraryMangas.ts b/src/features/library/hooks/useGetVisibleLibraryMangas.ts similarity index 94% rename from src/modules/library/hooks/useGetVisibleLibraryMangas.ts rename to src/features/library/hooks/useGetVisibleLibraryMangas.ts index 2acb9724..f3f983c9 100644 --- a/src/modules/library/hooks/useGetVisibleLibraryMangas.ts +++ b/src/features/library/hooks/useGetVisibleLibraryMangas.ts @@ -8,22 +8,22 @@ import { StringParam, useQueryParam } from 'use-query-params'; import { useMemo } from 'react'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { ChapterType, MangaType, TrackRecordType } from '@/lib/graphql/generated/graphql.ts'; import { enhancedCleanup } from '@/util/Strings.ts'; -import { useGetCategoryMetadata } from '@/modules/category/services/CategoryMetadata.ts'; +import { useGetCategoryMetadata } from '@/features/category/services/CategoryMetadata.ts'; import { NullAndUndefined } from '@/Base.types.ts'; -import { LibraryOptions, LibrarySortMode } from '@/modules/library/Library.types.ts'; -import { CategoryIdInfo, CategoryMetadataInfo } from '@/modules/category/Category.types.ts'; +import { LibraryOptions, LibrarySortMode } from '@/features/library/Library.types.ts'; +import { CategoryIdInfo, CategoryMetadataInfo } from '@/features/category/Category.types.ts'; import { MangaChapterCountInfo, MangaDownloadInfo, MangaIdInfo, MangaStatusInfo, MangaUnreadInfo, -} from '@/modules/manga/Manga.types.ts'; -import { SourceDisplayNameInfo } from '@/modules/source/Source.types.ts'; -import { SearchParam } from '@/modules/core/Core.types.ts'; +} from '@/features/manga/Manga.types.ts'; +import { SourceDisplayNameInfo } from '@/features/source/Source.types.ts'; +import { SearchParam } from '@/features/core/Core.types.ts'; const triStateFilter = ( triState: NullAndUndefined, diff --git a/src/modules/library/screens/Library.tsx b/src/features/library/screens/Library.tsx similarity index 87% rename from src/modules/library/screens/Library.tsx rename to src/features/library/screens/Library.tsx index a608d628..349df832 100644 --- a/src/modules/library/screens/Library.tsx +++ b/src/features/library/screens/Library.tsx @@ -16,20 +16,20 @@ import Button from '@mui/material/Button'; import { Link } from 'react-router-dom'; import Box from '@mui/material/Box'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { TabPanel } from '@/modules/core/components/tabs/TabPanel.tsx'; -import { LibraryToolbarMenu } from '@/modules/library/components/LibraryToolbarMenu.tsx'; -import { LibraryMangaGrid } from '@/modules/library/components/LibraryMangaGrid.tsx'; -import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx'; -import { UpdateChecker } from '@/modules/core/components/UpdateChecker.tsx'; -import { useSelectableCollection } from '@/modules/collection/hooks/useSelectableCollection.ts'; -import { SelectableCollectionSelectMode } from '@/modules/collection/components/SelectableCollectionSelectMode.tsx'; -import { useGetVisibleLibraryMangas } from '@/modules/library/hooks/useGetVisibleLibraryMangas.ts'; -import { SelectionFAB } from '@/modules/collection/components/SelectionFAB.tsx'; -import { MangaActionMenuItems } from '@/modules/manga/components/MangaActionMenuItems.tsx'; -import { TabsMenu } from '@/modules/core/components/tabs/TabsMenu.tsx'; -import { TabsWrapper } from '@/modules/core/components/tabs/TabsWrapper.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { TabPanel } from '@/features/core/components/tabs/TabPanel.tsx'; +import { LibraryToolbarMenu } from '@/features/library/components/LibraryToolbarMenu.tsx'; +import { LibraryMangaGrid } from '@/features/library/components/LibraryMangaGrid.tsx'; +import { AppbarSearch } from '@/features/core/components/AppbarSearch.tsx'; +import { UpdateChecker } from '@/features/core/components/UpdateChecker.tsx'; +import { useSelectableCollection } from '@/features/collection/hooks/useSelectableCollection.ts'; +import { SelectableCollectionSelectMode } from '@/features/collection/components/SelectableCollectionSelectMode.tsx'; +import { useGetVisibleLibraryMangas } from '@/features/library/hooks/useGetVisibleLibraryMangas.ts'; +import { SelectionFAB } from '@/features/collection/components/SelectionFAB.tsx'; +import { MangaActionMenuItems } from '@/features/manga/components/MangaActionMenuItems.tsx'; +import { TabsMenu } from '@/features/core/components/tabs/TabsMenu.tsx'; +import { TabsWrapper } from '@/features/core/components/tabs/TabsWrapper.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetCategoriesLibraryQuery, @@ -40,14 +40,14 @@ import { MangaType, } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_LIBRARY } from '@/lib/graphql/queries/CategoryQuery.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; import { MANGA_CHAPTER_STAT_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { GET_LIBRARY_MANGA_COUNT } from '@/lib/graphql/queries/MangaQuery.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { useAppAction } from '@/modules/navigation-bar/hooks/useAppAction.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { SearchParam } from '@/modules/core/Core.types.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { useAppAction } from '@/features/navigation-bar/hooks/useAppAction.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { SearchParam } from '@/features/core/Core.types.ts'; const TitleWithSizeTag = styled('span')({ display: 'flex', diff --git a/src/modules/library/screens/LibraryDuplicates.tsx b/src/features/library/screens/LibraryDuplicates.tsx similarity index 85% rename from src/modules/library/screens/LibraryDuplicates.tsx rename to src/features/library/screens/LibraryDuplicates.tsx index 5b535f6f..177bce8f 100644 --- a/src/modules/library/screens/LibraryDuplicates.tsx +++ b/src/features/library/screens/LibraryDuplicates.tsx @@ -16,25 +16,25 @@ import MenuItem from '@mui/material/MenuItem'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; -import { GridLayouts } from '@/modules/core/components/GridLayouts.tsx'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; +import { GridLayouts } from '@/features/core/components/GridLayouts.tsx'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { MangaCard } from '@/modules/manga/components/cards/MangaCard.tsx'; -import { StyledGroupedVirtuoso } from '@/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; -import { StyledGroupHeader } from '@/modules/core/components/virtuoso/StyledGroupHeader.tsx'; +import { MangaCard } from '@/features/manga/components/cards/MangaCard.tsx'; +import { StyledGroupedVirtuoso } from '@/features/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; +import { StyledGroupHeader } from '@/features/core/components/virtuoso/StyledGroupHeader.tsx'; import { GetMangasDuplicatesQuery, GetMangasDuplicatesQueryVariables } from '@/lib/graphql/generated/graphql.ts'; import { GET_MANGAS_DUPLICATES } from '@/lib/graphql/queries/MangaQuery.ts'; -import { BaseMangaGrid } from '@/modules/manga/components/BaseMangaGrid.tsx'; -import { IMangaGridProps } from '@/modules/manga/components/MangaGrid.tsx'; -import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { BaseMangaGrid } from '@/features/manga/components/BaseMangaGrid.tsx'; +import { IMangaGridProps } from '@/features/manga/components/MangaGrid.tsx'; +import { StyledGroupItemWrapper } from '@/features/core/components/virtuoso/StyledGroupItemWrapper.tsx'; import { VirtuosoUtil } from '@/lib/virtuoso/Virtuoso.util.tsx'; -import { LibraryDuplicatesWorkerInput, TMangaDuplicate, TMangaDuplicates } from '@/modules/library/Library.types.ts'; -import { GridLayout } from '@/modules/core/Core.types.ts'; +import { LibraryDuplicatesWorkerInput, TMangaDuplicate, TMangaDuplicates } from '@/features/library/Library.types.ts'; +import { GridLayout } from '@/features/core/Core.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitleAndAction } from '@/modules/navigation-bar/hooks/useAppTitleAndAction.ts'; +import { useAppTitleAndAction } from '@/features/navigation-bar/hooks/useAppTitleAndAction.ts'; export const LibraryDuplicates = () => { const { t } = useTranslation(); diff --git a/src/modules/library/screens/LibrarySettings.tsx b/src/features/library/screens/LibrarySettings.tsx similarity index 91% rename from src/modules/library/screens/LibrarySettings.tsx rename to src/features/library/screens/LibrarySettings.tsx index 721f69d4..c555611b 100644 --- a/src/modules/library/screens/LibrarySettings.tsx +++ b/src/features/library/screens/LibrarySettings.tsx @@ -14,18 +14,18 @@ import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import ListSubheader from '@mui/material/ListSubheader'; import { t as translate } from 'i18next'; -import { GlobalUpdateSettings } from '@/modules/settings/components/globalUpdate/GlobalUpdateSettings.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { GlobalUpdateSettings } from '@/features/settings/components/globalUpdate/GlobalUpdateSettings.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { ListItemLink } from '@/modules/core/components/lists/ListItemLink.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { ListItemLink } from '@/features/core/components/lists/ListItemLink.tsx'; import { GetCategoriesSettingsQuery, GetCategoriesSettingsQueryVariables, @@ -34,10 +34,10 @@ import { } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_SETTINGS } from '@/lib/graphql/queries/CategoryQuery.ts'; import { GET_MANGAS_BASE } from '@/lib/graphql/queries/MangaQuery.ts'; -import { MetadataLibrarySettings } from '@/modules/library/Library.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { MetadataLibrarySettings } from '@/features/library/Library.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; const removeNonLibraryMangasFromCategories = async (): Promise => { try { diff --git a/src/modules/library/util/LibraryDuplicates.util.ts b/src/features/library/util/LibraryDuplicates.util.ts similarity index 98% rename from src/modules/library/util/LibraryDuplicates.util.ts rename to src/features/library/util/LibraryDuplicates.util.ts index dbd3af1b..5130cf8c 100644 --- a/src/modules/library/util/LibraryDuplicates.util.ts +++ b/src/features/library/util/LibraryDuplicates.util.ts @@ -8,7 +8,7 @@ import { MangaType } from '@/lib/graphql/generated/graphql.ts'; import { enhancedCleanup } from '@/util/Strings.ts'; -import { TMangaDuplicate, TMangaDuplicateResult, TMangaDuplicates } from '@/modules/library/Library.types.ts'; +import { TMangaDuplicate, TMangaDuplicateResult, TMangaDuplicates } from '@/features/library/Library.types.ts'; export const findDuplicatesByTitle = >( libraryMangas: Manga[], diff --git a/src/modules/library/workers/LibraryDuplicatesDescriptionWorker.ts b/src/features/library/workers/LibraryDuplicatesDescriptionWorker.ts similarity index 72% rename from src/modules/library/workers/LibraryDuplicatesDescriptionWorker.ts rename to src/features/library/workers/LibraryDuplicatesDescriptionWorker.ts index 3d10d4ec..cb00f517 100644 --- a/src/modules/library/workers/LibraryDuplicatesDescriptionWorker.ts +++ b/src/features/library/workers/LibraryDuplicatesDescriptionWorker.ts @@ -6,8 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { findDuplicatesByTitleAndAlternativeTitles } from '@/modules/library/util/LibraryDuplicates.util.ts'; -import { LibraryDuplicatesDescriptionWorkerInput } from '@/modules/library/Library.types.ts'; +import { findDuplicatesByTitleAndAlternativeTitles } from '@/features/library/util/LibraryDuplicates.util.ts'; +import { LibraryDuplicatesDescriptionWorkerInput } from '@/features/library/Library.types.ts'; // eslint-disable-next-line no-restricted-globals self.onmessage = (event: MessageEvent) => { diff --git a/src/modules/library/workers/LibraryDuplicatesWorker.ts b/src/features/library/workers/LibraryDuplicatesWorker.ts similarity index 95% rename from src/modules/library/workers/LibraryDuplicatesWorker.ts rename to src/features/library/workers/LibraryDuplicatesWorker.ts index bd97c40f..4e709f14 100644 --- a/src/modules/library/workers/LibraryDuplicatesWorker.ts +++ b/src/features/library/workers/LibraryDuplicatesWorker.ts @@ -6,13 +6,13 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { findDuplicatesByTitle } from '@/modules/library/util/LibraryDuplicates.util.ts'; +import { findDuplicatesByTitle } from '@/features/library/util/LibraryDuplicates.util.ts'; import { LibraryDuplicatesDescriptionWorkerInput, LibraryDuplicatesWorkerInput, TMangaDuplicate, TMangaDuplicates, -} from '@/modules/library/Library.types.ts'; +} from '@/features/library/Library.types.ts'; import { Queue } from '@/lib/Queue.ts'; import { ControlledPromise } from '@/lib/ControlledPromise.ts'; import { enhancedCleanup } from '@/util/Strings.ts'; diff --git a/src/modules/manga/Manga.constants.ts b/src/features/manga/Manga.constants.ts similarity index 96% rename from src/modules/manga/Manga.constants.ts rename to src/features/manga/Manga.constants.ts index 05dcadfc..d7e8770c 100644 --- a/src/modules/manga/Manga.constants.ts +++ b/src/features/manga/Manga.constants.ts @@ -8,12 +8,12 @@ import { MangaStatus } from '@/lib/graphql/generated/graphql.ts'; import { TranslationKey } from '@/Base.types.ts'; -import { MangaAction, MangaIdInfo, MangaType } from '@/modules/manga/Manga.types.ts'; +import { MangaAction, MangaIdInfo, MangaType } from '@/features/manga/Manga.types.ts'; import { CHAPTER_ACTION_TO_CONFIRMATION_REQUIRED, CHAPTER_ACTION_TO_TRANSLATION, -} from '@/modules/chapter/Chapter.constants.ts'; -import { GqlMetaHolder } from '@/modules/metadata/Metadata.types.ts'; +} from '@/features/chapter/Chapter.constants.ts'; +import { GqlMetaHolder } from '@/features/metadata/Metadata.types.ts'; export const FALLBACK_MANGA: MangaIdInfo & GqlMetaHolder = { id: -1 }; diff --git a/src/modules/manga/Manga.types.ts b/src/features/manga/Manga.types.ts similarity index 89% rename from src/modules/manga/Manga.types.ts rename to src/features/manga/Manga.types.ts index ab04e52f..9606d36e 100644 --- a/src/modules/manga/Manga.types.ts +++ b/src/features/manga/Manga.types.ts @@ -9,8 +9,8 @@ import { LongPressPointerHandlers, LongPressResult } from 'use-long-press/lib/use-long-press.types'; import { PopupState } from 'material-ui-popup-state/hooks'; import type { JSX } from 'react'; -import { SelectableCollectionReturnType } from '@/modules/collection/hooks/useSelectableCollection.ts'; -import { useManageMangaLibraryState } from '@/modules/manga/hooks/useManageMangaLibraryState.tsx'; +import { SelectableCollectionReturnType } from '@/features/collection/hooks/useSelectableCollection.ts'; +import { useManageMangaLibraryState } from '@/features/manga/hooks/useManageMangaLibraryState.tsx'; import { ChapterType, MangaReaderFieldsFragment, @@ -19,9 +19,9 @@ import { SourceType, TrackRecordType, } from '@/lib/graphql/generated/graphql.ts'; -import { SingleModeProps } from '@/modules/manga/components/MangaActionMenuItems.tsx'; -import { GridLayout } from '@/modules/core/Core.types.ts'; -import { ChapterListOptions } from '@/modules/chapter/Chapter.types.ts'; +import { SingleModeProps } from '@/features/manga/components/MangaActionMenuItems.tsx'; +import { GridLayout } from '@/features/core/Core.types.ts'; +import { ChapterListOptions } from '@/features/chapter/Chapter.types.ts'; export type MangaCardMode = 'default' | 'source' | 'migrate.search' | 'migrate.select' | 'duplicate'; diff --git a/src/modules/manga/components/BaseMangaGrid.tsx b/src/features/manga/components/BaseMangaGrid.tsx similarity index 87% rename from src/modules/manga/components/BaseMangaGrid.tsx rename to src/features/manga/components/BaseMangaGrid.tsx index 54fd39bf..053a098f 100644 --- a/src/modules/manga/components/BaseMangaGrid.tsx +++ b/src/features/manga/components/BaseMangaGrid.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { MangaGrid, IMangaGridProps } from '@/modules/manga/components/MangaGrid.tsx'; +import { MangaGrid, IMangaGridProps } from '@/features/manga/components/MangaGrid.tsx'; type TMangaBaseGrid = Omit; diff --git a/src/modules/manga/components/ContinueReadingButton.tsx b/src/features/manga/components/ContinueReadingButton.tsx similarity index 86% rename from src/modules/manga/components/ContinueReadingButton.tsx rename to src/features/manga/components/ContinueReadingButton.tsx index 260f68b8..a5e31178 100644 --- a/src/modules/manga/components/ContinueReadingButton.tsx +++ b/src/features/manga/components/ContinueReadingButton.tsx @@ -10,10 +10,10 @@ import { useTranslation } from 'react-i18next'; import Button from '@mui/material/Button'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import { Link } from 'react-router-dom'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { ChapterReadInfo, ChapterSourceOrderInfo } from '@/modules/chapter/Chapter.types.ts'; +import { ChapterReadInfo, ChapterSourceOrderInfo } from '@/features/chapter/Chapter.types.ts'; export const ContinueReadingButton = ({ showContinueReadingButton, diff --git a/src/modules/manga/components/MangaActionMenuItems.tsx b/src/features/manga/components/MangaActionMenuItems.tsx similarity index 90% rename from src/modules/manga/components/MangaActionMenuItems.tsx rename to src/features/manga/components/MangaActionMenuItems.tsx index 4a76c0b4..0f1cd7ac 100644 --- a/src/modules/manga/components/MangaActionMenuItems.tsx +++ b/src/features/manga/components/MangaActionMenuItems.tsx @@ -19,23 +19,23 @@ import SyncAltIcon from '@mui/icons-material/SyncAlt'; import { Link } from 'react-router-dom'; import SyncIcon from '@mui/icons-material/Sync'; import Dialog from '@mui/material/Dialog'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { SelectableCollectionReturnType } from '@/modules/collection/hooks/useSelectableCollection.ts'; -import { MenuItem } from '@/modules/core/components/menu/MenuItem.tsx'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { SelectableCollectionReturnType } from '@/features/collection/hooks/useSelectableCollection.ts'; +import { MenuItem } from '@/features/core/components/menu/MenuItem.tsx'; import { createGetMenuItemTitle, createIsMenuItemDisabled, createShouldShowMenuItem, -} from '@/modules/core/components/menu/Menu.utils.ts'; +} from '@/features/core/components/menu/Menu.utils.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { TrackManga } from '@/modules/tracker/components/TrackManga.tsx'; -import { useCategorySelect } from '@/modules/category/hooks/useCategorySelect.tsx'; -import { ChaptersDownloadActionMenuItems } from '@/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx'; -import { NestedMenuItem } from '@/modules/core/components/menu/NestedMenuItem.tsx'; +import { TrackManga } from '@/features/tracker/components/TrackManga.tsx'; +import { useCategorySelect } from '@/features/category/hooks/useCategorySelect.tsx'; +import { ChaptersDownloadActionMenuItems } from '@/features/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx'; +import { NestedMenuItem } from '@/features/core/components/menu/NestedMenuItem.tsx'; import { MangaChapterStatFieldsFragment, MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaAction, MangaDownloadInfo, MangaIdInfo, MangaUnreadInfo } from '@/modules/manga/Manga.types.ts'; -import { MANGA_ACTION_TO_TRANSLATION } from '@/modules/manga/Manga.constants.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { MangaAction, MangaDownloadInfo, MangaIdInfo, MangaUnreadInfo } from '@/features/manga/Manga.types.ts'; +import { MANGA_ACTION_TO_TRANSLATION } from '@/features/manga/Manga.constants.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; const ACTION_DISABLES_SELECTION_MODE: MangaAction[] = ['remove_from_library'] as const; diff --git a/src/modules/manga/components/MangaBadges.tsx b/src/features/manga/components/MangaBadges.tsx similarity index 93% rename from src/modules/manga/components/MangaBadges.tsx rename to src/features/manga/components/MangaBadges.tsx index 57174906..b100e307 100644 --- a/src/modules/manga/components/MangaBadges.tsx +++ b/src/features/manga/components/MangaBadges.tsx @@ -10,9 +10,9 @@ import { styled } from '@mui/material/styles'; import { useTranslation } from 'react-i18next'; import Button from '@mui/material/Button'; import Typography from '@mui/material/Typography'; -import { MangaCardMode } from '@/modules/manga/Manga.types.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { MangaCardMode } from '@/features/manga/Manga.types.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; const BadgeContainer = styled('div')(({ theme }) => ({ diff --git a/src/modules/manga/components/MangaGrid.tsx b/src/features/manga/components/MangaGrid.tsx similarity index 92% rename from src/modules/manga/components/MangaGrid.tsx rename to src/features/manga/components/MangaGrid.tsx index d748049c..1b26ed82 100644 --- a/src/modules/manga/components/MangaGrid.tsx +++ b/src/features/manga/components/MangaGrid.tsx @@ -20,17 +20,17 @@ import Grid, { GridTypeMap } from '@mui/material/Grid'; import Box, { BoxProps } from '@mui/material/Box'; import { GridItemProps } from 'react-virtuoso'; import { useTranslation } from 'react-i18next'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { MangaCard } from '@/modules/manga/components/cards/MangaCard.tsx'; -import { SelectableCollectionReturnType } from '@/modules/collection/hooks/useSelectableCollection.ts'; -import { DEFAULT_FULL_FAB_HEIGHT } from '@/modules/core/components/buttons/StyledFab.tsx'; -import { MangaCardProps } from '@/modules/manga/Manga.types.ts'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { MangaCard } from '@/features/manga/components/cards/MangaCard.tsx'; +import { SelectableCollectionReturnType } from '@/features/collection/hooks/useSelectableCollection.ts'; +import { DEFAULT_FULL_FAB_HEIGHT } from '@/features/core/components/buttons/StyledFab.tsx'; +import { MangaCardProps } from '@/features/manga/Manga.types.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { GridLayout } from '@/modules/core/Core.types.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { GridLayout } from '@/features/core/Core.types.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { VirtuosoGridPersisted } from '@/lib/virtuoso/Component/VirtuosoGridPersisted.tsx'; const GridContainer = React.forwardRef(({ children, ...props }, ref) => ( diff --git a/src/modules/manga/components/MangaOptionButton.tsx b/src/features/manga/components/MangaOptionButton.tsx similarity index 95% rename from src/modules/manga/components/MangaOptionButton.tsx rename to src/features/manga/components/MangaOptionButton.tsx index c4027662..96b129a6 100644 --- a/src/modules/manga/components/MangaOptionButton.tsx +++ b/src/features/manga/components/MangaOptionButton.tsx @@ -14,8 +14,8 @@ import IconButton from '@mui/material/IconButton'; import MoreVertIcon from '@mui/icons-material/MoreVert'; import { PopupState } from 'material-ui-popup-state/hooks'; import { bindTrigger } from 'material-ui-popup-state'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { SelectableCollectionReturnType } from '@/modules/collection/hooks/useSelectableCollection.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { SelectableCollectionReturnType } from '@/features/collection/hooks/useSelectableCollection.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; diff --git a/src/modules/manga/components/MangaToolbarMenu.tsx b/src/features/manga/components/MangaToolbarMenu.tsx similarity index 96% rename from src/modules/manga/components/MangaToolbarMenu.tsx rename to src/features/manga/components/MangaToolbarMenu.tsx index cac43282..409d7b0b 100644 --- a/src/modules/manga/components/MangaToolbarMenu.tsx +++ b/src/features/manga/components/MangaToolbarMenu.tsx @@ -20,10 +20,10 @@ import { Link } from 'react-router-dom'; import SyncAltIcon from '@mui/icons-material/SyncAlt'; import { useTheme } from '@mui/material/styles'; import useMediaQuery from '@mui/material/useMediaQuery'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { useCategorySelect } from '@/modules/category/hooks/useCategorySelect.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { useCategorySelect } from '@/features/category/hooks/useCategorySelect.tsx'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; interface IProps { manga: Pick; diff --git a/src/modules/manga/components/ResumeFAB.tsx b/src/features/manga/components/ResumeFAB.tsx similarity index 84% rename from src/modules/manga/components/ResumeFAB.tsx rename to src/features/manga/components/ResumeFAB.tsx index bd83e60e..2ece6802 100644 --- a/src/modules/manga/components/ResumeFAB.tsx +++ b/src/features/manga/components/ResumeFAB.tsx @@ -9,9 +9,9 @@ import { Link } from 'react-router-dom'; import PlayArrow from '@mui/icons-material/PlayArrow'; import { useTranslation } from 'react-i18next'; -import { StyledFab } from '@/modules/core/components/buttons/StyledFab.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { ChapterMangaInfo, ChapterReadInfo, ChapterSourceOrderInfo } from '@/modules/chapter/Chapter.types.ts'; +import { StyledFab } from '@/features/core/components/buttons/StyledFab.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { ChapterMangaInfo, ChapterReadInfo, ChapterSourceOrderInfo } from '@/features/chapter/Chapter.types.ts'; export function ResumeFab({ chapter }: { chapter: ChapterMangaInfo & ChapterSourceOrderInfo & ChapterReadInfo }) { const { t } = useTranslation(); diff --git a/src/modules/manga/components/TrackMangaButton.tsx b/src/features/manga/components/TrackMangaButton.tsx similarity index 87% rename from src/modules/manga/components/TrackMangaButton.tsx rename to src/features/manga/components/TrackMangaButton.tsx index a677af53..93b57617 100644 --- a/src/modules/manga/components/TrackMangaButton.tsx +++ b/src/features/manga/components/TrackMangaButton.tsx @@ -13,14 +13,14 @@ import PopupState, { bindDialog, bindTrigger } from 'material-ui-popup-state'; import Dialog from '@mui/material/Dialog'; import CheckIcon from '@mui/icons-material/Check'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { TrackManga } from '@/modules/tracker/components/TrackManga.tsx'; -import { Trackers } from '@/modules/tracker/services/Trackers.ts'; -import { CustomButton } from '@/modules/core/components/buttons/CustomButton.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { TrackManga } from '@/features/tracker/components/TrackManga.tsx'; +import { Trackers } from '@/features/tracker/services/Trackers.ts'; +import { CustomButton } from '@/features/core/components/buttons/CustomButton.tsx'; import { GetTrackersSettingsQuery, MangaType } from '@/lib/graphql/generated/graphql.ts'; import { GET_TRACKERS_SETTINGS } from '@/lib/graphql/queries/TrackerQuery.ts'; -import { MangaTrackRecordInfo } from '@/modules/manga/Manga.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { MangaTrackRecordInfo } from '@/features/manga/Manga.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; export const TrackMangaButton = ({ manga }: { manga: MangaTrackRecordInfo & Pick }) => { const { t } = useTranslation(); diff --git a/src/modules/manga/components/cards/MangaCard.tsx b/src/features/manga/components/cards/MangaCard.tsx similarity index 85% rename from src/modules/manga/components/cards/MangaCard.tsx rename to src/features/manga/components/cards/MangaCard.tsx index 8c8dd227..249745f2 100644 --- a/src/modules/manga/components/cards/MangaCard.tsx +++ b/src/features/manga/components/cards/MangaCard.tsx @@ -9,18 +9,18 @@ import PopupState, { bindMenu } from 'material-ui-popup-state'; import { memo, useCallback, useMemo, useState } from 'react'; import { useLongPress } from 'use-long-press'; -import { MangaActionMenuItems, SingleModeProps } from '@/modules/manga/components/MangaActionMenuItems.tsx'; -import { Menu } from '@/modules/core/components/menu/Menu.tsx'; -import { MigrateDialog } from '@/modules/migration/components/MigrateDialog.tsx'; -import { useManageMangaLibraryState } from '@/modules/manga/hooks/useManageMangaLibraryState.tsx'; -import { MangaGridCard } from '@/modules/manga/components/cards/MangaGridCard.tsx'; -import { MangaListCard } from '@/modules/manga/components/cards/MangaListCard.tsx'; -import { MangaCardMode, MangaCardProps } from '@/modules/manga/Manga.types.ts'; -import { ContinueReadingButton } from '@/modules/manga/components/ContinueReadingButton.tsx'; -import { MangaBadges } from '@/modules/manga/components/MangaBadges.tsx'; -import { GridLayout } from '@/modules/core/Core.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { MangaActionMenuItems, SingleModeProps } from '@/features/manga/components/MangaActionMenuItems.tsx'; +import { Menu } from '@/features/core/components/menu/Menu.tsx'; +import { MigrateDialog } from '@/features/migration/components/MigrateDialog.tsx'; +import { useManageMangaLibraryState } from '@/features/manga/hooks/useManageMangaLibraryState.tsx'; +import { MangaGridCard } from '@/features/manga/components/cards/MangaGridCard.tsx'; +import { MangaListCard } from '@/features/manga/components/cards/MangaListCard.tsx'; +import { MangaCardMode, MangaCardProps } from '@/features/manga/Manga.types.ts'; +import { ContinueReadingButton } from '@/features/manga/components/ContinueReadingButton.tsx'; +import { MangaBadges } from '@/features/manga/components/MangaBadges.tsx'; +import { GridLayout } from '@/features/core/Core.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; const getMangaLinkTo = ( mode: MangaCardMode, diff --git a/src/modules/manga/components/cards/MangaGridCard.tsx b/src/features/manga/components/cards/MangaGridCard.tsx similarity index 92% rename from src/modules/manga/components/cards/MangaGridCard.tsx rename to src/features/manga/components/cards/MangaGridCard.tsx index 2d729d89..f83da7ad 100644 --- a/src/modules/manga/components/cards/MangaGridCard.tsx +++ b/src/features/manga/components/cards/MangaGridCard.tsx @@ -14,15 +14,15 @@ import CardActionArea from '@mui/material/CardActionArea'; import Stack from '@mui/material/Stack'; import { styled } from '@mui/material/styles'; import { memo, useRef } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; -import { MangaOptionButton } from '@/modules/manga/components/MangaOptionButton.tsx'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { SpecificMangaCardProps } from '@/modules/manga/Manga.types.ts'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; -import { MANGA_COVER_ASPECT_RATIO } from '@/modules/manga/Manga.constants.ts'; -import { GridLayout } from '@/modules/core/Core.types.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { SpinnerImage } from '@/features/core/components/SpinnerImage.tsx'; +import { MangaOptionButton } from '@/features/manga/components/MangaOptionButton.tsx'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { SpecificMangaCardProps } from '@/features/manga/Manga.types.ts'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; +import { MANGA_COVER_ASPECT_RATIO } from '@/features/manga/Manga.constants.ts'; +import { GridLayout } from '@/features/core/Core.types.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; const BottomGradient = styled('div')({ position: 'absolute', diff --git a/src/modules/manga/components/cards/MangaListCard.tsx b/src/features/manga/components/cards/MangaListCard.tsx similarity index 87% rename from src/modules/manga/components/cards/MangaListCard.tsx rename to src/features/manga/components/cards/MangaListCard.tsx index fe4abefc..df5b1fde 100644 --- a/src/modules/manga/components/cards/MangaListCard.tsx +++ b/src/features/manga/components/cards/MangaListCard.tsx @@ -12,14 +12,14 @@ import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; import { Link as RouterLink } from 'react-router-dom'; import { memo, useRef } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; -import { SpecificMangaCardProps } from '@/modules/manga/Manga.types.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { MangaOptionButton } from '@/modules/manga/components/MangaOptionButton.tsx'; -import { ListCardAvatar } from '@/modules/core/components/lists/cards/ListCardAvatar.tsx'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; +import { SpecificMangaCardProps } from '@/features/manga/Manga.types.ts'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { MangaOptionButton } from '@/features/manga/components/MangaOptionButton.tsx'; +import { ListCardAvatar } from '@/features/core/components/lists/cards/ListCardAvatar.tsx'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; export const MangaListCard = memo( ({ diff --git a/src/modules/manga/components/details/DescriptionGenre.tsx b/src/features/manga/components/details/DescriptionGenre.tsx similarity index 93% rename from src/modules/manga/components/details/DescriptionGenre.tsx rename to src/features/manga/components/details/DescriptionGenre.tsx index ff155b0a..7ee3627b 100644 --- a/src/modules/manga/components/details/DescriptionGenre.tsx +++ b/src/features/manga/components/details/DescriptionGenre.tsx @@ -14,15 +14,15 @@ import Stack from '@mui/material/Stack'; import IconButton from '@mui/material/IconButton'; import ExpandLessIcon from '@mui/icons-material/ExpandLess'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; import { MangaDescriptionInfo, MangaGenreInfo, MangaLocationState, MangaSourceIdInfo, -} from '@/modules/manga/Manga.types.ts'; -import { SearchLink } from '@/modules/manga/components/details/SearchLink.tsx'; +} from '@/features/manga/Manga.types.ts'; +import { SearchLink } from '@/features/manga/components/details/SearchLink.tsx'; const OPEN_CLOSE_BUTTON_HEIGHT = '35px'; const DESCRIPTION_COLLAPSED_SIZE = 75; diff --git a/src/modules/manga/components/details/MangaDetails.tsx b/src/features/manga/components/details/MangaDetails.tsx similarity index 88% rename from src/modules/manga/components/details/MangaDetails.tsx rename to src/features/manga/components/details/MangaDetails.tsx index ef58be74..6bbf8cb7 100644 --- a/src/modules/manga/components/details/MangaDetails.tsx +++ b/src/features/manga/components/details/MangaDetails.tsx @@ -18,18 +18,18 @@ import Stack from '@mui/material/Stack'; import IconButton from '@mui/material/IconButton'; import ContentCopyIcon from '@mui/icons-material/ContentCopy'; import ButtonGroup from '@mui/material/ButtonGroup'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; -import { CustomButton } from '@/modules/core/components/buttons/CustomButton.tsx'; -import { TrackMangaButton } from '@/modules/manga/components/TrackMangaButton.tsx'; -import { useManageMangaLibraryState } from '@/modules/manga/hooks/useManageMangaLibraryState.tsx'; -import { Metadata as BaseMetadata } from '@/modules/core/components/texts/Metadata.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { SpinnerImage } from '@/features/core/components/SpinnerImage.tsx'; +import { CustomButton } from '@/features/core/components/buttons/CustomButton.tsx'; +import { TrackMangaButton } from '@/features/manga/components/TrackMangaButton.tsx'; +import { useManageMangaLibraryState } from '@/features/manga/hooks/useManageMangaLibraryState.tsx'; +import { Metadata as BaseMetadata } from '@/features/core/components/texts/Metadata.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { MangaType, SourceType } from '@/lib/graphql/generated/graphql.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { MANGA_STATUS_TO_TRANSLATION } from '@/modules/manga/Manga.constants.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { MANGA_STATUS_TO_TRANSLATION } from '@/features/manga/Manga.constants.ts'; import { MangaArtistInfo, MangaAuthorInfo, @@ -43,14 +43,14 @@ import { MangaThumbnailInfo, MangaTitleInfo, MangaTrackRecordInfo, -} from '@/modules/manga/Manga.types.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { CustomButtonIcon } from '@/modules/core/components/buttons/CustomButtonIcon.tsx'; -import { Sources } from '@/modules/source/services/Sources.ts'; -import { SourceIdInfo } from '@/modules/source/Source.types.ts'; -import { Thumbnail } from '@/modules/manga/components/details/Thumbnail.tsx'; -import { DescriptionGenre } from '@/modules/manga/components/details/DescriptionGenre.tsx'; -import { SearchLink } from '@/modules/manga/components/details/SearchLink.tsx'; +} from '@/features/manga/Manga.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { CustomButtonIcon } from '@/features/core/components/buttons/CustomButtonIcon.tsx'; +import { Sources } from '@/features/source/services/Sources.ts'; +import { SourceIdInfo } from '@/features/source/Source.types.ts'; +import { Thumbnail } from '@/features/manga/components/details/Thumbnail.tsx'; +import { DescriptionGenre } from '@/features/manga/components/details/DescriptionGenre.tsx'; +import { SearchLink } from '@/features/manga/components/details/SearchLink.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { IconBrowser } from '@/assets/icons/IconBrowser.tsx'; import { IconWebView } from '@/assets/icons/IconWebView.tsx'; diff --git a/src/modules/manga/components/details/SearchLink.tsx b/src/features/manga/components/details/SearchLink.tsx similarity index 85% rename from src/modules/manga/components/details/SearchLink.tsx rename to src/features/manga/components/details/SearchLink.tsx index ed9b9bb5..2dcc0c9a 100644 --- a/src/modules/manga/components/details/SearchLink.tsx +++ b/src/features/manga/components/details/SearchLink.tsx @@ -9,9 +9,9 @@ import { ReactNode } from 'react'; import Link from '@mui/material/Link'; import { Link as RouterLink } from 'react-router-dom'; -import { MangaLocationState } from '@/modules/manga/Manga.types.ts'; -import { SourceIdInfo } from '@/modules/source/Source.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { MangaLocationState } from '@/features/manga/Manga.types.ts'; +import { SourceIdInfo } from '@/features/source/Source.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; export const SearchLink = ({ query, diff --git a/src/modules/manga/components/details/Thumbnail.tsx b/src/features/manga/components/details/Thumbnail.tsx similarity index 92% rename from src/modules/manga/components/details/Thumbnail.tsx rename to src/features/manga/components/details/Thumbnail.tsx index 5ad75218..815a13bf 100644 --- a/src/modules/manga/components/details/Thumbnail.tsx +++ b/src/features/manga/components/details/Thumbnail.tsx @@ -14,11 +14,11 @@ import Modal from '@mui/material/Modal'; import { bindPopover, bindTrigger, usePopupState } from 'material-ui-popup-state/hooks'; import { Vibrant } from 'node-vibrant/browser'; import { FastAverageColor } from 'fast-average-color'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; -import { MANGA_COVER_ASPECT_RATIO } from '@/modules/manga/Manga.constants.ts'; -import { MangaThumbnailInfo } from '@/modules/manga/Manga.types.ts'; -import { TAppThemeContext, useAppThemeContext } from '@/modules/theme/contexts/AppThemeContext.tsx'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { SpinnerImage } from '@/features/core/components/SpinnerImage.tsx'; +import { MANGA_COVER_ASPECT_RATIO } from '@/features/manga/Manga.constants.ts'; +import { MangaThumbnailInfo } from '@/features/manga/Manga.types.ts'; +import { TAppThemeContext, useAppThemeContext } from '@/features/theme/contexts/AppThemeContext.tsx'; export const Thumbnail = ({ manga, diff --git a/src/modules/manga/hooks/useManageMangaLibraryState.tsx b/src/features/manga/hooks/useManageMangaLibraryState.tsx similarity index 93% rename from src/modules/manga/hooks/useManageMangaLibraryState.tsx rename to src/features/manga/hooks/useManageMangaLibraryState.tsx index 395e4f88..8d20d75b 100644 --- a/src/modules/manga/hooks/useManageMangaLibraryState.tsx +++ b/src/features/manga/hooks/useManageMangaLibraryState.tsx @@ -10,17 +10,17 @@ import { useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import gql from 'graphql-tag'; -import { useCategorySelect } from '@/modules/category/hooks/useCategorySelect.tsx'; +import { useCategorySelect } from '@/features/category/hooks/useCategorySelect.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { getMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { Categories } from '@/modules/category/services/Categories.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { getMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { Categories } from '@/features/category/services/Categories.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { awaitConfirmation } from '@/modules/core/utils/AwaitableDialog.tsx'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { awaitConfirmation } from '@/features/core/utils/AwaitableDialog.tsx'; import { GetCategoriesBaseQuery, GetCategoriesBaseQueryVariables, MangaType } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_BASE } from '@/lib/graphql/queries/CategoryQuery.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const useManageMangaLibraryState = ( diff --git a/src/modules/manga/hooks/useRefreshManga.ts b/src/features/manga/hooks/useRefreshManga.ts similarity index 100% rename from src/modules/manga/hooks/useRefreshManga.ts rename to src/features/manga/hooks/useRefreshManga.ts diff --git a/src/modules/manga/screens/Manga.tsx b/src/features/manga/screens/Manga.tsx similarity index 82% rename from src/modules/manga/screens/Manga.tsx rename to src/features/manga/screens/Manga.tsx index 23551520..550c8089 100644 --- a/src/modules/manga/screens/Manga.tsx +++ b/src/features/manga/screens/Manga.tsx @@ -15,19 +15,19 @@ import React, { useEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { useLocation, useParams } from 'react-router-dom'; import { isNetworkRequestInFlight } from '@apollo/client/core/networkStatus'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { ChapterList } from '@/modules/chapter/components/ChapterList.tsx'; -import { useRefreshManga } from '@/modules/manga/hooks/useRefreshManga.ts'; -import { MangaDetails } from '@/modules/manga/components/details/MangaDetails.tsx'; -import { MangaToolbarMenu } from '@/modules/manga/components/MangaToolbarMenu.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; +import { ChapterList } from '@/features/chapter/components/ChapterList.tsx'; +import { useRefreshManga } from '@/features/manga/hooks/useRefreshManga.ts'; +import { MangaDetails } from '@/features/manga/components/details/MangaDetails.tsx'; +import { MangaToolbarMenu } from '@/features/manga/components/MangaToolbarMenu.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; import { GetMangaScreenQuery } from '@/lib/graphql/generated/graphql.ts'; import { GET_MANGA_SCREEN } from '@/lib/graphql/queries/MangaQuery.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitleAndAction } from '@/modules/navigation-bar/hooks/useAppTitleAndAction.ts'; -import { MangaLocationState } from '@/modules/manga/Manga.types.ts'; +import { useAppTitleAndAction } from '@/features/navigation-bar/hooks/useAppTitleAndAction.ts'; +import { MangaLocationState } from '@/features/manga/Manga.types.ts'; export const Manga: React.FC = () => { const { t } = useTranslation(); diff --git a/src/modules/manga/services/MangaMetadata.ts b/src/features/manga/services/MangaMetadata.ts similarity index 86% rename from src/modules/manga/services/MangaMetadata.ts rename to src/features/manga/services/MangaMetadata.ts index dc9c1247..9b7a5e77 100644 --- a/src/modules/manga/services/MangaMetadata.ts +++ b/src/features/manga/services/MangaMetadata.ts @@ -7,17 +7,17 @@ */ import { useEffect, useMemo } from 'react'; -import { DEFAULT_CHAPTER_OPTIONS } from '@/modules/chapter/Chapter.constants.ts'; -import { getMetadataFrom } from '@/modules/metadata/services/MetadataReader.ts'; -import { MangaIdInfo, MangaMetadata, MangaMetadataKeys } from '@/modules/manga/Manga.types.ts'; +import { DEFAULT_CHAPTER_OPTIONS } from '@/features/chapter/Chapter.constants.ts'; +import { getMetadataFrom } from '@/features/metadata/services/MetadataReader.ts'; +import { MangaIdInfo, MangaMetadata, MangaMetadataKeys } from '@/features/manga/Manga.types.ts'; import { AllowedMetadataValueTypes, GqlMetaHolder, Metadata, MetadataHolder, -} from '@/modules/metadata/Metadata.types.ts'; -import { convertFromGqlMeta } from '@/modules/metadata/services/MetadataConverter.ts'; -import { requestUpdateMangaMetadata } from '@/modules/metadata/services/MetadataUpdater.ts'; +} from '@/features/metadata/Metadata.types.ts'; +import { convertFromGqlMeta } from '@/features/metadata/services/MetadataConverter.ts'; +import { requestUpdateMangaMetadata } from '@/features/metadata/services/MetadataUpdater.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; const DEFAULT_MANGA_METADATA: MangaMetadata = { diff --git a/src/modules/manga/services/Mangas.ts b/src/features/manga/services/Mangas.ts similarity index 98% rename from src/modules/manga/services/Mangas.ts rename to src/features/manga/services/Mangas.ts index 0aa849e2..6068eb77 100644 --- a/src/modules/manga/services/Mangas.ts +++ b/src/features/manga/services/Mangas.ts @@ -19,12 +19,12 @@ import { MangaBaseFieldsFragment, UpdateMangaCategoriesPatchInput, } from '@/lib/graphql/generated/graphql.ts'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { getMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { getMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { GET_MANGAS_BASE } from '@/lib/graphql/queries/MangaQuery.ts'; import { MANGA_BASE_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts'; -import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts'; +import { MetadataMigrationSettings } from '@/features/migration/Migration.types.ts'; import { MangaAction, MangaArtistInfo, @@ -41,15 +41,15 @@ import { MangaType, MangaUnreadInfo, MigrateMode, -} from '@/modules/manga/Manga.types.ts'; +} from '@/features/manga/Manga.types.ts'; import { MANGA_ACTION_TO_CONFIRMATION_REQUIRED, MANGA_ACTION_TO_TRANSLATION, MANGA_TAGS_BY_MANGA_TYPE, SOURCES_BY_MANGA_TYPE, -} from '@/modules/manga/Manga.constants.ts'; +} from '@/features/manga/Manga.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { awaitConfirmation } from '@/modules/core/utils/AwaitableDialog.tsx'; +import { awaitConfirmation } from '@/features/core/utils/AwaitableDialog.tsx'; import { assertIsDefined } from '@/Asserts.ts'; type MangaToMigrate = NonNullable; diff --git a/src/modules/metadata/Metadata.constants.ts b/src/features/metadata/Metadata.constants.ts similarity index 96% rename from src/modules/metadata/Metadata.constants.ts rename to src/features/metadata/Metadata.constants.ts index b2239120..75f14b6e 100644 --- a/src/modules/metadata/Metadata.constants.ts +++ b/src/features/metadata/Metadata.constants.ts @@ -8,14 +8,14 @@ // eslint-disable-next-line import/no-extraneous-dependencies,no-restricted-imports import deepmerge from '@mui/utils/deepmerge'; -import { AppMetadataKeys, IMetadataMigration } from '@/modules/metadata/Metadata.types.ts'; +import { AppMetadataKeys, IMetadataMigration } from '@/features/metadata/Metadata.types.ts'; import { IReaderSettings, ProgressBarPosition, ReaderCustomFilter, ReaderPageScaleMode, ReadingMode, -} from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/types/Reader.types.ts'; import { AUTO_SCROLL_SPEED, CUSTOM_FILTER, @@ -24,16 +24,16 @@ import { PAGE_GAP, PROGRESS_BAR_SIZE, SCROLL_AMOUNT, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; import { coerceIn, jsonSaveParse } from '@/lib/HelperFunctions.ts'; -import { DOWNLOAD_AHEAD } from '@/modules/downloads/Downloads.constants.ts'; -import { MANGA_GRID_WIDTH } from '@/modules/settings/Settings.constants.ts'; +import { DOWNLOAD_AHEAD } from '@/features/downloads/Downloads.constants.ts'; +import { MANGA_GRID_WIDTH } from '@/features/settings/Settings.constants.ts'; import { NullAndUndefined } from '@/Base.types.ts'; -import { SortSettings } from '@/modules/migration/Migration.types.ts'; -import { ISourceMetadata } from '@/modules/source/Source.types.ts'; -import { LibraryOptions } from '@/modules/library/Library.types.ts'; -import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts'; -import { TapZoneInvertMode } from '@/modules/reader/types/TapZoneLayout.types.ts'; +import { SortSettings } from '@/features/migration/Migration.types.ts'; +import { ISourceMetadata } from '@/features/source/Source.types.ts'; +import { LibraryOptions } from '@/features/library/Library.types.ts'; +import { MetadataThemeSettings } from '@/features/theme/AppTheme.types.ts'; +import { TapZoneInvertMode } from '@/features/reader/types/TapZoneLayout.types.ts'; export const APP_METADATA_KEY_PREFIX = 'webUI'; diff --git a/src/modules/metadata/Metadata.types.ts b/src/features/metadata/Metadata.types.ts similarity index 83% rename from src/modules/metadata/Metadata.types.ts rename to src/features/metadata/Metadata.types.ts index 5330bb73..682f64bb 100644 --- a/src/modules/metadata/Metadata.types.ts +++ b/src/features/metadata/Metadata.types.ts @@ -6,12 +6,12 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { MetadataServerSettingKeys, SearchMetadataKeys } from '@/modules/settings/Settings.types.ts'; -import { MangaMetadataKeys } from '@/modules/manga/Manga.types.ts'; -import { SourceMetadataKeys } from '@/modules/source/Source.types.ts'; -import { CategoryMetadataKeys } from '@/modules/category/Category.types.ts'; +import { MetadataServerSettingKeys, SearchMetadataKeys } from '@/features/settings/Settings.types.ts'; +import { MangaMetadataKeys } from '@/features/manga/Manga.types.ts'; +import { SourceMetadataKeys } from '@/features/source/Source.types.ts'; +import { CategoryMetadataKeys } from '@/features/category/Category.types.ts'; import { MetaType } from '@/lib/graphql/generated/graphql.ts'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; export interface IMetadataMigration { appKeyPrefix?: { oldPrefix: string; newPrefix: string }; diff --git a/src/modules/metadata/Metadata.utils.ts b/src/features/metadata/Metadata.utils.ts similarity index 89% rename from src/modules/metadata/Metadata.utils.ts rename to src/features/metadata/Metadata.utils.ts index bf0200f1..746b2645 100644 --- a/src/modules/metadata/Metadata.utils.ts +++ b/src/features/metadata/Metadata.utils.ts @@ -6,9 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { APP_METADATA_KEY_PREFIX, GLOBAL_METADATA_KEYS } from '@/modules/metadata/Metadata.constants.ts'; -import { AppMetadataKeys, Metadata } from '@/modules/metadata/Metadata.types.ts'; -import { getActiveDevice } from '@/modules/device/services/Device.ts'; +import { APP_METADATA_KEY_PREFIX, GLOBAL_METADATA_KEYS } from '@/features/metadata/Metadata.constants.ts'; +import { AppMetadataKeys, Metadata } from '@/features/metadata/Metadata.types.ts'; +import { getActiveDevice } from '@/features/device/services/Device.ts'; export const extractOriginalKey = (key: string) => key.split('_').slice(-1)[0]; diff --git a/src/modules/metadata/services/MetadataApolloCacheHandler.ts b/src/features/metadata/services/MetadataApolloCacheHandler.ts similarity index 100% rename from src/modules/metadata/services/MetadataApolloCacheHandler.ts rename to src/features/metadata/services/MetadataApolloCacheHandler.ts diff --git a/src/modules/metadata/services/MetadataConverter.ts b/src/features/metadata/services/MetadataConverter.ts similarity index 91% rename from src/modules/metadata/services/MetadataConverter.ts rename to src/features/metadata/services/MetadataConverter.ts index 03bad29d..a9f7cbdc 100644 --- a/src/modules/metadata/services/MetadataConverter.ts +++ b/src/features/metadata/services/MetadataConverter.ts @@ -7,8 +7,8 @@ */ import { MetaType } from '@/lib/graphql/generated/graphql.ts'; -import { AllowedMetadataValueTypes, AppMetadataKeys, Metadata } from '@/modules/metadata/Metadata.types.ts'; -import { APP_METADATA } from '@/modules/metadata/Metadata.constants.ts'; +import { AllowedMetadataValueTypes, AppMetadataKeys, Metadata } from '@/features/metadata/Metadata.types.ts'; +import { APP_METADATA } from '@/features/metadata/Metadata.constants.ts'; export const convertValueFromMetadata = ( key: string, diff --git a/src/modules/metadata/services/MetadataMigrations.ts b/src/features/metadata/services/MetadataMigrations.ts similarity index 96% rename from src/modules/metadata/services/MetadataMigrations.ts rename to src/features/metadata/services/MetadataMigrations.ts index 5f215f9c..90059d31 100644 --- a/src/modules/metadata/services/MetadataMigrations.ts +++ b/src/features/metadata/services/MetadataMigrations.ts @@ -11,7 +11,7 @@ import { APP_METADATA_KEY_PREFIX, METADATA_MIGRATIONS, VALID_APP_METADATA_KEYS, -} from '@/modules/metadata/Metadata.constants.ts'; +} from '@/features/metadata/Metadata.constants.ts'; import { AppMetadataKeys, IMetadataMigration, @@ -19,14 +19,14 @@ import { MetadataHolder, MetadataHolderType, MetadataKeyValuePair, -} from '@/modules/metadata/Metadata.types.ts'; -import { extractOriginalKey, getMetadataKey } from '@/modules/metadata/Metadata.utils.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; -import { CategoryIdInfo } from '@/modules/category/Category.types.ts'; +} from '@/features/metadata/Metadata.types.ts'; +import { extractOriginalKey, getMetadataKey } from '@/features/metadata/Metadata.utils.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; +import { CategoryIdInfo } from '@/features/category/Category.types.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { getMetadataDeleteFunction, getMetadataUpdateFunction } from '@/modules/metadata/services/MetadataUpdater.ts'; -import { SourceIdInfo } from '@/modules/source/Source.types.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +import { getMetadataDeleteFunction, getMetadataUpdateFunction } from '@/features/metadata/services/MetadataUpdater.ts'; +import { SourceIdInfo } from '@/features/source/Source.types.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; const getAppKeyPrefixForMigration = (migrationId: number): string => { const appKeyPrefix = METADATA_MIGRATIONS.slice(0, migrationId) diff --git a/src/modules/metadata/services/MetadataReader.ts b/src/features/metadata/services/MetadataReader.ts similarity index 83% rename from src/modules/metadata/services/MetadataReader.ts rename to src/features/metadata/services/MetadataReader.ts index 86d60ce2..9b3154d7 100644 --- a/src/modules/metadata/services/MetadataReader.ts +++ b/src/features/metadata/services/MetadataReader.ts @@ -7,22 +7,22 @@ */ import { useEffect } from 'react'; -import { convertValueFromMetadata } from '@/modules/metadata/services/MetadataConverter.ts'; +import { convertValueFromMetadata } from '@/features/metadata/services/MetadataConverter.ts'; import { AllowedMetadataValueTypes, AppMetadataKeys, Metadata, MetadataHolder, MetadataHolderType, -} from '@/modules/metadata/Metadata.types.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; +} from '@/features/metadata/Metadata.types.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; -import { CategoryIdInfo } from '@/modules/category/Category.types.ts'; -import { doesMetadataKeyExistIn, getMetadataKey } from '@/modules/metadata/Metadata.utils.ts'; -import { applyMetadataMigrations } from '@/modules/metadata/services/MetadataMigrations.ts'; -import { SourceIdInfo } from '@/modules/source/Source.types.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; -import { APP_METADATA } from '@/modules/metadata/Metadata.constants.ts'; +import { CategoryIdInfo } from '@/features/category/Category.types.ts'; +import { doesMetadataKeyExistIn, getMetadataKey } from '@/features/metadata/Metadata.utils.ts'; +import { applyMetadataMigrations } from '@/features/metadata/services/MetadataMigrations.ts'; +import { SourceIdInfo } from '@/features/source/Source.types.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; +import { APP_METADATA } from '@/features/metadata/Metadata.constants.ts'; const getMetadataValueFrom = ( metadata: Metadata | undefined, diff --git a/src/modules/metadata/services/MetadataUpdater.ts b/src/features/metadata/services/MetadataUpdater.ts similarity index 95% rename from src/modules/metadata/services/MetadataUpdater.ts rename to src/features/metadata/services/MetadataUpdater.ts index 00b3d00e..d9df4d66 100644 --- a/src/modules/metadata/services/MetadataUpdater.ts +++ b/src/features/metadata/services/MetadataUpdater.ts @@ -7,7 +7,7 @@ */ import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { CategoryIdInfo } from '@/modules/category/Category.types.ts'; +import { CategoryIdInfo } from '@/features/category/Category.types.ts'; import { AllowedMetadataValueTypes, AppMetadataKeys, @@ -15,12 +15,12 @@ import { MetadataHolder, MetadataHolderType, MetadataKeyValuePair, -} from '@/modules/metadata/Metadata.types.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; -import { getMetadataKey } from '@/modules/metadata/Metadata.utils.ts'; -import { convertToGqlMeta } from '@/modules/metadata/services/MetadataConverter.ts'; -import { SourceIdInfo } from '@/modules/source/Source.types.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +} from '@/features/metadata/Metadata.types.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; +import { getMetadataKey } from '@/features/metadata/Metadata.utils.ts'; +import { convertToGqlMeta } from '@/features/metadata/services/MetadataConverter.ts'; +import { SourceIdInfo } from '@/features/source/Source.types.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; const requestUpdateMetadataValue = async ( metadataHolder: GqlMetaHolder, diff --git a/src/modules/migration/Migration.constants.ts b/src/features/migration/Migration.constants.ts similarity index 91% rename from src/modules/migration/Migration.constants.ts rename to src/features/migration/Migration.constants.ts index 9016413a..5cef9ed9 100644 --- a/src/modules/migration/Migration.constants.ts +++ b/src/features/migration/Migration.constants.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { SortBy, SortOrder } from '@/modules/migration/Migration.types.ts'; +import { SortBy, SortOrder } from '@/features/migration/Migration.types.ts'; import { TranslationKey } from '@/Base.types.ts'; diff --git a/src/modules/migration/Migration.types.ts b/src/features/migration/Migration.types.ts similarity index 100% rename from src/modules/migration/Migration.types.ts rename to src/features/migration/Migration.types.ts diff --git a/src/modules/migration/components/MigrateDialog.tsx b/src/features/migration/components/MigrateDialog.tsx similarity index 91% rename from src/modules/migration/components/MigrateDialog.tsx rename to src/features/migration/components/MigrateDialog.tsx index 791e0099..e0de04bd 100644 --- a/src/modules/migration/components/MigrateDialog.tsx +++ b/src/features/migration/components/MigrateDialog.tsx @@ -16,17 +16,17 @@ import Stack from '@mui/material/Stack'; import { Link, useNavigate, useParams } from 'react-router-dom'; import { useState } from 'react'; import FormGroup from '@mui/material/FormGroup'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts'; -import { MigrateMode } from '@/modules/manga/Manga.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { MetadataMigrationSettings } from '@/features/migration/Migration.types.ts'; +import { MigrateMode } from '@/features/manga/Manga.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; export const MigrateDialog = ({ mangaIdToMigrateTo, onClose }: { mangaIdToMigrateTo: number; onClose: () => void }) => { const { t } = useTranslation(); diff --git a/src/modules/migration/components/MigrationCard.tsx b/src/features/migration/components/MigrationCard.tsx similarity index 87% rename from src/modules/migration/components/MigrationCard.tsx rename to src/features/migration/components/MigrationCard.tsx index d9844249..5f49c2e5 100644 --- a/src/modules/migration/components/MigrationCard.tsx +++ b/src/features/migration/components/MigrationCard.tsx @@ -15,10 +15,10 @@ import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { GetMigratableSourcesQuery } from '@/lib/graphql/generated/graphql.ts'; -import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { ListCardAvatar } from '@/modules/core/components/lists/cards/ListCardAvatar.tsx'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; +import { translateExtensionLanguage } from '@/features/extension/Extensions.utils.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { ListCardAvatar } from '@/features/core/components/lists/cards/ListCardAvatar.tsx'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; export type TMigratableSource = NonNullable & { mangaCount: number; diff --git a/src/modules/migration/screens/Migrate.tsx b/src/features/migration/screens/Migrate.tsx similarity index 86% rename from src/modules/migration/screens/Migrate.tsx rename to src/features/migration/screens/Migrate.tsx index aad3c73c..74028bf1 100644 --- a/src/modules/migration/screens/Migrate.tsx +++ b/src/features/migration/screens/Migrate.tsx @@ -10,19 +10,19 @@ import { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { TMigratableSource } from '@/modules/migration/components/MigrationCard.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { GridLayouts } from '@/modules/core/components/GridLayouts.tsx'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { TMigratableSource } from '@/features/migration/components/MigrationCard.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { GridLayouts } from '@/features/core/components/GridLayouts.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetSourceMigratableQuery, GetSourceMigratableQueryVariables } from '@/lib/graphql/generated/graphql.ts'; import { GET_SOURCE_MIGRATABLE } from '@/lib/graphql/queries/SourceQuery.ts'; import { SOURCE_BASE_FIELDS } from '@/lib/graphql/fragments/SourceFragments.ts'; -import { BaseMangaGrid } from '@/modules/manga/components/BaseMangaGrid.tsx'; -import { GridLayout } from '@/modules/core/Core.types.ts'; +import { BaseMangaGrid } from '@/features/manga/components/BaseMangaGrid.tsx'; +import { GridLayout } from '@/features/core/Core.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitleAndAction } from '@/modules/navigation-bar/hooks/useAppTitleAndAction.ts'; +import { useAppTitleAndAction } from '@/features/navigation-bar/hooks/useAppTitleAndAction.ts'; export const Migrate = () => { const { t } = useTranslation(); diff --git a/src/modules/migration/screens/Migration.tsx b/src/features/migration/screens/Migration.tsx similarity index 87% rename from src/modules/migration/screens/Migration.tsx rename to src/features/migration/screens/Migration.tsx index 94565b87..933b7cf2 100644 --- a/src/modules/migration/screens/Migration.tsx +++ b/src/features/migration/screens/Migration.tsx @@ -15,21 +15,21 @@ import SortByAlphaIcon from '@mui/icons-material/SortByAlpha'; import TagIcon from '@mui/icons-material/Tag'; import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'; import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { MigrationCard, TMigratableSource } from '@/modules/migration/components/MigrationCard.tsx'; -import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { MigrationCard, TMigratableSource } from '@/features/migration/components/MigrationCard.tsx'; +import { StyledGroupItemWrapper } from '@/features/core/components/virtuoso/StyledGroupItemWrapper.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { SortBy, SortOrder, SortSettings, TMigratableSourcesResult } from '@/modules/migration/Migration.types.ts'; -import { sortByToTranslationKey, sortOrderToTranslationKey } from '@/modules/migration/Migration.constants.ts'; +import { SortBy, SortOrder, SortSettings, TMigratableSourcesResult } from '@/features/migration/Migration.types.ts'; +import { sortByToTranslationKey, sortOrderToTranslationKey } from '@/features/migration/Migration.constants.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; const getMigratableSources = ( diff --git a/src/modules/navigation-bar/NavigationBar.constants.ts b/src/features/navigation-bar/NavigationBar.constants.ts similarity index 96% rename from src/modules/navigation-bar/NavigationBar.constants.ts rename to src/features/navigation-bar/NavigationBar.constants.ts index d9bf6f6c..4171a44d 100644 --- a/src/modules/navigation-bar/NavigationBar.constants.ts +++ b/src/features/navigation-bar/NavigationBar.constants.ts @@ -20,8 +20,8 @@ import MoreHorizIcon from '@mui/icons-material/MoreHoriz'; import SettingsIcon from '@mui/icons-material/Settings'; import InfoIcon from '@mui/icons-material/Info'; import { useTranslation } from 'react-i18next'; -import { NavbarItem, NavBarItemMoreGroup } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { NavbarItem, NavBarItemMoreGroup } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { DownloaderState } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/modules/navigation-bar/NavigationBar.types.ts b/src/features/navigation-bar/NavigationBar.types.ts similarity index 96% rename from src/modules/navigation-bar/NavigationBar.types.ts rename to src/features/navigation-bar/NavigationBar.types.ts index 6859884b..da41299c 100644 --- a/src/modules/navigation-bar/NavigationBar.types.ts +++ b/src/features/navigation-bar/NavigationBar.types.ts @@ -10,7 +10,7 @@ import { OverridableComponent } from '@mui/material/OverridableComponent'; import { SvgIconTypeMap } from '@mui/material/SvgIcon'; import { ReactNode } from 'react'; import { TranslationKey } from '@/Base.types.ts'; -import { StaticAppRoute } from '@/modules/core/AppRoute.constants.ts'; +import { StaticAppRoute } from '@/features/core/AppRoute.constants.ts'; export interface INavbarOverride { status: boolean; diff --git a/src/modules/navigation-bar/NavigationBar.util.ts b/src/features/navigation-bar/NavigationBar.util.ts similarity index 87% rename from src/modules/navigation-bar/NavigationBar.util.ts rename to src/features/navigation-bar/NavigationBar.util.ts index 876db942..4c383953 100644 --- a/src/modules/navigation-bar/NavigationBar.util.ts +++ b/src/features/navigation-bar/NavigationBar.util.ts @@ -6,9 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { NavbarItem } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { MetadataHistorySettings } from '@/modules/history/History.types.ts'; -import { AppRoutes, StaticAppRoute } from '@/modules/core/AppRoute.constants.ts'; +import { NavbarItem } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { MetadataHistorySettings } from '@/features/history/History.types.ts'; +import { AppRoutes, StaticAppRoute } from '@/features/core/AppRoute.constants.ts'; type NavBarItemDeviceFilterKey = `hide${Capitalize}`; diff --git a/src/modules/navigation-bar/components/DefaultNavBar.tsx b/src/features/navigation-bar/components/DefaultNavBar.tsx similarity index 87% rename from src/modules/navigation-bar/components/DefaultNavBar.tsx rename to src/features/navigation-bar/components/DefaultNavBar.tsx index da7ff7c7..700da095 100644 --- a/src/modules/navigation-bar/components/DefaultNavBar.tsx +++ b/src/features/navigation-bar/components/DefaultNavBar.tsx @@ -17,16 +17,16 @@ import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; import MenuIcon from '@mui/icons-material/Menu'; import Stack from '@mui/material/Stack'; import { useTheme } from '@mui/material/styles'; -import { useBackButton } from '@/modules/core/hooks/useBackButton.ts'; -import { useGetOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { DesktopSideBar } from '@/modules/navigation-bar/components/DesktopSideBar.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { MobileBottomBar } from '@/modules/navigation-bar/components/MobileBottomBar.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { NAVIGATION_BAR_ITEMS } from '@/modules/navigation-bar/NavigationBar.constants.ts'; -import { NavigationBarUtil } from '@/modules/navigation-bar/NavigationBar.util.ts'; +import { useBackButton } from '@/features/core/hooks/useBackButton.ts'; +import { useGetOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { DesktopSideBar } from '@/features/navigation-bar/components/DesktopSideBar.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { MobileBottomBar } from '@/features/navigation-bar/components/MobileBottomBar.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { NAVIGATION_BAR_ITEMS } from '@/features/navigation-bar/NavigationBar.constants.ts'; +import { NavigationBarUtil } from '@/features/navigation-bar/NavigationBar.util.ts'; export function DefaultNavBar() { const { title, action, override, isCollapsed, setIsCollapsed, setAppBarHeight, navBarWidth, setNavBarWidth } = diff --git a/src/modules/navigation-bar/components/DesktopSideBar.tsx b/src/features/navigation-bar/components/DesktopSideBar.tsx similarity index 91% rename from src/modules/navigation-bar/components/DesktopSideBar.tsx rename to src/features/navigation-bar/components/DesktopSideBar.tsx index 10334d62..5cf67d6c 100644 --- a/src/modules/navigation-bar/components/DesktopSideBar.tsx +++ b/src/features/navigation-bar/components/DesktopSideBar.tsx @@ -22,13 +22,13 @@ import Box from '@mui/material/Box'; import ListItem from '@mui/material/ListItem'; import Badge from '@mui/material/Badge'; import Typography from '@mui/material/Typography'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ListItemLink } from '@/modules/core/components/lists/ListItemLink.tsx'; -import { useGetOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { NavbarItem } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ListItemLink } from '@/features/core/components/lists/ListItemLink.tsx'; +import { useGetOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { NavbarItem } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; const DrawerHeader = styled('div')(({ theme }) => ({ display: 'flex', diff --git a/src/modules/navigation-bar/components/MobileBottomBar.tsx b/src/features/navigation-bar/components/MobileBottomBar.tsx similarity index 90% rename from src/modules/navigation-bar/components/MobileBottomBar.tsx rename to src/features/navigation-bar/components/MobileBottomBar.tsx index db73fa44..5de21289 100644 --- a/src/modules/navigation-bar/components/MobileBottomBar.tsx +++ b/src/features/navigation-bar/components/MobileBottomBar.tsx @@ -14,10 +14,10 @@ import { CSSProperties, useCallback, useLayoutEffect, useRef, useState } from 'r import { useLocation, useNavigate } from 'react-router-dom'; import { useTheme } from '@mui/material/styles'; import Badge from '@mui/material/Badge'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { NavbarItem } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { StaticAppRoute } from '@/modules/core/AppRoute.constants.ts'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { NavbarItem } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { StaticAppRoute } from '@/features/core/AppRoute.constants.ts'; export const MobileBottomBar = ({ navBarItems }: { navBarItems: NavbarItem[] }) => { const { t } = useTranslation(); diff --git a/src/modules/navigation-bar/contexts/NavBarContextProvider.tsx b/src/features/navigation-bar/contexts/NavBarContextProvider.tsx similarity index 90% rename from src/modules/navigation-bar/contexts/NavBarContextProvider.tsx rename to src/features/navigation-bar/contexts/NavBarContextProvider.tsx index 38d1907d..698e0957 100644 --- a/src/modules/navigation-bar/contexts/NavBarContextProvider.tsx +++ b/src/features/navigation-bar/contexts/NavBarContextProvider.tsx @@ -7,9 +7,9 @@ */ import React, { useCallback, useMemo, useState } from 'react'; -import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; -import { INavbarOverride } from '@/modules/navigation-bar/NavigationBar.types.ts'; +import { NavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; +import { INavbarOverride } from '@/features/navigation-bar/NavigationBar.types.ts'; interface IProps { children: React.ReactNode; diff --git a/src/modules/navigation-bar/contexts/NavbarContext.tsx b/src/features/navigation-bar/contexts/NavbarContext.tsx similarity index 91% rename from src/modules/navigation-bar/contexts/NavbarContext.tsx rename to src/features/navigation-bar/contexts/NavbarContext.tsx index 9ff05cc4..20aa264a 100644 --- a/src/modules/navigation-bar/contexts/NavbarContext.tsx +++ b/src/features/navigation-bar/contexts/NavbarContext.tsx @@ -8,7 +8,7 @@ import React, { useContext } from 'react'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; export const NavBarContext = React.createContext({ title: 'Suwayomi', diff --git a/src/modules/navigation-bar/hooks/useAppAction.ts b/src/features/navigation-bar/hooks/useAppAction.ts similarity index 76% rename from src/modules/navigation-bar/hooks/useAppAction.ts rename to src/features/navigation-bar/hooks/useAppAction.ts index 9af3f22f..e0f80755 100644 --- a/src/modules/navigation-bar/hooks/useAppAction.ts +++ b/src/features/navigation-bar/hooks/useAppAction.ts @@ -7,8 +7,8 @@ */ import { useEffect } from 'react'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; export const useAppAction = (action: NavbarContextType['action'], dependencies: any[] = []) => { const { setAction } = useNavBarContext(); diff --git a/src/modules/navigation-bar/hooks/useAppTitle.ts b/src/features/navigation-bar/hooks/useAppTitle.ts similarity index 86% rename from src/modules/navigation-bar/hooks/useAppTitle.ts rename to src/features/navigation-bar/hooks/useAppTitle.ts index fd71d9d3..bef0ae8d 100644 --- a/src/modules/navigation-bar/hooks/useAppTitle.ts +++ b/src/features/navigation-bar/hooks/useAppTitle.ts @@ -7,8 +7,8 @@ */ import { useLayoutEffect } from 'react'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; export function useAppTitle( title: NavbarContextType['title'], diff --git a/src/modules/navigation-bar/hooks/useAppTitleAndAction.ts b/src/features/navigation-bar/hooks/useAppTitleAndAction.ts similarity index 67% rename from src/modules/navigation-bar/hooks/useAppTitleAndAction.ts rename to src/features/navigation-bar/hooks/useAppTitleAndAction.ts index 60ef45e1..2b0753fc 100644 --- a/src/modules/navigation-bar/hooks/useAppTitleAndAction.ts +++ b/src/features/navigation-bar/hooks/useAppTitleAndAction.ts @@ -6,9 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { useAppAction } from '@/modules/navigation-bar/hooks/useAppAction.ts'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { useAppAction } from '@/features/navigation-bar/hooks/useAppAction.ts'; export const useAppTitleAndAction = ( title: NavbarContextType['title'], diff --git a/src/modules/reader/components/ReaderHotkeys.tsx b/src/features/reader/components/ReaderHotkeys.tsx similarity index 87% rename from src/modules/reader/components/ReaderHotkeys.tsx rename to src/features/reader/components/ReaderHotkeys.tsx index 21315aa0..5ccba6f4 100644 --- a/src/modules/reader/components/ReaderHotkeys.tsx +++ b/src/features/reader/components/ReaderHotkeys.tsx @@ -9,26 +9,26 @@ import { useHotkeys as useHotKeysHook, useHotkeysContext } from 'react-hotkeys-hook'; import { useEffect } from 'react'; import { useTheme } from '@mui/material/styles'; -import { HOTKEY_SCOPES } from '@/modules/hotkeys/Hotkeys.constants.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { IReaderSettings, ReaderHotkey } from '@/modules/reader/types/Reader.types.ts'; -import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx'; -import { getNextRotationValue } from '@/modules/core/utils/ValueRotationButton.utils.ts'; +import { HOTKEY_SCOPES } from '@/features/hotkeys/Hotkeys.constants.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { IReaderSettings, ReaderHotkey } from '@/features/reader/types/Reader.types.ts'; +import { useReaderOverlayContext } from '@/features/reader/contexts/ReaderOverlayContext.tsx'; +import { getNextRotationValue } from '@/features/core/utils/ValueRotationButton.utils.ts'; import { AUTO_SCROLL_SPEED, CONTINUOUS_READING_MODE_TO_SCROLL_DIRECTION, READER_PAGE_SCALE_MODE_VALUES, READING_DIRECTION_VALUES, READING_MODE_VALUES, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { HotkeyScope } from '@/modules/hotkeys/Hotkeys.types.ts'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; -import { ScrollOffset } from '@/modules/core/Core.types.ts'; -import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -import { useReaderAutoScrollContext } from '@/modules/reader/contexts/ReaderAutoScrollContext.tsx'; -import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { HotkeyScope } from '@/features/hotkeys/Hotkeys.types.ts'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; +import { ScrollOffset } from '@/features/core/Core.types.ts'; +import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts'; +import { useReaderAutoScrollContext } from '@/features/reader/contexts/ReaderAutoScrollContext.tsx'; +import { useReaderTapZoneContext } from '@/features/reader/contexts/ReaderTapZoneContext.tsx'; const useHotkeys = (...args: Parameters): ReturnType => { const [keys, callback, options, dependencies] = args; diff --git a/src/modules/reader/components/ReaderPageNumber.tsx b/src/features/reader/components/ReaderPageNumber.tsx similarity index 78% rename from src/modules/reader/components/ReaderPageNumber.tsx rename to src/features/reader/components/ReaderPageNumber.tsx index 744f0eb0..f6d58c61 100644 --- a/src/modules/reader/components/ReaderPageNumber.tsx +++ b/src/features/reader/components/ReaderPageNumber.tsx @@ -10,22 +10,22 @@ import { useMemo } from 'react'; import Typography from '@mui/material/Typography'; import Stack from '@mui/material/Stack'; import Box from '@mui/material/Box'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; import { IReaderSettings, ProgressBarType, ReadingDirection, TReaderScrollbarContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { getPage } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { useReaderProgressBarContext } from '@/modules/reader/contexts/ReaderProgressBarContext.tsx'; -import { useReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { getPage } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { useReaderProgressBarContext } from '@/features/reader/contexts/ReaderProgressBarContext.tsx'; +import { useReaderScrollbarContext } from '@/features/reader/contexts/ReaderScrollbarContext.tsx'; import { reverseString } from '@/util/Strings.ts'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { ReaderStatePages, TReaderProgressBarContext } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { ReaderStatePages, TReaderProgressBarContext } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; const BaseReaderPageNumber = ({ isDesktop, diff --git a/src/modules/reader/components/ReaderRGBAFilter.tsx b/src/features/reader/components/ReaderRGBAFilter.tsx similarity index 75% rename from src/modules/reader/components/ReaderRGBAFilter.tsx rename to src/features/reader/components/ReaderRGBAFilter.tsx index 0d1a802a..436d52d2 100644 --- a/src/modules/reader/components/ReaderRGBAFilter.tsx +++ b/src/features/reader/components/ReaderRGBAFilter.tsx @@ -7,11 +7,11 @@ */ import Box from '@mui/material/Box'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; const BaseReaderRGBAFilter = ({ readerNavBarWidth, diff --git a/src/modules/reader/components/TapZoneLayout.tsx b/src/features/reader/components/TapZoneLayout.tsx similarity index 75% rename from src/modules/reader/components/TapZoneLayout.tsx rename to src/features/reader/components/TapZoneLayout.tsx index 56363f7d..44246bb5 100644 --- a/src/modules/reader/components/TapZoneLayout.tsx +++ b/src/features/reader/components/TapZoneLayout.tsx @@ -9,15 +9,15 @@ import Box from '@mui/material/Box'; import { useCallback, useLayoutEffect, useState } from 'react'; import { useTheme } from '@mui/material/styles'; -import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; -import { ReaderTapZoneService } from '@/modules/reader/services/ReaderTapZoneService.ts'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { IReaderSettings, ReadingDirection } from '@/modules/reader/types/Reader.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; +import { useReaderTapZoneContext } from '@/features/reader/contexts/ReaderTapZoneContext.tsx'; +import { ReaderTapZoneService } from '@/features/reader/services/ReaderTapZoneService.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { IReaderSettings, ReadingDirection } from '@/features/reader/types/Reader.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; const CANVAS_ID = 'reader-tap-zone-layout-canvas'; diff --git a/src/modules/reader/components/overlay/ReaderOverlay.tsx b/src/features/reader/components/overlay/ReaderOverlay.tsx similarity index 67% rename from src/modules/reader/components/overlay/ReaderOverlay.tsx rename to src/features/reader/components/overlay/ReaderOverlay.tsx index ed4b0720..64012f27 100644 --- a/src/modules/reader/components/overlay/ReaderOverlay.tsx +++ b/src/features/reader/components/overlay/ReaderOverlay.tsx @@ -8,16 +8,16 @@ import Box from '@mui/material/Box'; import { memo, useCallback, useRef, useState } from 'react'; -import { BaseReaderOverlayProps, MobileHeaderProps } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { ReaderSettings } from '@/modules/reader/components/settings/ReaderSettings.tsx'; -import { ReaderPageNumber } from '@/modules/reader/components/ReaderPageNumber.tsx'; -import { StandardReaderProgressBar } from '@/modules/reader/components/overlay/progress-bar/variants/StandardReaderProgressBar.tsx'; -import { ReaderNavBarDesktop } from '@/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx'; -import { ReaderOverlayHeaderMobile } from '@/modules/reader/components/overlay/ReaderOverlayHeaderMobile.tsx'; -import { ReaderBottomBarMobile } from '@/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobile.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; +import { BaseReaderOverlayProps, MobileHeaderProps } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { ReaderSettings } from '@/features/reader/components/settings/ReaderSettings.tsx'; +import { ReaderPageNumber } from '@/features/reader/components/ReaderPageNumber.tsx'; +import { StandardReaderProgressBar } from '@/features/reader/components/overlay/progress-bar/variants/StandardReaderProgressBar.tsx'; +import { ReaderNavBarDesktop } from '@/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx'; +import { ReaderOverlayHeaderMobile } from '@/features/reader/components/overlay/ReaderOverlayHeaderMobile.tsx'; +import { ReaderBottomBarMobile } from '@/features/reader/components/overlay/navigation/mobile/ReaderBottomBarMobile.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; const BaseReaderOverlay = ({ isVisible, diff --git a/src/modules/reader/components/overlay/ReaderOverlayHeaderMobile.tsx b/src/features/reader/components/overlay/ReaderOverlayHeaderMobile.tsx similarity index 79% rename from src/modules/reader/components/overlay/ReaderOverlayHeaderMobile.tsx rename to src/features/reader/components/overlay/ReaderOverlayHeaderMobile.tsx index 7a328a0a..01bf9c7f 100644 --- a/src/modules/reader/components/overlay/ReaderOverlayHeaderMobile.tsx +++ b/src/features/reader/components/overlay/ReaderOverlayHeaderMobile.tsx @@ -18,26 +18,26 @@ import { Link as RouterLink } from 'react-router-dom'; import { alpha } from '@mui/material/styles'; import Slide from '@mui/material/Slide'; import { forwardRef, memo } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { MobileHeaderProps } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { MobileHeaderProps } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { ReaderStateChapters, TReaderScrollbarContext, TReaderStateMangaContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { useReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx'; -import { ReaderLibraryButton } from '@/modules/reader/components/overlay/navigation/ReaderLibraryButton.tsx'; -import { ReaderBookmarkButton } from '@/modules/reader/components/overlay/navigation/ReaderBookmarkButton.tsx'; -import { FALLBACK_CHAPTER } from '@/modules/chapter/Chapter.constants.ts'; -import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -import { ReaderExitButton } from '@/modules/reader/components/overlay/navigation/ReaderExitButton.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { useReaderScrollbarContext } from '@/features/reader/contexts/ReaderScrollbarContext.tsx'; +import { ReaderLibraryButton } from '@/features/reader/components/overlay/navigation/ReaderLibraryButton.tsx'; +import { ReaderBookmarkButton } from '@/features/reader/components/overlay/navigation/ReaderBookmarkButton.tsx'; +import { FALLBACK_CHAPTER } from '@/features/chapter/Chapter.constants.ts'; +import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts'; +import { ReaderExitButton } from '@/features/reader/components/overlay/navigation/ReaderExitButton.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; const DEFAULT_MANGA = { ...FALLBACK_MANGA, title: '' }; diff --git a/src/modules/reader/components/overlay/navigation/ReaderBookmarkButton.tsx b/src/features/reader/components/overlay/navigation/ReaderBookmarkButton.tsx similarity index 79% rename from src/modules/reader/components/overlay/navigation/ReaderBookmarkButton.tsx rename to src/features/reader/components/overlay/navigation/ReaderBookmarkButton.tsx index d5923815..926b3543 100644 --- a/src/modules/reader/components/overlay/navigation/ReaderBookmarkButton.tsx +++ b/src/features/reader/components/overlay/navigation/ReaderBookmarkButton.tsx @@ -11,10 +11,10 @@ import { useTranslation } from 'react-i18next'; import { memo } from 'react'; import BookmarkIcon from '@mui/icons-material/Bookmark'; import BookmarkBorderIcon from '@mui/icons-material/BookmarkBorder'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { ChapterAction, TChapterReader } from '@/modules/chapter/Chapter.types.ts'; -import { CHAPTER_ACTION_TO_TRANSLATION } from '@/modules/chapter/Chapter.constants.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { ChapterAction, TChapterReader } from '@/features/chapter/Chapter.types.ts'; +import { CHAPTER_ACTION_TO_TRANSLATION } from '@/features/chapter/Chapter.constants.ts'; const BaseReaderBookmarkButton = ({ id, isBookmarked }: Pick) => { const { t } = useTranslation(); diff --git a/src/modules/reader/components/overlay/navigation/ReaderChapterList.tsx b/src/features/reader/components/overlay/navigation/ReaderChapterList.tsx similarity index 90% rename from src/modules/reader/components/overlay/navigation/ReaderChapterList.tsx rename to src/features/reader/components/overlay/navigation/ReaderChapterList.tsx index 2c335559..01ac8b0c 100644 --- a/src/modules/reader/components/overlay/navigation/ReaderChapterList.tsx +++ b/src/features/reader/components/overlay/navigation/ReaderChapterList.tsx @@ -8,8 +8,8 @@ import { Virtuoso, VirtuosoProps } from 'react-virtuoso'; import { useMemo } from 'react'; -import { ReaderStateChapters } from '@/modules/reader/types/Reader.types.ts'; -import { ChapterListCard } from '@/modules/chapter/components/cards/ChapterListCard.tsx'; +import { ReaderStateChapters } from '@/features/reader/types/Reader.types.ts'; +import { ChapterListCard } from '@/features/chapter/components/cards/ChapterListCard.tsx'; const onSelectNoop = () => {}; diff --git a/src/modules/reader/components/overlay/navigation/ReaderExitButton.tsx b/src/features/reader/components/overlay/navigation/ReaderExitButton.tsx similarity index 78% rename from src/modules/reader/components/overlay/navigation/ReaderExitButton.tsx rename to src/features/reader/components/overlay/navigation/ReaderExitButton.tsx index 341ced0f..033ddf25 100644 --- a/src/modules/reader/components/overlay/navigation/ReaderExitButton.tsx +++ b/src/features/reader/components/overlay/navigation/ReaderExitButton.tsx @@ -11,10 +11,10 @@ import { useTranslation } from 'react-i18next'; import ArrowBack from '@mui/icons-material/ArrowBack'; import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; import { memo } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { useGetOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { useGetOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; const BaseReaderExitButton = ({ exit }: { exit: ReturnType }) => { const { t } = useTranslation(); diff --git a/src/modules/reader/components/overlay/navigation/ReaderLibraryButton.tsx b/src/features/reader/components/overlay/navigation/ReaderLibraryButton.tsx similarity index 75% rename from src/modules/reader/components/overlay/navigation/ReaderLibraryButton.tsx rename to src/features/reader/components/overlay/navigation/ReaderLibraryButton.tsx index 18a697cd..73a1c562 100644 --- a/src/modules/reader/components/overlay/navigation/ReaderLibraryButton.tsx +++ b/src/features/reader/components/overlay/navigation/ReaderLibraryButton.tsx @@ -11,12 +11,12 @@ import { useTranslation } from 'react-i18next'; import FavoriteIcon from '@mui/icons-material/Favorite'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import { memo } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { useManageMangaLibraryState } from '@/modules/manga/hooks/useManageMangaLibraryState.tsx'; -import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -import { TReaderStateMangaContext } from '@/modules/reader/types/Reader.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { useManageMangaLibraryState } from '@/features/manga/hooks/useManageMangaLibraryState.tsx'; +import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts'; +import { TReaderStateMangaContext } from '@/features/reader/types/Reader.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; const ACTION_FALLBACK_MANGA = { ...FALLBACK_MANGA, diff --git a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx similarity index 72% rename from src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx rename to src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx index ceed9763..7bd1ef72 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx @@ -14,26 +14,30 @@ import PushPinOutlinedIcon from '@mui/icons-material/PushPinOutlined'; import Divider from '@mui/material/Divider'; import { memo, useCallback, useLayoutEffect, useRef, useState } from 'react'; import Drawer from '@mui/material/Drawer'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ReaderNavBarDesktopProps } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { ReaderNavContainer } from '@/modules/reader/components/overlay/navigation/desktop/ReaderNavContainer.tsx'; -import { ReaderNavBarDesktopMetadata } from '@/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopMetadata.tsx'; -import { ReaderNavBarDesktopPageNavigation } from '@/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopPageNavigation.tsx'; -import { ReaderNavBarDesktopChapterNavigation } from '@/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopChapterNavigation.tsx'; -import { ReaderNavBarDesktopQuickSettings } from '@/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx'; -import { ReaderNavBarDesktopActions } from '@/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopActions.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { IReaderSettings, ReaderStateChapters, TReaderStateMangaContext } from '@/modules/reader/types/Reader.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -import { ReaderExitButton } from '@/modules/reader/components/overlay/navigation/ReaderExitButton.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ReaderNavBarDesktopProps } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { ReaderNavContainer } from '@/features/reader/components/overlay/navigation/desktop/ReaderNavContainer.tsx'; +import { ReaderNavBarDesktopMetadata } from '@/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopMetadata.tsx'; +import { ReaderNavBarDesktopPageNavigation } from '@/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopPageNavigation.tsx'; +import { ReaderNavBarDesktopChapterNavigation } from '@/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopChapterNavigation.tsx'; +import { ReaderNavBarDesktopQuickSettings } from '@/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx'; +import { ReaderNavBarDesktopActions } from '@/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopActions.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { + IReaderSettings, + ReaderStateChapters, + TReaderStateMangaContext, +} from '@/features/reader/types/Reader.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts'; +import { ReaderExitButton } from '@/features/reader/components/overlay/navigation/ReaderExitButton.tsx'; const useGetPreviousNavBarStaticValue = (isVisible: boolean, isStaticNav: boolean) => { const wasNavBarStaticRef = useRef(isStaticNav); diff --git a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopActions.tsx b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopActions.tsx similarity index 84% rename from src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopActions.tsx rename to src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopActions.tsx index af32929a..29ba26f2 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopActions.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopActions.tsx @@ -13,17 +13,17 @@ import DownloadIcon from '@mui/icons-material/Download'; import ReplayIcon from '@mui/icons-material/Replay'; import { memo, useMemo, useRef } from 'react'; import DeleteIcon from '@mui/icons-material/Delete'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { ReaderStateChapters } from '@/modules/reader/types/Reader.types.ts'; -import { DownloadStateIndicator } from '@/modules/core/components/downloads/DownloadStateIndicator.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { ReaderLibraryButton } from '@/modules/reader/components/overlay/navigation/ReaderLibraryButton.tsx'; -import { ReaderBookmarkButton } from '@/modules/reader/components/overlay/navigation/ReaderBookmarkButton.tsx'; -import { CHAPTER_ACTION_TO_TRANSLATION, FALLBACK_CHAPTER } from '@/modules/chapter/Chapter.constants.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { ReaderStateChapters } from '@/features/reader/types/Reader.types.ts'; +import { DownloadStateIndicator } from '@/features/core/components/downloads/DownloadStateIndicator.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { ReaderLibraryButton } from '@/features/reader/components/overlay/navigation/ReaderLibraryButton.tsx'; +import { ReaderBookmarkButton } from '@/features/reader/components/overlay/navigation/ReaderBookmarkButton.tsx'; +import { CHAPTER_ACTION_TO_TRANSLATION, FALLBACK_CHAPTER } from '@/features/chapter/Chapter.constants.ts'; import { IconBrowser } from '@/assets/icons/IconBrowser.tsx'; import { IconWebView } from '@/assets/icons/IconWebView.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; diff --git a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopChapterNavigation.tsx b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopChapterNavigation.tsx similarity index 87% rename from src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopChapterNavigation.tsx rename to src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopChapterNavigation.tsx index 8147875b..7a016dfc 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopChapterNavigation.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopChapterNavigation.tsx @@ -16,14 +16,14 @@ import { bindPopover, bindTrigger, usePopupState } from 'material-ui-popup-state import FormControl from '@mui/material/FormControl'; import InputLabel from '@mui/material/InputLabel'; import { Link } from 'react-router-dom'; -import { Select } from '@/modules/core/components/inputs/Select.tsx'; -import { ReaderChapterList } from '@/modules/reader/components/overlay/navigation/ReaderChapterList.tsx'; -import { ReaderNavBarDesktopNextPreviousButton } from '@/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx'; -import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; -import { ReaderStateChapters } from '@/modules/reader/types/Reader.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; +import { Select } from '@/features/core/components/inputs/Select.tsx'; +import { ReaderChapterList } from '@/features/reader/components/overlay/navigation/ReaderChapterList.tsx'; +import { ReaderNavBarDesktopNextPreviousButton } from '@/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx'; +import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; +import { ReaderStateChapters } from '@/features/reader/types/Reader.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; const BaseReaderNavBarDesktopChapterNavigation = ({ currentChapter, diff --git a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopMetadata.tsx b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopMetadata.tsx similarity index 89% rename from src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopMetadata.tsx rename to src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopMetadata.tsx index 28e36687..bed32e5a 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopMetadata.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopMetadata.tsx @@ -11,9 +11,9 @@ import Link from '@mui/material/Link'; import { Link as RouterLink } from 'react-router-dom'; import { memo } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; export const ReaderNavBarDesktopMetadata = memo( ({ diff --git a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx similarity index 85% rename from src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx rename to src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx index f935224b..7ddb8748 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx @@ -9,8 +9,8 @@ import { ComponentProps } from 'react'; import KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft'; import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { CustomButtonIcon } from '@/modules/core/components/buttons/CustomButtonIcon.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { CustomButtonIcon } from '@/features/core/components/buttons/CustomButtonIcon.tsx'; export const ReaderNavBarDesktopNextPreviousButton = ({ title, diff --git a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopPageNavigation.tsx b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopPageNavigation.tsx similarity index 77% rename from src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopPageNavigation.tsx rename to src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopPageNavigation.tsx index 46f13159..1571ac00 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopPageNavigation.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopPageNavigation.tsx @@ -12,17 +12,17 @@ import MenuItem from '@mui/material/MenuItem'; import { memo, useMemo } from 'react'; import FormControl from '@mui/material/FormControl'; import InputLabel from '@mui/material/InputLabel'; -import { Select } from '@/modules/core/components/inputs/Select.tsx'; -import { getNextIndexFromPage, getPage } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; -import { useGetOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { ReaderNavBarDesktopNextPreviousButton } from '@/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx'; -import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { Select } from '@/features/core/components/inputs/Select.tsx'; +import { getNextIndexFromPage, getPage } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; +import { useGetOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { ReaderNavBarDesktopNextPreviousButton } from '@/features/reader/components/overlay/navigation/desktop/ReaderNavBarDesktopNextPreviousButton.tsx'; +import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; const BaseReaderNavBarDesktopPageNavigation = ({ currentPageIndex, diff --git a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavContainer.tsx b/src/features/reader/components/overlay/navigation/desktop/ReaderNavContainer.tsx similarity index 100% rename from src/modules/reader/components/overlay/navigation/desktop/ReaderNavContainer.tsx rename to src/features/reader/components/overlay/navigation/desktop/ReaderNavContainer.tsx diff --git a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopAutoScroll.tsx b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopAutoScroll.tsx similarity index 91% rename from src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopAutoScroll.tsx rename to src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopAutoScroll.tsx index 08be8ef0..7d5c110f 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopAutoScroll.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopAutoScroll.tsx @@ -14,9 +14,9 @@ import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import InputAdornment from '@mui/material/InputAdornment'; import { useRef } from 'react'; -import { useReaderAutoScrollContext } from '@/modules/reader/contexts/ReaderAutoScrollContext.tsx'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { AUTO_SCROLL_SPEED } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { useReaderAutoScrollContext } from '@/features/reader/contexts/ReaderAutoScrollContext.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { AUTO_SCROLL_SPEED } from '@/features/reader/constants/ReaderSettings.constants.tsx'; import { coerceIn } from '@/lib/HelperFunctions.ts'; export const ReaderNavBarDesktopAutoScroll = ({ diff --git a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopOffsetDoubleSpread.tsx b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopOffsetDoubleSpread.tsx similarity index 88% rename from src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopOffsetDoubleSpread.tsx rename to src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopOffsetDoubleSpread.tsx index b6a1cf7a..8886762e 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopOffsetDoubleSpread.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopOffsetDoubleSpread.tsx @@ -9,8 +9,8 @@ import { useTranslation } from 'react-i18next'; import Button from '@mui/material/Button'; import { OffsetDoubleSpreadIcon } from '@/assets/icons/svg/OffsetDoubleSpreadIcon.tsx'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { isOffsetDoubleSpreadPagesEditable } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { isOffsetDoubleSpreadPagesEditable } from '@/features/reader/utils/ReaderSettings.utils.tsx'; export const ReaderNavBarDesktopOffsetDoubleSpread = ({ readingMode, diff --git a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopPageScale.tsx b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopPageScale.tsx similarity index 84% rename from src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopPageScale.tsx rename to src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopPageScale.tsx index 3c54bd08..ab52b3c4 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopPageScale.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopPageScale.tsx @@ -9,20 +9,20 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; import FitScreenIcon from '@mui/icons-material/FitScreen'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ValueRotationButton } from '@/modules/core/components/buttons/ValueRotationButton.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ValueRotationButton } from '@/features/core/components/buttons/ValueRotationButton.tsx'; import { IReaderSettings, IReaderSettingsWithDefaultFlag, ReaderPageScaleMode, -} from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/types/Reader.types.ts'; import { PAGE_SCALE_VALUE_TO_DISPLAY_DATA, READER_PAGE_SCALE_MODE_TO_SCALING_ALLOWED, READER_PAGE_SCALE_MODE_VALUES, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { MultiValueButtonDefaultableProps } from '@/modules/core/Core.types.ts'; -import { CustomButtonIcon } from '@/modules/core/components/buttons/CustomButtonIcon.tsx'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { MultiValueButtonDefaultableProps } from '@/features/core/Core.types.ts'; +import { CustomButtonIcon } from '@/features/core/components/buttons/CustomButtonIcon.tsx'; export const ReaderNavBarDesktopPageScale = ({ pageScaleMode, diff --git a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx similarity index 75% rename from src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx rename to src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx index 33b61226..903efa54 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx @@ -10,17 +10,17 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; import Button from '@mui/material/Button'; import SettingsIcon from '@mui/icons-material/Settings'; -import { ReaderNavBarDesktopPageScale } from '@/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopPageScale.tsx'; -import { ReaderNavBarDesktopReadingMode } from '@/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingMode.tsx'; -import { ReaderNavBarDesktopOffsetDoubleSpread } from '@/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopOffsetDoubleSpread.tsx'; -import { ReaderNavBarDesktopReadingDirection } from '@/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingDirection.tsx'; -import { IReaderSettingsWithDefaultFlag, TReaderStateMangaContext } from '@/modules/reader/types/Reader.types.ts'; -import { ReaderNavBarDesktopProps } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -import { ReaderNavBarDesktopAutoScroll } from '@/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopAutoScroll.tsx'; +import { ReaderNavBarDesktopPageScale } from '@/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopPageScale.tsx'; +import { ReaderNavBarDesktopReadingMode } from '@/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingMode.tsx'; +import { ReaderNavBarDesktopOffsetDoubleSpread } from '@/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopOffsetDoubleSpread.tsx'; +import { ReaderNavBarDesktopReadingDirection } from '@/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingDirection.tsx'; +import { IReaderSettingsWithDefaultFlag, TReaderStateMangaContext } from '@/features/reader/types/Reader.types.ts'; +import { ReaderNavBarDesktopProps } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts'; +import { ReaderNavBarDesktopAutoScroll } from '@/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopAutoScroll.tsx'; const BaseReaderNavBarDesktopQuickSettings = ({ manga, diff --git a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingDirection.tsx b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingDirection.tsx similarity index 83% rename from src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingDirection.tsx rename to src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingDirection.tsx index 4ecf7b1e..474e3466 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingDirection.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingDirection.tsx @@ -7,13 +7,13 @@ */ import { useTranslation } from 'react-i18next'; -import { ValueRotationButton } from '@/modules/core/components/buttons/ValueRotationButton.tsx'; -import { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/modules/reader/types/Reader.types.ts'; +import { ValueRotationButton } from '@/features/core/components/buttons/ValueRotationButton.tsx'; +import { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/features/reader/types/Reader.types.ts'; import { READING_DIRECTION_VALUES, READING_DIRECTION_VALUE_TO_DISPLAY_DATA, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { MultiValueButtonDefaultableProps } from '@/modules/core/Core.types.ts'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { MultiValueButtonDefaultableProps } from '@/features/core/Core.types.ts'; export const ReaderNavBarDesktopReadingDirection = ({ readingDirection, diff --git a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingMode.tsx b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingMode.tsx similarity index 78% rename from src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingMode.tsx rename to src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingMode.tsx index 2d8f862e..89b2b857 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingMode.tsx +++ b/src/features/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopReadingMode.tsx @@ -7,13 +7,13 @@ */ import { useTranslation } from 'react-i18next'; -import { ValueRotationButton } from '@/modules/core/components/buttons/ValueRotationButton.tsx'; -import { IReaderSettingsWithDefaultFlag, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; +import { ValueRotationButton } from '@/features/core/components/buttons/ValueRotationButton.tsx'; +import { IReaderSettingsWithDefaultFlag, ReadingMode } from '@/features/reader/types/Reader.types.ts'; import { READING_MODE_VALUE_TO_DISPLAY_DATA, READING_MODE_VALUES, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { MultiValueButtonDefaultableProps } from '@/modules/core/Core.types.ts'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { MultiValueButtonDefaultableProps } from '@/features/core/Core.types.ts'; export const ReaderNavBarDesktopReadingMode = ({ readingMode, diff --git a/src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobile.tsx b/src/features/reader/components/overlay/navigation/mobile/ReaderBottomBarMobile.tsx similarity index 85% rename from src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobile.tsx rename to src/features/reader/components/overlay/navigation/mobile/ReaderBottomBarMobile.tsx index 893f7507..3125c0bc 100644 --- a/src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobile.tsx +++ b/src/features/reader/components/overlay/navigation/mobile/ReaderBottomBarMobile.tsx @@ -18,16 +18,16 @@ import DialogContent from '@mui/material/DialogContent'; import { useTranslation } from 'react-i18next'; import Slide from '@mui/material/Slide'; import { memo, useCallback, useLayoutEffect, useRef, useState } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ReaderBottomBarMobileProps } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { MobileReaderProgressBar } from '@/modules/reader/components/overlay/progress-bar/variants/MobileReaderProgressBar.tsx'; -import { ReaderChapterList } from '@/modules/reader/components/overlay/navigation/ReaderChapterList.tsx'; -import { ReaderBottomBarMobileQuickSettings } from '@/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { useReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx'; -import { ReaderStateChapters, TReaderScrollbarContext } from '@/modules/reader/types/Reader.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ReaderBottomBarMobileProps } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { MobileReaderProgressBar } from '@/features/reader/components/overlay/progress-bar/variants/MobileReaderProgressBar.tsx'; +import { ReaderChapterList } from '@/features/reader/components/overlay/navigation/ReaderChapterList.tsx'; +import { ReaderBottomBarMobileQuickSettings } from '@/features/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { useReaderScrollbarContext } from '@/features/reader/contexts/ReaderScrollbarContext.tsx'; +import { ReaderStateChapters, TReaderScrollbarContext } from '@/features/reader/types/Reader.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; const BaseReaderBottomBarMobile = ({ openSettings, diff --git a/src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx b/src/features/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx similarity index 70% rename from src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx rename to src/features/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx index a586a195..b9834130 100644 --- a/src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx +++ b/src/features/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx @@ -9,21 +9,21 @@ import Stack from '@mui/material/Stack'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { ReaderSettingReadingMode } from '@/modules/reader/components/settings/layout/ReaderSettingReadingMode.tsx'; -import { ReaderSettingReadingDirection } from '@/modules/reader/components/settings/layout/ReaderSettingReadingDirection.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { DefaultSettingFootnote } from '@/modules/reader/components/settings/DefaultSettingFootnote.tsx'; +import { ReaderSettingReadingMode } from '@/features/reader/components/settings/layout/ReaderSettingReadingMode.tsx'; +import { ReaderSettingReadingDirection } from '@/features/reader/components/settings/layout/ReaderSettingReadingDirection.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { DefaultSettingFootnote } from '@/features/reader/components/settings/DefaultSettingFootnote.tsx'; import { IReaderSettingsWithDefaultFlag, TReaderAutoScrollContext, TReaderStateMangaContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -import { ReaderSettingAutoScroll } from '@/modules/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { useReaderAutoScrollContext } from '@/modules/reader/contexts/ReaderAutoScrollContext.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts'; +import { ReaderSettingAutoScroll } from '@/features/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { useReaderAutoScrollContext } from '@/features/reader/contexts/ReaderAutoScrollContext.tsx'; const BaseReaderBottomBarMobileQuickSettings = ({ manga, diff --git a/src/modules/reader/components/overlay/progress-bar/ProgressBarHighlightReadPages.tsx b/src/features/reader/components/overlay/progress-bar/ProgressBarHighlightReadPages.tsx similarity index 80% rename from src/modules/reader/components/overlay/progress-bar/ProgressBarHighlightReadPages.tsx rename to src/features/reader/components/overlay/progress-bar/ProgressBarHighlightReadPages.tsx index d7f1fe17..45e8f7d3 100644 --- a/src/modules/reader/components/overlay/progress-bar/ProgressBarHighlightReadPages.tsx +++ b/src/features/reader/components/overlay/progress-bar/ProgressBarHighlightReadPages.tsx @@ -8,10 +8,10 @@ import Box from '@mui/material/Box'; import { styled } from '@mui/material/styles'; -import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { getProgressBarPositionInfo } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; +import { shouldForwardProp } from '@/features/core/utils/ShouldForwardProp.ts'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { getProgressBarPositionInfo } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; type ProgressBarHighlightReadPagesProps = Pick & { currentPagesIndex: number; diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBar.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBar.tsx similarity index 85% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBar.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBar.tsx index 3f63e5ef..26ec1bfa 100644 --- a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBar.tsx +++ b/src/features/reader/components/overlay/progress-bar/ReaderProgressBar.tsx @@ -11,29 +11,29 @@ import { ComponentProps, memo, ReactNode, useCallback, useMemo, useRef, useState import ClickAwayListener from '@mui/material/ClickAwayListener'; import { TypographyProps } from '@mui/material/Typography'; import { StackProps } from '@mui/material/Stack'; -import { ReaderProgressBarProps, TReaderProgressBarContext } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { ReaderProgressBarPageNumber } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarPageNumber.tsx'; -import { ReaderProgressBarContainer } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarContainer.tsx'; -import { ReaderProgressBarRoot } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarRoot.tsx'; -import { ReaderProgressBarSlotsContainer } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotsContainer.tsx'; -import { ProgressBarHighlightReadPages } from '@/modules/reader/components/overlay/progress-bar/ProgressBarHighlightReadPages.tsx'; -import { ReaderProgressBarCurrentPageSlot } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarCurrentPageSlot.tsx'; +import { ReaderProgressBarProps, TReaderProgressBarContext } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { ReaderProgressBarPageNumber } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarPageNumber.tsx'; +import { ReaderProgressBarContainer } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarContainer.tsx'; +import { ReaderProgressBarRoot } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarRoot.tsx'; +import { ReaderProgressBarSlotsContainer } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotsContainer.tsx'; +import { ProgressBarHighlightReadPages } from '@/features/reader/components/overlay/progress-bar/ProgressBarHighlightReadPages.tsx'; +import { ReaderProgressBarCurrentPageSlot } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarCurrentPageSlot.tsx'; import { getNextIndexFromPage, getPage, getPageForMousePos, getProgressBarPositionInfo, -} from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; -import { getOptionForDirection as getOptionForDirectionImpl } from '@/modules/theme/services/ThemeCreator.ts'; -import { ReaderProgressBarSlotsActionArea } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotsActionArea.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderProgressBarContext } from '@/modules/reader/contexts/ReaderProgressBarContext.tsx'; -import { ReaderProgressBarSlotWrapper } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotWrapper.tsx'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { IReaderSettings, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; +import { getOptionForDirection as getOptionForDirectionImpl } from '@/features/theme/services/ThemeCreator.ts'; +import { ReaderProgressBarSlotsActionArea } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotsActionArea.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderProgressBarContext } from '@/features/reader/contexts/ReaderProgressBarContext.tsx'; +import { ReaderProgressBarSlotWrapper } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotWrapper.tsx'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { IReaderSettings, ReadingMode } from '@/features/reader/types/Reader.types.ts'; const BaseReaderProgressBar = ({ totalPages, diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarContainer.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarContainer.tsx similarity index 80% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarContainer.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarContainer.tsx index aa027912..8c16e2eb 100644 --- a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarContainer.tsx +++ b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarContainer.tsx @@ -8,10 +8,10 @@ import Stack from '@mui/material/Stack'; import { styled } from '@mui/material/styles'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { getProgressBarPositionInfo } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { shouldForwardProp } from '@/features/core/utils/ShouldForwardProp.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { getProgressBarPositionInfo } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; type ReaderProgressBarContainerProps = Pick; export const ReaderProgressBarContainer = styled(Stack, { diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarCurrentPageSlot.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarCurrentPageSlot.tsx similarity index 79% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarCurrentPageSlot.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarCurrentPageSlot.tsx index 2b1af0cc..e16d71c4 100644 --- a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarCurrentPageSlot.tsx +++ b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarCurrentPageSlot.tsx @@ -8,11 +8,11 @@ import Box from '@mui/material/Box'; import { ReactNode } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { CurrentPageSlotProps } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { getProgressBarPositionInfo } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; -import { READER_PROGRESS_BAR_POSITION_TO_PLACEMENT } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { CurrentPageSlotProps } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { getProgressBarPositionInfo } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; +import { READER_PROGRESS_BAR_POSITION_TO_PLACEMENT } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderProgressBarCurrentPageSlot = ({ pageName, diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx similarity index 76% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx index fbb33218..0bdfa188 100644 --- a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx +++ b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx @@ -10,12 +10,12 @@ import { forwardRef, useMemo } from 'react'; import { CacheProvider } from '@emotion/react'; import { ThemeProvider } from '@mui/material/styles'; import Box, { BoxProps } from '@mui/material/Box'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { getTheme } from '@/modules/theme/services/AppThemes.ts'; -import { createTheme } from '@/modules/theme/services/ThemeCreator.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { DIRECTION_TO_CACHE } from '@/modules/theme/ThemeDirectionCache.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { getTheme } from '@/features/theme/services/AppThemes.ts'; +import { createTheme } from '@/features/theme/services/ThemeCreator.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { DIRECTION_TO_CACHE } from '@/features/theme/ThemeDirectionCache.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; const BaseReaderProgressBarDirectionWrapper = forwardRef< HTMLElement, diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarPageNumber.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarPageNumber.tsx similarity index 100% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarPageNumber.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarPageNumber.tsx diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarRoot.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarRoot.tsx similarity index 100% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarRoot.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarRoot.tsx diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlot.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlot.tsx similarity index 74% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlot.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlot.tsx index b8547304..3b58c6c5 100644 --- a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlot.tsx +++ b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlot.tsx @@ -8,10 +8,10 @@ import Box from '@mui/material/Box'; import { memo, ReactNode } from 'react'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ReaderProgressBarSlotProps } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ReaderProgressBarSlotProps } from '@/features/reader/types/ReaderProgressBar.types.ts'; -import { READER_PROGRESS_BAR_POSITION_TO_PLACEMENT } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { READER_PROGRESS_BAR_POSITION_TO_PLACEMENT } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderProgressBarSlot = memo( ({ pageName, progressBarPosition, slotProps, children }: ReaderProgressBarSlotProps & { children?: ReactNode }) => ( diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotWrapper.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotWrapper.tsx similarity index 94% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotWrapper.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotWrapper.tsx index 9e6631f0..523d7561 100644 --- a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotWrapper.tsx +++ b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotWrapper.tsx @@ -9,8 +9,8 @@ import Box, { BoxProps } from '@mui/material/Box'; import { memo, ReactNode, useMemo } from 'react'; import { styled } from '@mui/material/styles'; -import { ReaderProgressBarProps } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; +import { ReaderProgressBarProps } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { shouldForwardProp } from '@/features/core/utils/ShouldForwardProp.ts'; type StyledWrapperProps = { isFirstPage: boolean; diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotsActionArea.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotsActionArea.tsx similarity index 100% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotsActionArea.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotsActionArea.tsx diff --git a/src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotsContainer.tsx b/src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotsContainer.tsx similarity index 100% rename from src/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlotsContainer.tsx rename to src/features/reader/components/overlay/progress-bar/ReaderProgressBarSlotsContainer.tsx diff --git a/src/modules/reader/components/overlay/progress-bar/desktop/ReaderProgressBarSlotDesktop.tsx b/src/features/reader/components/overlay/progress-bar/desktop/ReaderProgressBarSlotDesktop.tsx similarity index 93% rename from src/modules/reader/components/overlay/progress-bar/desktop/ReaderProgressBarSlotDesktop.tsx rename to src/features/reader/components/overlay/progress-bar/desktop/ReaderProgressBarSlotDesktop.tsx index 8cb164c8..73959ba6 100644 --- a/src/modules/reader/components/overlay/progress-bar/desktop/ReaderProgressBarSlotDesktop.tsx +++ b/src/features/reader/components/overlay/progress-bar/desktop/ReaderProgressBarSlotDesktop.tsx @@ -9,9 +9,9 @@ import { alpha, darken, lighten, useTheme } from '@mui/material/styles'; import Box from '@mui/material/Box'; import { memo } from 'react'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { ReaderProgressBarSlot } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlot.tsx'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { ReaderProgressBarSlot } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarSlot.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; export const ReaderProgressBarSlotDesktop = memo( ({ diff --git a/src/modules/reader/components/overlay/progress-bar/mobile/ReaderProgressBarSlotMobile.tsx b/src/features/reader/components/overlay/progress-bar/mobile/ReaderProgressBarSlotMobile.tsx similarity index 91% rename from src/modules/reader/components/overlay/progress-bar/mobile/ReaderProgressBarSlotMobile.tsx rename to src/features/reader/components/overlay/progress-bar/mobile/ReaderProgressBarSlotMobile.tsx index 057130c3..652aa70e 100644 --- a/src/modules/reader/components/overlay/progress-bar/mobile/ReaderProgressBarSlotMobile.tsx +++ b/src/features/reader/components/overlay/progress-bar/mobile/ReaderProgressBarSlotMobile.tsx @@ -8,9 +8,9 @@ import Box from '@mui/material/Box'; import { ComponentProps, memo } from 'react'; -import { ProgressBarPosition } from '@/modules/reader/types/Reader.types.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { ReaderProgressBarSlot } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarSlot'; +import { ProgressBarPosition } from '@/features/reader/types/Reader.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { ReaderProgressBarSlot } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarSlot'; const SLOT_SX_PROP: NonNullable['slotProps']>['box']>['sx'] = { display: 'flex', diff --git a/src/modules/reader/components/overlay/progress-bar/variants/MobileReaderProgressBar.tsx b/src/features/reader/components/overlay/progress-bar/variants/MobileReaderProgressBar.tsx similarity index 89% rename from src/modules/reader/components/overlay/progress-bar/variants/MobileReaderProgressBar.tsx rename to src/features/reader/components/overlay/progress-bar/variants/MobileReaderProgressBar.tsx index 5f179d36..88c52ce5 100644 --- a/src/modules/reader/components/overlay/progress-bar/variants/MobileReaderProgressBar.tsx +++ b/src/features/reader/components/overlay/progress-bar/variants/MobileReaderProgressBar.tsx @@ -14,30 +14,30 @@ import { alpha } from '@mui/material/styles'; import Box from '@mui/material/Box'; import { ComponentProps, memo, useCallback, useLayoutEffect, useMemo, useState } from 'react'; import Slide, { SlideProps } from '@mui/material/Slide'; -import { ReaderProgressBar } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBar.tsx'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { getPage, getProgressBarPositionInfo } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; -import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; +import { ReaderProgressBar } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBar.tsx'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { getPage, getProgressBarPositionInfo } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; +import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; import { IReaderSettings, ProgressBarPosition, ReaderStateChapters, TReaderScrollbarContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { ReaderProgressBarDirectionWrapper } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx'; -import { useReaderProgressBarContext } from '@/modules/reader/contexts/ReaderProgressBarContext.tsx'; -import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { TReaderOverlayContext } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { ReaderProgressBarProps, TReaderProgressBarContext } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { ReaderProgressBarSlotMobile } from '@/modules/reader/components/overlay/progress-bar/mobile/ReaderProgressBarSlotMobile.tsx'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { getProgressBarPosition } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { useReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; +} from '@/features/reader/types/Reader.types.ts'; +import { ReaderProgressBarDirectionWrapper } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx'; +import { useReaderProgressBarContext } from '@/features/reader/contexts/ReaderProgressBarContext.tsx'; +import { useReaderOverlayContext } from '@/features/reader/contexts/ReaderOverlayContext.tsx'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { TReaderOverlayContext } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { ReaderProgressBarProps, TReaderProgressBarContext } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { ReaderProgressBarSlotMobile } from '@/features/reader/components/overlay/progress-bar/mobile/ReaderProgressBarSlotMobile.tsx'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { getProgressBarPosition } from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { useReaderScrollbarContext } from '@/features/reader/contexts/ReaderScrollbarContext.tsx'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; const PROGRESS_BAR_POSITION_TO_SLIDE_DIRECTION: Record = { [ProgressBarPosition.BOTTOM]: 'up', diff --git a/src/modules/reader/components/overlay/progress-bar/variants/StandardReaderProgressBar.tsx b/src/features/reader/components/overlay/progress-bar/variants/StandardReaderProgressBar.tsx similarity index 89% rename from src/modules/reader/components/overlay/progress-bar/variants/StandardReaderProgressBar.tsx rename to src/features/reader/components/overlay/progress-bar/variants/StandardReaderProgressBar.tsx index 6e2bbf1d..ad96e85b 100644 --- a/src/modules/reader/components/overlay/progress-bar/variants/StandardReaderProgressBar.tsx +++ b/src/features/reader/components/overlay/progress-bar/variants/StandardReaderProgressBar.tsx @@ -8,22 +8,22 @@ import { useTheme } from '@mui/material/styles'; import { memo, useCallback, useState } from 'react'; -import { ReaderProgressBar } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBar.tsx'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { IReaderSettings, ProgressBarType, TReaderScrollbarContext } from '@/modules/reader/types/Reader.types.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { getProgressBarPositionInfo } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; -import { ReaderProgressBarDirectionWrapper } from '@/modules/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx'; -import { ReaderProgressBarProps, TReaderProgressBarContext } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { useReaderProgressBarContext } from '@/modules/reader/contexts/ReaderProgressBarContext.tsx'; -import { useReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx'; -import { ReaderProgressBarSlotDesktop } from '@/modules/reader/components/overlay/progress-bar/desktop/ReaderProgressBarSlotDesktop.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { getProgressBarPosition } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; +import { ReaderProgressBar } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBar.tsx'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { IReaderSettings, ProgressBarType, TReaderScrollbarContext } from '@/features/reader/types/Reader.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { getProgressBarPositionInfo } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; +import { ReaderProgressBarDirectionWrapper } from '@/features/reader/components/overlay/progress-bar/ReaderProgressBarDirectionWrapper.tsx'; +import { ReaderProgressBarProps, TReaderProgressBarContext } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { useReaderProgressBarContext } from '@/features/reader/contexts/ReaderProgressBarContext.tsx'; +import { useReaderScrollbarContext } from '@/features/reader/contexts/ReaderScrollbarContext.tsx'; +import { ReaderProgressBarSlotDesktop } from '@/features/reader/components/overlay/progress-bar/desktop/ReaderProgressBarSlotDesktop.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { getProgressBarPosition } from '@/features/reader/utils/ReaderSettings.utils.tsx'; const BaseStandardReaderProgressBar = ({ readerNavBarWidth, diff --git a/src/modules/reader/components/settings/DefaultSettingFootnote.tsx b/src/features/reader/components/settings/DefaultSettingFootnote.tsx similarity index 92% rename from src/modules/reader/components/settings/DefaultSettingFootnote.tsx rename to src/features/reader/components/settings/DefaultSettingFootnote.tsx index af7d49f9..cf946d80 100644 --- a/src/modules/reader/components/settings/DefaultSettingFootnote.tsx +++ b/src/features/reader/components/settings/DefaultSettingFootnote.tsx @@ -9,7 +9,7 @@ import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; import { useTranslation } from 'react-i18next'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; export const DefaultSettingFootnote = ({ areDefaultSettings }: { areDefaultSettings?: boolean }) => { const { t } = useTranslation(); diff --git a/src/modules/reader/components/settings/ReaderSettings.tsx b/src/features/reader/components/settings/ReaderSettings.tsx similarity index 76% rename from src/modules/reader/components/settings/ReaderSettings.tsx rename to src/features/reader/components/settings/ReaderSettings.tsx index 17934d99..fe62cc4d 100644 --- a/src/modules/reader/components/settings/ReaderSettings.tsx +++ b/src/features/reader/components/settings/ReaderSettings.tsx @@ -10,12 +10,12 @@ import Dialog from '@mui/material/Dialog'; import DialogContent from '@mui/material/DialogContent'; import { useState } from 'react'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { ReaderSettingsTabs } from '@/modules/reader/components/settings/ReaderSettingsTabs.tsx'; -import { ReaderSettingTab } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { useDisableAllHotkeysWhileMounted } from '@/modules/hotkeys/Hotkeys.utils.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { ReaderSettingsTabs } from '@/features/reader/components/settings/ReaderSettingsTabs.tsx'; +import { ReaderSettingTab } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { useDisableAllHotkeysWhileMounted } from '@/features/hotkeys/Hotkeys.utils.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; export const ReaderSettings = ({ isOpen, close }: { isOpen: boolean; close: () => void }) => { const { manga } = useReaderStateMangaContext(); diff --git a/src/modules/reader/components/settings/ReaderSettingsTabs.tsx b/src/features/reader/components/settings/ReaderSettingsTabs.tsx similarity index 85% rename from src/modules/reader/components/settings/ReaderSettingsTabs.tsx rename to src/features/reader/components/settings/ReaderSettingsTabs.tsx index 2b9b2acb..f42c38f4 100644 --- a/src/modules/reader/components/settings/ReaderSettingsTabs.tsx +++ b/src/features/reader/components/settings/ReaderSettingsTabs.tsx @@ -9,22 +9,22 @@ import Box from '@mui/material/Box'; import Tab from '@mui/material/Tab'; import { useTranslation } from 'react-i18next'; -import { TabsMenu } from '@/modules/core/components/tabs/TabsMenu.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { IReaderSettings, IReaderSettingsWithDefaultFlag } from '@/modules/reader/types/Reader.types.ts'; -import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { READER_SETTING_TABS, ReaderSettingTab } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { TabPanel } from '@/modules/core/components/tabs/TabPanel.tsx'; -import { ReaderLayoutSettings } from '@/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx'; -import { ReaderGeneralSettings } from '@/modules/reader/components/settings/general/ReaderGeneralSettings.tsx'; -import { ReaderFilterSettings } from '@/modules/reader/components/settings/filters/ReaderFilterSettings.tsx'; -import { ReaderBehaviourSettings } from '@/modules/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx'; -import { ReaderDefaultLayoutSettings } from '@/modules/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx'; -import { ReaderHotkeysSettings } from '@/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx'; -import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; +import { TabsMenu } from '@/features/core/components/tabs/TabsMenu.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { IReaderSettings, IReaderSettingsWithDefaultFlag } from '@/features/reader/types/Reader.types.ts'; +import { useReaderTapZoneContext } from '@/features/reader/contexts/ReaderTapZoneContext.tsx'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { READER_SETTING_TABS, ReaderSettingTab } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { TabPanel } from '@/features/core/components/tabs/TabPanel.tsx'; +import { ReaderLayoutSettings } from '@/features/reader/components/settings/layout/ReaderLayoutSettings.tsx'; +import { ReaderGeneralSettings } from '@/features/reader/components/settings/general/ReaderGeneralSettings.tsx'; +import { ReaderFilterSettings } from '@/features/reader/components/settings/filters/ReaderFilterSettings.tsx'; +import { ReaderBehaviourSettings } from '@/features/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx'; +import { ReaderDefaultLayoutSettings } from '@/features/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx'; +import { ReaderHotkeysSettings } from '@/features/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx'; +import { TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; const BaseReaderSettingsTabs = ({ activeTab, diff --git a/src/modules/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx b/src/features/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx similarity index 89% rename from src/modules/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx rename to src/features/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx index 74fec5cb..d360c01a 100644 --- a/src/modules/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx +++ b/src/features/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx @@ -10,18 +10,18 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { IReaderSettingsWithDefaultFlag, ReaderSettingsTypeProps } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { ReaderSettingExitMode } from '@/modules/reader/components/settings/behaviour/ReaderSettingExitMode.tsx'; -import { isOffsetDoubleSpreadPagesEditable } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { IReaderSettingsWithDefaultFlag, ReaderSettingsTypeProps } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { ReaderSettingExitMode } from '@/features/reader/components/settings/behaviour/ReaderSettingExitMode.tsx'; +import { isOffsetDoubleSpreadPagesEditable } from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; import { DEFAULT_READER_SETTINGS, IMAGE_PRE_LOAD_AMOUNT, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ReaderSettingAutoScroll } from '@/modules/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx'; -import { ReaderSettingScrollAmount } from '@/modules/reader/components/settings/behaviour/ReaderSettingScrollAmount.tsx'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ReaderSettingAutoScroll } from '@/features/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx'; +import { ReaderSettingScrollAmount } from '@/features/reader/components/settings/behaviour/ReaderSettingScrollAmount.tsx'; export const ReaderBehaviourSettings = ({ settings, diff --git a/src/modules/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx b/src/features/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx similarity index 83% rename from src/modules/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx rename to src/features/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx index dbaab137..fba75991 100644 --- a/src/modules/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx +++ b/src/features/reader/components/settings/behaviour/ReaderSettingAutoScroll.tsx @@ -7,10 +7,10 @@ */ import { useTranslation } from 'react-i18next'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; -import { AUTO_SCROLL_SPEED, DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; +import { AUTO_SCROLL_SPEED, DEFAULT_READER_SETTINGS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderSettingAutoScroll = ({ autoScroll, diff --git a/src/modules/reader/components/settings/behaviour/ReaderSettingExitMode.tsx b/src/features/reader/components/settings/behaviour/ReaderSettingExitMode.tsx similarity index 82% rename from src/modules/reader/components/settings/behaviour/ReaderSettingExitMode.tsx rename to src/features/reader/components/settings/behaviour/ReaderSettingExitMode.tsx index a7222ba9..e5ae9c85 100644 --- a/src/modules/reader/components/settings/behaviour/ReaderSettingExitMode.tsx +++ b/src/features/reader/components/settings/behaviour/ReaderSettingExitMode.tsx @@ -7,9 +7,9 @@ */ import { useTranslation } from 'react-i18next'; -import { IReaderSettings, ReaderExitMode } from '@/modules/reader/types/Reader.types.ts'; -import { ValueToDisplayData } from '@/modules/core/Core.types.ts'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; +import { IReaderSettings, ReaderExitMode } from '@/features/reader/types/Reader.types.ts'; +import { ValueToDisplayData } from '@/features/core/Core.types.ts'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [ReaderExitMode.PREVIOUS]: { diff --git a/src/modules/reader/components/settings/behaviour/ReaderSettingScrollAmount.tsx b/src/features/reader/components/settings/behaviour/ReaderSettingScrollAmount.tsx similarity index 84% rename from src/modules/reader/components/settings/behaviour/ReaderSettingScrollAmount.tsx rename to src/features/reader/components/settings/behaviour/ReaderSettingScrollAmount.tsx index 19d11f22..e4831abe 100644 --- a/src/modules/reader/components/settings/behaviour/ReaderSettingScrollAmount.tsx +++ b/src/features/reader/components/settings/behaviour/ReaderSettingScrollAmount.tsx @@ -7,11 +7,11 @@ */ import { useTranslation } from 'react-i18next'; -import { IReaderSettings, ReaderScrollAmount } from '@/modules/reader/types/Reader.types.ts'; -import { ValueToDisplayData } from '@/modules/core/Core.types.ts'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; -import { DEFAULT_READER_SETTINGS, SCROLL_AMOUNT } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { IReaderSettings, ReaderScrollAmount } from '@/features/reader/types/Reader.types.ts'; +import { ValueToDisplayData } from '@/features/core/Core.types.ts'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; +import { DEFAULT_READER_SETTINGS, SCROLL_AMOUNT } from '@/features/reader/constants/ReaderSettings.constants.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [ReaderScrollAmount.TINY]: { diff --git a/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx b/src/features/reader/components/settings/filters/ReaderFilterSettings.tsx similarity index 77% rename from src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx rename to src/features/reader/components/settings/filters/ReaderFilterSettings.tsx index 504d9b1a..3938b23a 100644 --- a/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx +++ b/src/features/reader/components/settings/filters/ReaderFilterSettings.tsx @@ -7,16 +7,16 @@ */ import Stack from '@mui/material/Stack'; -import { ReaderSettingBrightness } from '@/modules/reader/components/settings/filters/ReaderSettingBrightness.tsx'; -import { ReaderSettingContrast } from '@/modules/reader/components/settings/filters/ReaderSettingContrast.tsx'; -import { ReaderSettingSaturate } from '@/modules/reader/components/settings/filters/ReaderSettingSaturate.tsx'; -import { ReaderSettingHue } from '@/modules/reader/components/settings/filters/ReaderSettingHue.tsx'; -import { ReaderSettingRGBA } from '@/modules/reader/components/settings/filters/ReaderSettingRGBA.tsx'; -import { ReaderSettingSepia } from '@/modules/reader/components/settings/filters/ReaderSettingSepia.tsx'; -import { ReaderSettingGrayscale } from '@/modules/reader/components/settings/filters/ReaderSettingGrayscale.tsx'; -import { ReaderSettingInvert } from '@/modules/reader/components/settings/filters/ReaderSettingInvert.tsx'; -import { ReaderSettingsTypeProps } from '@/modules/reader/types/Reader.types.ts'; -import { ResetButton } from '@/modules/core/components/buttons/ResetButton.tsx'; +import { ReaderSettingBrightness } from '@/features/reader/components/settings/filters/ReaderSettingBrightness.tsx'; +import { ReaderSettingContrast } from '@/features/reader/components/settings/filters/ReaderSettingContrast.tsx'; +import { ReaderSettingSaturate } from '@/features/reader/components/settings/filters/ReaderSettingSaturate.tsx'; +import { ReaderSettingHue } from '@/features/reader/components/settings/filters/ReaderSettingHue.tsx'; +import { ReaderSettingRGBA } from '@/features/reader/components/settings/filters/ReaderSettingRGBA.tsx'; +import { ReaderSettingSepia } from '@/features/reader/components/settings/filters/ReaderSettingSepia.tsx'; +import { ReaderSettingGrayscale } from '@/features/reader/components/settings/filters/ReaderSettingGrayscale.tsx'; +import { ReaderSettingInvert } from '@/features/reader/components/settings/filters/ReaderSettingInvert.tsx'; +import { ReaderSettingsTypeProps } from '@/features/reader/types/Reader.types.ts'; +import { ResetButton } from '@/features/core/components/buttons/ResetButton.tsx'; export const ReaderFilterSettings = ({ settings: { customFilter }, diff --git a/src/modules/reader/components/settings/filters/ReaderSettingBrightness.tsx b/src/features/reader/components/settings/filters/ReaderSettingBrightness.tsx similarity index 87% rename from src/modules/reader/components/settings/filters/ReaderSettingBrightness.tsx rename to src/features/reader/components/settings/filters/ReaderSettingBrightness.tsx index 8599cee7..bf533db5 100644 --- a/src/modules/reader/components/settings/filters/ReaderSettingBrightness.tsx +++ b/src/features/reader/components/settings/filters/ReaderSettingBrightness.tsx @@ -8,11 +8,11 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; -import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderSettingBrightness = ({ brightness, diff --git a/src/modules/reader/components/settings/filters/ReaderSettingContrast.tsx b/src/features/reader/components/settings/filters/ReaderSettingContrast.tsx similarity index 87% rename from src/modules/reader/components/settings/filters/ReaderSettingContrast.tsx rename to src/features/reader/components/settings/filters/ReaderSettingContrast.tsx index e60341d2..01bfde96 100644 --- a/src/modules/reader/components/settings/filters/ReaderSettingContrast.tsx +++ b/src/features/reader/components/settings/filters/ReaderSettingContrast.tsx @@ -8,10 +8,10 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; -import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; +import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderSettingContrast = ({ contrast, diff --git a/src/modules/reader/components/settings/filters/ReaderSettingGrayscale.tsx b/src/features/reader/components/settings/filters/ReaderSettingGrayscale.tsx similarity index 84% rename from src/modules/reader/components/settings/filters/ReaderSettingGrayscale.tsx rename to src/features/reader/components/settings/filters/ReaderSettingGrayscale.tsx index 10b757ab..0dcdbc61 100644 --- a/src/modules/reader/components/settings/filters/ReaderSettingGrayscale.tsx +++ b/src/features/reader/components/settings/filters/ReaderSettingGrayscale.tsx @@ -8,8 +8,8 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; export const ReaderSettingGrayscale = ({ grayscale, diff --git a/src/modules/reader/components/settings/filters/ReaderSettingHue.tsx b/src/features/reader/components/settings/filters/ReaderSettingHue.tsx similarity index 86% rename from src/modules/reader/components/settings/filters/ReaderSettingHue.tsx rename to src/features/reader/components/settings/filters/ReaderSettingHue.tsx index 814d47f0..db7f2bff 100644 --- a/src/modules/reader/components/settings/filters/ReaderSettingHue.tsx +++ b/src/features/reader/components/settings/filters/ReaderSettingHue.tsx @@ -8,10 +8,10 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; -import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; +import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderSettingHue = ({ hue, diff --git a/src/modules/reader/components/settings/filters/ReaderSettingInvert.tsx b/src/features/reader/components/settings/filters/ReaderSettingInvert.tsx similarity index 83% rename from src/modules/reader/components/settings/filters/ReaderSettingInvert.tsx rename to src/features/reader/components/settings/filters/ReaderSettingInvert.tsx index 7ed71e31..0bcb2150 100644 --- a/src/modules/reader/components/settings/filters/ReaderSettingInvert.tsx +++ b/src/features/reader/components/settings/filters/ReaderSettingInvert.tsx @@ -8,8 +8,8 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; export const ReaderSettingInvert = ({ invert, diff --git a/src/modules/reader/components/settings/filters/ReaderSettingRGBA.tsx b/src/features/reader/components/settings/filters/ReaderSettingRGBA.tsx similarity index 92% rename from src/modules/reader/components/settings/filters/ReaderSettingRGBA.tsx rename to src/features/reader/components/settings/filters/ReaderSettingRGBA.tsx index 87b234eb..b3dfc7bd 100644 --- a/src/modules/reader/components/settings/filters/ReaderSettingRGBA.tsx +++ b/src/features/reader/components/settings/filters/ReaderSettingRGBA.tsx @@ -8,18 +8,18 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; import { TranslationKey } from '@/Base.types.ts'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS, READER_BLEND_MODE_VALUE_TO_DISPLAY_DATA, READER_BLEND_MODE_VALUES, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; type RGBAType = Exclude; diff --git a/src/modules/reader/components/settings/filters/ReaderSettingSaturate.tsx b/src/features/reader/components/settings/filters/ReaderSettingSaturate.tsx similarity index 87% rename from src/modules/reader/components/settings/filters/ReaderSettingSaturate.tsx rename to src/features/reader/components/settings/filters/ReaderSettingSaturate.tsx index 6f7e4904..6ab07ec0 100644 --- a/src/modules/reader/components/settings/filters/ReaderSettingSaturate.tsx +++ b/src/features/reader/components/settings/filters/ReaderSettingSaturate.tsx @@ -8,10 +8,10 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; -import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; +import { CUSTOM_FILTER, DEFAULT_READER_SETTINGS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderSettingSaturate = ({ saturate, diff --git a/src/modules/reader/components/settings/filters/ReaderSettingSepia.tsx b/src/features/reader/components/settings/filters/ReaderSettingSepia.tsx similarity index 83% rename from src/modules/reader/components/settings/filters/ReaderSettingSepia.tsx rename to src/features/reader/components/settings/filters/ReaderSettingSepia.tsx index 209bb85a..128f2c62 100644 --- a/src/modules/reader/components/settings/filters/ReaderSettingSepia.tsx +++ b/src/features/reader/components/settings/filters/ReaderSettingSepia.tsx @@ -8,8 +8,8 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; export const ReaderSettingSepia = ({ sepia, diff --git a/src/modules/reader/components/settings/general/ReaderGeneralSettings.tsx b/src/features/reader/components/settings/general/ReaderGeneralSettings.tsx similarity index 75% rename from src/modules/reader/components/settings/general/ReaderGeneralSettings.tsx rename to src/features/reader/components/settings/general/ReaderGeneralSettings.tsx index 1f470eb9..762f1c26 100644 --- a/src/modules/reader/components/settings/general/ReaderGeneralSettings.tsx +++ b/src/features/reader/components/settings/general/ReaderGeneralSettings.tsx @@ -8,18 +8,18 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { ReaderSettingProgressBarType } from '@/modules/reader/components/settings/general/ReaderSettingProgressBarType.tsx'; -import { ReaderSettingProgressBarSize } from '@/modules/reader/components/settings/general/ReaderSettingProgressBarSize.tsx'; -import { ReaderSettingProgressBarPosition } from '@/modules/reader/components/settings/general/ReaderSettingProgressBarPosition.tsx'; +import { ReaderSettingProgressBarType } from '@/features/reader/components/settings/general/ReaderSettingProgressBarType.tsx'; +import { ReaderSettingProgressBarSize } from '@/features/reader/components/settings/general/ReaderSettingProgressBarSize.tsx'; +import { ReaderSettingProgressBarPosition } from '@/features/reader/components/settings/general/ReaderSettingProgressBarPosition.tsx'; import { IReaderSettings, ProgressBarType, ReaderOverlayMode, ReaderSettingsTypeProps, -} from '@/modules/reader/types/Reader.types.ts'; -import { ReaderSettingOverlayMode } from '@/modules/reader/components/settings/general/ReaderSettingOverlayMode.tsx'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { ReaderSettingBackgroundColor } from '@/modules/reader/components/settings/general/ReaderSettingBackgroundColor.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { ReaderSettingOverlayMode } from '@/features/reader/components/settings/general/ReaderSettingOverlayMode.tsx'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { ReaderSettingBackgroundColor } from '@/features/reader/components/settings/general/ReaderSettingBackgroundColor.tsx'; export const ReaderGeneralSettings = ({ overlayMode, diff --git a/src/modules/reader/components/settings/general/ReaderSettingBackgroundColor.tsx b/src/features/reader/components/settings/general/ReaderSettingBackgroundColor.tsx similarity index 88% rename from src/modules/reader/components/settings/general/ReaderSettingBackgroundColor.tsx rename to src/features/reader/components/settings/general/ReaderSettingBackgroundColor.tsx index a2e77cc6..ed9a816e 100644 --- a/src/modules/reader/components/settings/general/ReaderSettingBackgroundColor.tsx +++ b/src/features/reader/components/settings/general/ReaderSettingBackgroundColor.tsx @@ -7,9 +7,9 @@ */ import { useTranslation } from 'react-i18next'; -import { ValueToDisplayData } from '@/modules/core/Core.types.ts'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; -import { IReaderSettingsWithDefaultFlag, ReaderBackgroundColor } from '@/modules/reader/types/Reader.types.ts'; +import { ValueToDisplayData } from '@/features/core/Core.types.ts'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; +import { IReaderSettingsWithDefaultFlag, ReaderBackgroundColor } from '@/features/reader/types/Reader.types.ts'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [ReaderBackgroundColor.THEME]: { diff --git a/src/modules/reader/components/settings/general/ReaderSettingOverlayMode.tsx b/src/features/reader/components/settings/general/ReaderSettingOverlayMode.tsx similarity index 85% rename from src/modules/reader/components/settings/general/ReaderSettingOverlayMode.tsx rename to src/features/reader/components/settings/general/ReaderSettingOverlayMode.tsx index 2eec3611..6d882a49 100644 --- a/src/modules/reader/components/settings/general/ReaderSettingOverlayMode.tsx +++ b/src/features/reader/components/settings/general/ReaderSettingOverlayMode.tsx @@ -10,9 +10,9 @@ import { useTranslation } from 'react-i18next'; import PhoneIphoneIcon from '@mui/icons-material/PhoneIphone'; import ComputerIcon from '@mui/icons-material/Computer'; import AutoModeIcon from '@mui/icons-material/AutoMode'; -import { IReaderSettings, ReaderOverlayMode } from '@/modules/reader/types/Reader.types.ts'; -import { ValueToDisplayData } from '@/modules/core/Core.types.ts'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; +import { IReaderSettings, ReaderOverlayMode } from '@/features/reader/types/Reader.types.ts'; +import { ValueToDisplayData } from '@/features/core/Core.types.ts'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [ReaderOverlayMode.AUTO]: { diff --git a/src/modules/reader/components/settings/general/ReaderSettingProgressBarPosition.tsx b/src/features/reader/components/settings/general/ReaderSettingProgressBarPosition.tsx similarity index 93% rename from src/modules/reader/components/settings/general/ReaderSettingProgressBarPosition.tsx rename to src/features/reader/components/settings/general/ReaderSettingProgressBarPosition.tsx index 0bc3007c..55c5176d 100644 --- a/src/modules/reader/components/settings/general/ReaderSettingProgressBarPosition.tsx +++ b/src/features/reader/components/settings/general/ReaderSettingProgressBarPosition.tsx @@ -14,9 +14,9 @@ import { IReaderSettings, ProgressBarPosition, ProgressBarPositionAutoVertical, -} from '@/modules/reader/types/Reader.types.ts'; -import { ValueToDisplayData } from '@/modules/core/Core.types.ts'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { ValueToDisplayData } from '@/features/core/Core.types.ts'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [ProgressBarPosition.AUTO]: { diff --git a/src/modules/reader/components/settings/general/ReaderSettingProgressBarSize.tsx b/src/features/reader/components/settings/general/ReaderSettingProgressBarSize.tsx similarity index 87% rename from src/modules/reader/components/settings/general/ReaderSettingProgressBarSize.tsx rename to src/features/reader/components/settings/general/ReaderSettingProgressBarSize.tsx index ff20a115..46df8c3a 100644 --- a/src/modules/reader/components/settings/general/ReaderSettingProgressBarSize.tsx +++ b/src/features/reader/components/settings/general/ReaderSettingProgressBarSize.tsx @@ -7,9 +7,9 @@ */ import { useTranslation } from 'react-i18next'; -import { IReaderSettings, ProgressBarType, ReaderOverlayMode } from '@/modules/reader/types/Reader.types.ts'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; -import { AUTO_SCROLL_SPEED, DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { IReaderSettings, ProgressBarType, ReaderOverlayMode } from '@/features/reader/types/Reader.types.ts'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; +import { AUTO_SCROLL_SPEED, DEFAULT_READER_SETTINGS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderSettingProgressBarSize = ({ overlayMode, diff --git a/src/modules/reader/components/settings/general/ReaderSettingProgressBarType.tsx b/src/features/reader/components/settings/general/ReaderSettingProgressBarType.tsx similarity index 88% rename from src/modules/reader/components/settings/general/ReaderSettingProgressBarType.tsx rename to src/features/reader/components/settings/general/ReaderSettingProgressBarType.tsx index 7f57bda6..4b646bc5 100644 --- a/src/modules/reader/components/settings/general/ReaderSettingProgressBarType.tsx +++ b/src/features/reader/components/settings/general/ReaderSettingProgressBarType.tsx @@ -7,11 +7,11 @@ */ import { useTranslation } from 'react-i18next'; -import { IReaderSettings, ProgressBarType, ReaderOverlayMode } from '@/modules/reader/types/Reader.types.ts'; -import { ValueToDisplayData } from '@/modules/core/Core.types.ts'; +import { IReaderSettings, ProgressBarType, ReaderOverlayMode } from '@/features/reader/types/Reader.types.ts'; +import { ValueToDisplayData } from '@/features/core/Core.types.ts'; import { HiddenProgressBarIcon } from '@/assets/icons/svg/HiddenProgressBarIcon.tsx'; import { StandardProgressBarIcon } from '@/assets/icons/svg/StandardProgressBarIcon.tsx'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [ProgressBarType.HIDDEN]: { diff --git a/src/modules/reader/components/settings/hotkeys/Hotkey.tsx b/src/features/reader/components/settings/hotkeys/Hotkey.tsx similarity index 92% rename from src/modules/reader/components/settings/hotkeys/Hotkey.tsx rename to src/features/reader/components/settings/hotkeys/Hotkey.tsx index 82dee3e5..f84d1d47 100644 --- a/src/modules/reader/components/settings/hotkeys/Hotkey.tsx +++ b/src/features/reader/components/settings/hotkeys/Hotkey.tsx @@ -9,8 +9,8 @@ import { Fragment } from 'react'; import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { Kbd } from '@/modules/core/components/texts/Kbd.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { Kbd } from '@/features/core/components/texts/Kbd.tsx'; export const Hotkey = ({ keys, removeKey }: { keys: string[]; removeKey?: (key: string) => void }) => { const { t } = useTranslation(); diff --git a/src/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx b/src/features/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx similarity index 78% rename from src/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx rename to src/features/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx index f5fe813c..9b3ee26f 100644 --- a/src/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx +++ b/src/features/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx @@ -9,10 +9,10 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; import Typography from '@mui/material/Typography'; -import { ReaderSettingsTypeProps } from '@/modules/reader/types/Reader.types.ts'; -import { ReaderSettingHotkey } from '@/modules/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx'; -import { READER_HOTKEYS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ResetButton } from '@/modules/core/components/buttons/ResetButton.tsx'; +import { ReaderSettingsTypeProps } from '@/features/reader/types/Reader.types.ts'; +import { ReaderSettingHotkey } from '@/features/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx'; +import { READER_HOTKEYS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ResetButton } from '@/features/core/components/buttons/ResetButton.tsx'; export const ReaderHotkeysSettings = ({ settings, updateSetting, onDefault }: ReaderSettingsTypeProps) => { const { t } = useTranslation(); diff --git a/src/modules/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx b/src/features/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx similarity index 86% rename from src/modules/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx rename to src/features/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx index 7354da78..8cdb88b7 100644 --- a/src/modules/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx +++ b/src/features/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx @@ -12,13 +12,13 @@ import AddIcon from '@mui/icons-material/Add'; import Typography from '@mui/material/Typography'; import { bindTrigger, usePopupState } from 'material-ui-popup-state/hooks'; import IconButton from '@mui/material/IconButton'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ReaderHotkey } from '@/modules/reader/types/Reader.types.ts'; -import { DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ReaderHotkey } from '@/features/reader/types/Reader.types.ts'; +import { DEFAULT_READER_SETTINGS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; import { TranslationKey } from '@/Base.types.ts'; -import { RecordHotkey } from '@/modules/reader/components/settings/hotkeys/RecordHotkey.tsx'; -import { Hotkey } from '@/modules/reader/components/settings/hotkeys/Hotkey.tsx'; -import { ResetButton } from '@/modules/core/components/buttons/ResetButton.tsx'; +import { RecordHotkey } from '@/features/reader/components/settings/hotkeys/RecordHotkey.tsx'; +import { Hotkey } from '@/features/reader/components/settings/hotkeys/Hotkey.tsx'; +import { ResetButton } from '@/features/core/components/buttons/ResetButton.tsx'; const READER_HOTKEY_TO_TITLE: Record = { [ReaderHotkey.PREVIOUS_PAGE]: 'reader.settings.hotkey.previous_page', diff --git a/src/modules/reader/components/settings/hotkeys/RecordHotkey.tsx b/src/features/reader/components/settings/hotkeys/RecordHotkey.tsx similarity index 97% rename from src/modules/reader/components/settings/hotkeys/RecordHotkey.tsx rename to src/features/reader/components/settings/hotkeys/RecordHotkey.tsx index 5b821d76..7d09a55d 100644 --- a/src/modules/reader/components/settings/hotkeys/RecordHotkey.tsx +++ b/src/features/reader/components/settings/hotkeys/RecordHotkey.tsx @@ -16,7 +16,7 @@ import DialogContent from '@mui/material/DialogContent'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; import Typography from '@mui/material/Typography'; -import { Hotkey } from '@/modules/reader/components/settings/hotkeys/Hotkey.tsx'; +import { Hotkey } from '@/features/reader/components/settings/hotkeys/Hotkey.tsx'; export const RecordHotkey = ({ onClose, diff --git a/src/modules/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx b/src/features/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx similarity index 75% rename from src/modules/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx rename to src/features/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx index 5b73666d..ba175ac9 100644 --- a/src/modules/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx +++ b/src/features/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx @@ -9,14 +9,14 @@ import Stack from '@mui/material/Stack'; import { ComponentProps } from 'react'; import { useTranslation } from 'react-i18next'; -import { ReaderLayoutSettings } from '@/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx'; -import { ReaderSettingProfileSettings } from '@/modules/reader/components/settings/layout/profiles/ReaderSettingProfileSettings.tsx'; +import { ReaderLayoutSettings } from '@/features/reader/components/settings/layout/ReaderLayoutSettings.tsx'; +import { ReaderSettingProfileSettings } from '@/features/reader/components/settings/layout/profiles/ReaderSettingProfileSettings.tsx'; import { READING_MODE_VALUE_TO_DISPLAY_DATA, READING_MODE_VALUES, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ReaderSettingReadingMode } from '@/modules/reader/components/settings/layout/ReaderSettingReadingMode.tsx'; -import { IReaderSettingsWithDefaultFlag, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ReaderSettingReadingMode } from '@/features/reader/components/settings/layout/ReaderSettingReadingMode.tsx'; +import { IReaderSettingsWithDefaultFlag, ReadingMode } from '@/features/reader/types/Reader.types.ts'; export const ReaderDefaultLayoutSettings = ({ profiles = READING_MODE_VALUES, diff --git a/src/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx b/src/features/reader/components/settings/layout/ReaderLayoutSettings.tsx similarity index 76% rename from src/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx rename to src/features/reader/components/settings/layout/ReaderLayoutSettings.tsx index 7de1fb5c..03b0445e 100644 --- a/src/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx +++ b/src/features/reader/components/settings/layout/ReaderLayoutSettings.tsx @@ -10,18 +10,18 @@ import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; import Divider from '@mui/material/Divider'; import { useTranslation } from 'react-i18next'; -import { ReaderSettingReadingMode } from '@/modules/reader/components/settings/layout/ReaderSettingReadingMode.tsx'; -import { ReaderSettingReadingDirection } from '@/modules/reader/components/settings/layout/ReaderSettingReadingDirection.tsx'; -import { ReaderSettingTapZoneLayout } from '@/modules/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx'; -import { ReaderSettingTapZoneInvertMode } from '@/modules/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx'; -import { ReaderSettingPageScaleMode } from '@/modules/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx'; -import { ReaderSettingStretchPage } from '@/modules/reader/components/settings/layout/ReaderSettingStretchPage.tsx'; -import { ReaderSettingsTypeProps } from '@/modules/reader/types/Reader.types.ts'; -import { ReaderSettingPageGap } from '@/modules/reader/components/settings/layout/ReaderSettingPageGap.tsx'; -import { ReaderSettingWidth } from '@/modules/reader/components/settings/layout/ReaderSettingWidth.tsx'; -import { DefaultSettingFootnote } from '@/modules/reader/components/settings/DefaultSettingFootnote.tsx'; -import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; -import { ReaderDefaultLayoutSettings } from '@/modules/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx'; +import { ReaderSettingReadingMode } from '@/features/reader/components/settings/layout/ReaderSettingReadingMode.tsx'; +import { ReaderSettingReadingDirection } from '@/features/reader/components/settings/layout/ReaderSettingReadingDirection.tsx'; +import { ReaderSettingTapZoneLayout } from '@/features/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx'; +import { ReaderSettingTapZoneInvertMode } from '@/features/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx'; +import { ReaderSettingPageScaleMode } from '@/features/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx'; +import { ReaderSettingStretchPage } from '@/features/reader/components/settings/layout/ReaderSettingStretchPage.tsx'; +import { ReaderSettingsTypeProps } from '@/features/reader/types/Reader.types.ts'; +import { ReaderSettingPageGap } from '@/features/reader/components/settings/layout/ReaderSettingPageGap.tsx'; +import { ReaderSettingWidth } from '@/features/reader/components/settings/layout/ReaderSettingWidth.tsx'; +import { DefaultSettingFootnote } from '@/features/reader/components/settings/DefaultSettingFootnote.tsx'; +import { TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; +import { ReaderDefaultLayoutSettings } from '@/features/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx'; export const ReaderLayoutSettings = ({ setShowPreview, diff --git a/src/modules/reader/components/settings/layout/ReaderSettingPageGap.tsx b/src/features/reader/components/settings/layout/ReaderSettingPageGap.tsx similarity index 81% rename from src/modules/reader/components/settings/layout/ReaderSettingPageGap.tsx rename to src/features/reader/components/settings/layout/ReaderSettingPageGap.tsx index 139db168..591304d2 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingPageGap.tsx +++ b/src/features/reader/components/settings/layout/ReaderSettingPageGap.tsx @@ -7,11 +7,11 @@ */ import { useTranslation } from 'react-i18next'; -import { IReaderSettings, IReaderSettingsWithDefaultFlag, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; -import { DEFAULT_READER_SETTINGS, PAGE_GAP } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { isContinuousReadingMode } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { MultiValueButtonDefaultableProps } from '@/modules/core/Core.types.ts'; +import { IReaderSettings, IReaderSettingsWithDefaultFlag, ReadingMode } from '@/features/reader/types/Reader.types.ts'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; +import { DEFAULT_READER_SETTINGS, PAGE_GAP } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { isContinuousReadingMode } from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { MultiValueButtonDefaultableProps } from '@/features/core/Core.types.ts'; export const ReaderSettingPageGap = ({ pageGap, diff --git a/src/modules/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx b/src/features/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx similarity index 82% rename from src/modules/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx rename to src/features/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx index aa6e4ddb..ab3f05ff 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx +++ b/src/features/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx @@ -11,13 +11,13 @@ import { IReaderSettings, IReaderSettingsWithDefaultFlag, ReadingDirection, -} from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/types/Reader.types.ts'; import { PAGE_SCALE_VALUE_TO_DISPLAY_DATA, READER_PAGE_SCALE_MODE_VALUES, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; -import { MultiValueButtonDefaultableProps } from '@/modules/core/Core.types.ts'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; +import { MultiValueButtonDefaultableProps } from '@/features/core/Core.types.ts'; export const ReaderSettingPageScaleMode = ({ pageScaleMode, diff --git a/src/modules/reader/components/settings/layout/ReaderSettingReadingDirection.tsx b/src/features/reader/components/settings/layout/ReaderSettingReadingDirection.tsx similarity index 91% rename from src/modules/reader/components/settings/layout/ReaderSettingReadingDirection.tsx rename to src/features/reader/components/settings/layout/ReaderSettingReadingDirection.tsx index 6d08fd60..c0b95550 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingReadingDirection.tsx +++ b/src/features/reader/components/settings/layout/ReaderSettingReadingDirection.tsx @@ -9,9 +9,9 @@ import ArrowCircleLeftIcon from '@mui/icons-material/ArrowCircleLeft'; import ArrowCircleRightIcon from '@mui/icons-material/ArrowCircleRight'; import { useTranslation } from 'react-i18next'; -import { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/modules/reader/types/Reader.types.ts'; -import { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/modules/core/Core.types.ts'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; +import { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/features/reader/types/Reader.types.ts'; +import { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/features/core/Core.types.ts'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [ReadingDirection.LTR]: { diff --git a/src/modules/reader/components/settings/layout/ReaderSettingReadingMode.tsx b/src/features/reader/components/settings/layout/ReaderSettingReadingMode.tsx similarity index 77% rename from src/modules/reader/components/settings/layout/ReaderSettingReadingMode.tsx rename to src/features/reader/components/settings/layout/ReaderSettingReadingMode.tsx index e4274a5c..45547efa 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingReadingMode.tsx +++ b/src/features/reader/components/settings/layout/ReaderSettingReadingMode.tsx @@ -7,13 +7,13 @@ */ import { useTranslation } from 'react-i18next'; -import { IReaderSettingsWithDefaultFlag, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; +import { IReaderSettingsWithDefaultFlag, ReadingMode } from '@/features/reader/types/Reader.types.ts'; import { READING_MODE_VALUE_TO_DISPLAY_DATA, READING_MODE_VALUES, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; -import { MultiValueButtonDefaultableProps } from '@/modules/core/Core.types.ts'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; +import { MultiValueButtonDefaultableProps } from '@/features/core/Core.types.ts'; export const ReaderSettingReadingMode = ({ readingMode, diff --git a/src/modules/reader/components/settings/layout/ReaderSettingStretchPage.tsx b/src/features/reader/components/settings/layout/ReaderSettingStretchPage.tsx similarity index 85% rename from src/modules/reader/components/settings/layout/ReaderSettingStretchPage.tsx rename to src/features/reader/components/settings/layout/ReaderSettingStretchPage.tsx index 1584e84c..1d6d7b36 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingStretchPage.tsx +++ b/src/features/reader/components/settings/layout/ReaderSettingStretchPage.tsx @@ -9,8 +9,8 @@ import { useTranslation } from 'react-i18next'; import Button from '@mui/material/Button'; import Box from '@mui/material/Box'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { READER_PAGE_SCALE_MODE_TO_SCALING_ALLOWED } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { READER_PAGE_SCALE_MODE_TO_SCALING_ALLOWED } from '@/features/reader/constants/ReaderSettings.constants.tsx'; export const ReaderSettingStretchPage = ({ pageScaleMode, diff --git a/src/modules/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx b/src/features/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx similarity index 92% rename from src/modules/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx rename to src/features/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx index f00be618..2d2951a0 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx +++ b/src/features/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx @@ -7,14 +7,14 @@ */ import { useTranslation } from 'react-i18next'; -import { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/modules/core/Core.types.ts'; +import { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/features/core/Core.types.ts'; import { IReaderSettings, IReaderSettingsWithDefaultFlag, ReadingDirection, -} from '@/modules/reader/types/Reader.types.ts'; -import { TapZoneInvertMode } from '@/modules/reader/types/TapZoneLayout.types.ts'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { TapZoneInvertMode } from '@/features/reader/types/TapZoneLayout.types.ts'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; enum TapZonesInvertOption { NONE, diff --git a/src/modules/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx b/src/features/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx similarity index 88% rename from src/modules/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx rename to src/features/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx index 7d3524e3..c386ad2b 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx +++ b/src/features/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx @@ -7,10 +7,10 @@ */ import { useTranslation } from 'react-i18next'; -import { TapZoneLayouts } from '@/modules/reader/types/TapZoneLayout.types.ts'; -import { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/modules/core/Core.types.ts'; -import { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/modules/reader/types/Reader.types.ts'; -import { ButtonSelectInput } from '@/modules/core/components/inputs/ButtonSelectInput.tsx'; +import { TapZoneLayouts } from '@/features/reader/types/TapZoneLayout.types.ts'; +import { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/features/core/Core.types.ts'; +import { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/features/reader/types/Reader.types.ts'; +import { ButtonSelectInput } from '@/features/core/components/inputs/ButtonSelectInput.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [TapZoneLayouts.EDGE]: { diff --git a/src/modules/reader/components/settings/layout/ReaderSettingWidth.tsx b/src/features/reader/components/settings/layout/ReaderSettingWidth.tsx similarity index 79% rename from src/modules/reader/components/settings/layout/ReaderSettingWidth.tsx rename to src/features/reader/components/settings/layout/ReaderSettingWidth.tsx index ce69ac71..71287008 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingWidth.tsx +++ b/src/features/reader/components/settings/layout/ReaderSettingWidth.tsx @@ -8,14 +8,14 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { SliderInput } from '@/modules/core/components/inputs/SliderInput.tsx'; -import { DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { isReaderWidthEditable } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { MultiValueButtonDefaultableProps } from '@/modules/core/Core.types.ts'; -import { ResetButton } from '@/modules/core/components/buttons/ResetButton.tsx'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { SliderInput } from '@/features/core/components/inputs/SliderInput.tsx'; +import { DEFAULT_READER_SETTINGS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { isReaderWidthEditable } from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { MultiValueButtonDefaultableProps } from '@/features/core/Core.types.ts'; +import { ResetButton } from '@/features/core/components/buttons/ResetButton.tsx'; export const ReaderSettingWidth = ({ readerWidth, diff --git a/src/modules/reader/components/settings/layout/profiles/ReaderSettingProfileSettings.tsx b/src/features/reader/components/settings/layout/profiles/ReaderSettingProfileSettings.tsx similarity index 85% rename from src/modules/reader/components/settings/layout/profiles/ReaderSettingProfileSettings.tsx rename to src/features/reader/components/settings/layout/profiles/ReaderSettingProfileSettings.tsx index 5e16407c..298e6dbf 100644 --- a/src/modules/reader/components/settings/layout/profiles/ReaderSettingProfileSettings.tsx +++ b/src/features/reader/components/settings/layout/profiles/ReaderSettingProfileSettings.tsx @@ -10,9 +10,9 @@ import Stack from '@mui/material/Stack'; import ListSubheader from '@mui/material/ListSubheader'; import { ComponentProps, useMemo } from 'react'; import Typography from '@mui/material/Typography'; -import { ReaderLayoutSettings } from '@/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx'; -import { useDefaultReaderSettingsWithDefaultFlag } from '@/modules/reader/services/ReaderSettingsMetadata.ts'; -import { ReadingMode } from '@/modules/reader/types/Reader.types.ts'; +import { ReaderLayoutSettings } from '@/features/reader/components/settings/layout/ReaderLayoutSettings.tsx'; +import { useDefaultReaderSettingsWithDefaultFlag } from '@/features/reader/services/ReaderSettingsMetadata.ts'; +import { ReadingMode } from '@/features/reader/types/Reader.types.ts'; export const ReaderSettingProfileSettings = ({ profile, diff --git a/src/modules/reader/components/viewer/ReaderChapterViewer.tsx b/src/features/reader/components/viewer/ReaderChapterViewer.tsx similarity index 92% rename from src/modules/reader/components/viewer/ReaderChapterViewer.tsx rename to src/features/reader/components/viewer/ReaderChapterViewer.tsx index 53b4b8a1..519b5437 100644 --- a/src/modules/reader/components/viewer/ReaderChapterViewer.tsx +++ b/src/features/reader/components/viewer/ReaderChapterViewer.tsx @@ -20,33 +20,33 @@ import { ReaderTransitionPageMode, ReadingDirection, ReadingMode, -} from '@/modules/reader/types/Reader.types.ts'; -import { getDoublePageModePages } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; +} from '@/features/reader/types/Reader.types.ts'; +import { getDoublePageModePages } from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; import { getPagerForReadingMode, isContinuousReadingMode, isContinuousVerticalReadingMode, shouldApplyReaderWidth, -} from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +} from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; import { createHandleReaderPageLoadError, createUpdateReaderPageLoadState, -} from '@/modules/reader/utils/Reader.utils.ts'; -import { useReaderConvertPagesForReadingMode } from '@/modules/reader/hooks/useReaderConvertPagesForReadingMode.ts'; -import { ReaderTransitionPage } from '@/modules/reader/components/viewer/ReaderTransitionPage.tsx'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { READER_STATE_PAGES_DEFAULTS } from '@/modules/reader/constants/ReaderContext.constants.ts'; +} from '@/features/reader/utils/Reader.utils.ts'; +import { useReaderConvertPagesForReadingMode } from '@/features/reader/hooks/useReaderConvertPagesForReadingMode.ts'; +import { ReaderTransitionPage } from '@/features/reader/components/viewer/ReaderTransitionPage.tsx'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { READER_STATE_PAGES_DEFAULTS } from '@/features/reader/constants/ReaderContext.constants.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { useReaderSetPagesState } from '@/modules/reader/hooks/useReaderSetPagesState.ts'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { useReaderSetPagesState } from '@/features/reader/hooks/useReaderSetPagesState.ts'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { getErrorMessage, noOp } from '@/lib/HelperFunctions.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { ReaderInfiniteScrollUpdateChapter } from '@/modules/reader/components/viewer/ReaderInfiniteScrollUpdateChapter.tsx'; -import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { ReaderInfiniteScrollUpdateChapter } from '@/features/reader/components/viewer/ReaderInfiniteScrollUpdateChapter.tsx'; +import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; const BaseReaderChapterViewer = ({ currentPageIndex, diff --git a/src/modules/reader/components/viewer/ReaderInfiniteScrollUpdateChapter.tsx b/src/features/reader/components/viewer/ReaderInfiniteScrollUpdateChapter.tsx similarity index 82% rename from src/modules/reader/components/viewer/ReaderInfiniteScrollUpdateChapter.tsx rename to src/features/reader/components/viewer/ReaderInfiniteScrollUpdateChapter.tsx index f4046302..f8643626 100644 --- a/src/modules/reader/components/viewer/ReaderInfiniteScrollUpdateChapter.tsx +++ b/src/features/reader/components/viewer/ReaderInfiniteScrollUpdateChapter.tsx @@ -7,12 +7,12 @@ */ import { memo } from 'react'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderInfiniteScrollUpdateChapter } from '@/modules/reader/hooks/useReaderInfiniteScrollUpdateChapter.ts'; -import { IReaderSettings, TReaderScrollbarContext } from '@/modules/reader/types/Reader.types.ts'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderInfiniteScrollUpdateChapter } from '@/features/reader/hooks/useReaderInfiniteScrollUpdateChapter.ts'; +import { IReaderSettings, TReaderScrollbarContext } from '@/features/reader/types/Reader.types.ts'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; const BaseReaderInfiniteScrollUpdateChapter = ({ readingMode, diff --git a/src/modules/reader/components/viewer/ReaderPage.tsx b/src/features/reader/components/viewer/ReaderPage.tsx similarity index 92% rename from src/modules/reader/components/viewer/ReaderPage.tsx rename to src/features/reader/components/viewer/ReaderPage.tsx index 0caf1adc..fb012734 100644 --- a/src/modules/reader/components/viewer/ReaderPage.tsx +++ b/src/features/reader/components/viewer/ReaderPage.tsx @@ -7,21 +7,21 @@ */ import { memo, useCallback } from 'react'; -import { SpinnerImage, SpinnerImageProps } from '@/modules/core/components/SpinnerImage.tsx'; +import { SpinnerImage, SpinnerImageProps } from '@/features/core/components/SpinnerImage.tsx'; import { IReaderSettings, ReaderCustomFilter, ReaderPagerProps, TReaderScrollbarContext, -} from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/types/Reader.types.ts'; import { getImageMarginStyling, getImagePlaceholderStyling, getReaderImageStyling, -} from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; +} from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; const getCustomFilterString = (customFilter: ReaderCustomFilter): string => Object.keys(customFilter) diff --git a/src/modules/reader/components/viewer/ReaderTransitionPage.tsx b/src/features/reader/components/viewer/ReaderTransitionPage.tsx similarity index 89% rename from src/modules/reader/components/viewer/ReaderTransitionPage.tsx rename to src/features/reader/components/viewer/ReaderTransitionPage.tsx index 369a4243..1142a536 100644 --- a/src/modules/reader/components/viewer/ReaderTransitionPage.tsx +++ b/src/features/reader/components/viewer/ReaderTransitionPage.tsx @@ -13,34 +13,34 @@ import Button from '@mui/material/Button'; import { Link } from 'react-router-dom'; import { ComponentProps, memo, useMemo } from 'react'; import { alpha, useTheme } from '@mui/material/styles'; -import { useReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { useReaderScrollbarContext } from '@/features/reader/contexts/ReaderScrollbarContext.tsx'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; import { IReaderSettings, ReaderTransitionPageMode, ReadingMode, TReaderScrollbarContext, TReaderStateMangaContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { isTransitionPageVisible } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { useBackButton } from '@/modules/core/hooks/useBackButton.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; +} from '@/features/reader/types/Reader.types.ts'; +import { isTransitionPageVisible } from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { useBackButton } from '@/features/core/hooks/useBackButton.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; import { isContinuousReadingMode, isContinuousVerticalReadingMode, -} from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; +} from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; import { getValueFromObject, noOp } from '@/lib/HelperFunctions.ts'; -import { READER_BACKGROUND_TO_COLOR } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { READER_BACKGROUND_TO_COLOR } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; import { ChapterType } from '@/lib/graphql/generated/graphql.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; const ChapterInfo = ({ title, diff --git a/src/modules/reader/components/viewer/ReaderViewer.tsx b/src/features/reader/components/viewer/ReaderViewer.tsx similarity index 88% rename from src/modules/reader/components/viewer/ReaderViewer.tsx rename to src/features/reader/components/viewer/ReaderViewer.tsx index b462e127..cdd3a773 100644 --- a/src/modules/reader/components/viewer/ReaderViewer.tsx +++ b/src/features/reader/components/viewer/ReaderViewer.tsx @@ -21,7 +21,7 @@ import Stack from '@mui/material/Stack'; import { useTheme } from '@mui/material/styles'; import { useLocation } from 'react-router-dom'; import { useMergedRef } from '@mantine/hooks'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; import { IReaderSettings, PageInViewportType, @@ -31,44 +31,44 @@ import { ReadingDirection, ReadingMode, TReaderScrollbarContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { useReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; +} from '@/features/reader/types/Reader.types.ts'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { useReaderScrollbarContext } from '@/features/reader/contexts/ReaderScrollbarContext.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; import { isContinuousReadingMode, isContinuousVerticalReadingMode, shouldApplyReaderWidth, -} from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { useMouseDragScroll } from '@/modules/core/hooks/useMouseDragScroll.tsx'; -import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { TReaderOverlayContext } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderAutoScrollContext } from '@/modules/reader/contexts/ReaderAutoScrollContext.tsx'; -import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; -import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; -import { useReaderAutoScroll } from '@/modules/reader/hooks/useReaderAutoScroll.ts'; -import { useReaderHideOverlayOnUserScroll } from '@/modules/reader/hooks/useReaderHideOverlayOnUserScroll.ts'; -import { useReaderHorizontalModeInvertXYScrolling } from '@/modules/reader/hooks/useReaderHorizontalModeInvertXYScrolling.ts'; -import { useReaderHideCursorOnInactivity } from '@/modules/reader/hooks/useReaderHideCursorOnInactivity.ts'; -import { useReaderScrollToStartOnPageChange } from '@/modules/reader/hooks/useReaderScrollToStartOnPageChange.ts'; -import { useReaderHandlePageSelection } from '@/modules/reader/hooks/useReaderHandlePageSelection.ts'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { ReaderChapterViewer } from '@/modules/reader/components/viewer/ReaderChapterViewer.tsx'; +} from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { useMouseDragScroll } from '@/features/core/hooks/useMouseDragScroll.tsx'; +import { useReaderOverlayContext } from '@/features/reader/contexts/ReaderOverlayContext.tsx'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { TReaderOverlayContext } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderAutoScrollContext } from '@/features/reader/contexts/ReaderAutoScrollContext.tsx'; +import { TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; +import { useReaderTapZoneContext } from '@/features/reader/contexts/ReaderTapZoneContext.tsx'; +import { useReaderAutoScroll } from '@/features/reader/hooks/useReaderAutoScroll.ts'; +import { useReaderHideOverlayOnUserScroll } from '@/features/reader/hooks/useReaderHideOverlayOnUserScroll.ts'; +import { useReaderHorizontalModeInvertXYScrolling } from '@/features/reader/hooks/useReaderHorizontalModeInvertXYScrolling.ts'; +import { useReaderHideCursorOnInactivity } from '@/features/reader/hooks/useReaderHideCursorOnInactivity.ts'; +import { useReaderScrollToStartOnPageChange } from '@/features/reader/hooks/useReaderScrollToStartOnPageChange.ts'; +import { useReaderHandlePageSelection } from '@/features/reader/hooks/useReaderHandlePageSelection.ts'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { ReaderChapterViewer } from '@/features/reader/components/viewer/ReaderChapterViewer.tsx'; import { getPreviousNextChapterVisibility, getReaderChapterViewerCurrentPageIndex, getReaderChapterViewResumeMode, -} from '@/modules/reader/utils/Reader.utils.ts'; +} from '@/features/reader/utils/Reader.utils.ts'; import { coerceIn, noOp } from '@/lib/HelperFunctions.ts'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { useReaderPreserveScrollPosition } from '@/modules/reader/hooks/useReaderPreserveScrollPosition.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { useReaderPreserveScrollPosition } from '@/features/reader/hooks/useReaderPreserveScrollPosition.ts'; -import { ChapterIdInfo } from '@/modules/chapter/Chapter.types.ts'; +import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts'; const READING_MODE_TO_IN_VIEWPORT_TYPE: Record = { [ReadingMode.SINGLE_PAGE]: PageInViewportType.X, diff --git a/src/modules/reader/components/viewer/pager/BasePager.tsx b/src/features/reader/components/viewer/pager/BasePager.tsx similarity index 94% rename from src/modules/reader/components/viewer/pager/BasePager.tsx rename to src/features/reader/components/viewer/pager/BasePager.tsx index 00c488e7..f53405eb 100644 --- a/src/modules/reader/components/viewer/pager/BasePager.tsx +++ b/src/features/reader/components/viewer/pager/BasePager.tsx @@ -8,16 +8,16 @@ import { forwardRef, memo, ReactNode, useCallback, useEffect, useMemo, useRef } from 'react'; import Box, { BoxProps } from '@mui/material/Box'; -import { getPageIndexesToLoad, isATransitionPageVisible } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { getPageIndexesToLoad, isATransitionPageVisible } from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; import { IReaderSettings, ReaderPagerProps, ReaderResumeMode, ReaderTransitionPageMode, -} from '@/modules/reader/types/Reader.types.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { isContinuousReadingMode } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { isContinuousReadingMode } from '@/features/reader/utils/ReaderSettings.utils.tsx'; const getPreviousCurrentPageIndex = (resumeMode: ReaderResumeMode): number => resumeMode === ReaderResumeMode.END ? Number.MAX_SAFE_INTEGER : -1; diff --git a/src/modules/reader/components/viewer/pager/ReaderDoublePagedPager.tsx b/src/features/reader/components/viewer/pager/ReaderDoublePagedPager.tsx similarity index 93% rename from src/modules/reader/components/viewer/pager/ReaderDoublePagedPager.tsx rename to src/features/reader/components/viewer/pager/ReaderDoublePagedPager.tsx index e40e35ea..6e4ccd5f 100644 --- a/src/modules/reader/components/viewer/pager/ReaderDoublePagedPager.tsx +++ b/src/features/reader/components/viewer/pager/ReaderDoublePagedPager.tsx @@ -8,16 +8,16 @@ import { Direction, useTheme } from '@mui/material/styles'; import { forwardRef, Fragment, memo, useMemo } from 'react'; -import { BasePager } from '@/modules/reader/components/viewer/pager/BasePager.tsx'; +import { BasePager } from '@/features/reader/components/viewer/pager/BasePager.tsx'; import { IReaderSettings, ReaderPagerProps, ReaderPageScaleMode, ReadingDirection, -} from '@/modules/reader/types/Reader.types.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { createReaderPage } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { getNextIndexFromPage, getPage } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { createReaderPage } from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { getNextIndexFromPage, getPage } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; const getPagePosition = ( pageType: 'first' | 'second', diff --git a/src/modules/reader/components/viewer/pager/ReaderHorizontalPager.tsx b/src/features/reader/components/viewer/pager/ReaderHorizontalPager.tsx similarity index 90% rename from src/modules/reader/components/viewer/pager/ReaderHorizontalPager.tsx rename to src/features/reader/components/viewer/pager/ReaderHorizontalPager.tsx index 38b28835..99792185 100644 --- a/src/modules/reader/components/viewer/pager/ReaderHorizontalPager.tsx +++ b/src/features/reader/components/viewer/pager/ReaderHorizontalPager.tsx @@ -8,10 +8,10 @@ import { useTheme } from '@mui/material/styles'; import { forwardRef, memo } from 'react'; -import { BasePager } from '@/modules/reader/components/viewer/pager/BasePager.tsx'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { IReaderSettings, ReaderPagerProps, ReadingDirection } from '@/modules/reader/types/Reader.types.ts'; -import { createReaderPage } from '@/modules/reader/utils/ReaderPager.utils.tsx'; +import { BasePager } from '@/features/reader/components/viewer/pager/BasePager.tsx'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { IReaderSettings, ReaderPagerProps, ReadingDirection } from '@/features/reader/types/Reader.types.ts'; +import { createReaderPage } from '@/features/reader/utils/ReaderPager.utils.tsx'; const BaseReaderHorizontalPager = forwardRef< HTMLDivElement, diff --git a/src/modules/reader/components/viewer/pager/ReaderPagedPager.tsx b/src/features/reader/components/viewer/pager/ReaderPagedPager.tsx similarity index 87% rename from src/modules/reader/components/viewer/pager/ReaderPagedPager.tsx rename to src/features/reader/components/viewer/pager/ReaderPagedPager.tsx index 66e5a374..49938d4e 100644 --- a/src/modules/reader/components/viewer/pager/ReaderPagedPager.tsx +++ b/src/features/reader/components/viewer/pager/ReaderPagedPager.tsx @@ -7,9 +7,9 @@ */ import { forwardRef, memo } from 'react'; -import { BasePager } from '@/modules/reader/components/viewer/pager/BasePager.tsx'; -import { ReaderPagerProps } from '@/modules/reader/types/Reader.types.ts'; -import { createReaderPage } from '@/modules/reader/utils/ReaderPager.utils.tsx'; +import { BasePager } from '@/features/reader/components/viewer/pager/BasePager.tsx'; +import { ReaderPagerProps } from '@/features/reader/types/Reader.types.ts'; +import { createReaderPage } from '@/features/reader/utils/ReaderPager.utils.tsx'; const BaseReaderPagedPager = forwardRef( ({ onLoad, onError, pageLoadStates, retryFailedPagesKeyPrefix, isPreloadMode, ...props }, ref) => { diff --git a/src/modules/reader/components/viewer/pager/ReaderVerticalPager.tsx b/src/features/reader/components/viewer/pager/ReaderVerticalPager.tsx similarity index 87% rename from src/modules/reader/components/viewer/pager/ReaderVerticalPager.tsx rename to src/features/reader/components/viewer/pager/ReaderVerticalPager.tsx index 9f857c8e..5ba137bf 100644 --- a/src/modules/reader/components/viewer/pager/ReaderVerticalPager.tsx +++ b/src/features/reader/components/viewer/pager/ReaderVerticalPager.tsx @@ -7,9 +7,9 @@ */ import { forwardRef, memo } from 'react'; -import { BasePager } from '@/modules/reader/components/viewer/pager/BasePager.tsx'; -import { ReaderPagerProps, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; -import { createReaderPage } from '@/modules/reader/utils/ReaderPager.utils.tsx'; +import { BasePager } from '@/features/reader/components/viewer/pager/BasePager.tsx'; +import { ReaderPagerProps, ReadingMode } from '@/features/reader/types/Reader.types.ts'; +import { createReaderPage } from '@/features/reader/utils/ReaderPager.utils.tsx'; const BaseReaderVerticalPager = forwardRef( ({ onLoad, onError, pageLoadStates, retryFailedPagesKeyPrefix, isPreloadMode, ...props }, ref) => { diff --git a/src/modules/reader/constants/ReaderContext.constants.ts b/src/features/reader/constants/ReaderContext.constants.ts similarity index 78% rename from src/modules/reader/constants/ReaderContext.constants.ts rename to src/features/reader/constants/ReaderContext.constants.ts index 7075c57f..05201048 100644 --- a/src/modules/reader/constants/ReaderContext.constants.ts +++ b/src/features/reader/constants/ReaderContext.constants.ts @@ -6,9 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { ReaderTransitionPageMode } from '@/modules/reader/types/Reader.types.ts'; -import { createPageData } from '@/modules/reader/utils/ReaderPager.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { ReaderTransitionPageMode } from '@/features/reader/types/Reader.types.ts'; +import { createPageData } from '@/features/reader/utils/ReaderPager.utils.tsx'; export const READER_STATE_PAGES_DEFAULTS: ReaderStatePages = { totalPages: 0, diff --git a/src/modules/reader/constants/ReaderSettings.constants.tsx b/src/features/reader/constants/ReaderSettings.constants.tsx similarity index 98% rename from src/modules/reader/constants/ReaderSettings.constants.tsx rename to src/features/reader/constants/ReaderSettings.constants.tsx index ba93977c..1a57ee7b 100644 --- a/src/modules/reader/constants/ReaderSettings.constants.tsx +++ b/src/features/reader/constants/ReaderSettings.constants.tsx @@ -13,7 +13,7 @@ import ExpandIcon from '@mui/icons-material/Expand'; import CropOriginalIcon from '@mui/icons-material/CropOriginal'; import { TooltipProps } from '@mui/material/Tooltip'; import { Direction } from '@mui/material/styles'; -import { ScrollDirection, ValueToDisplayData } from '@/modules/core/Core.types.ts'; +import { ScrollDirection, ValueToDisplayData } from '@/features/core/Core.types.ts'; import { IReaderSettings, IReaderSettingsGlobal, @@ -28,13 +28,13 @@ import { ReaderScrollAmount, ReadingDirection, ReadingMode, -} from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/types/Reader.types.ts'; import { SinglePageIcon } from '@/assets/icons/svg/SinglePageIcon.tsx'; import { DoublePageIcon } from '@/assets/icons/svg/DoublePageIcon.tsx'; import { ContinuousVerticalPageIcon } from '@/assets/icons/svg/ContinuousVerticalPageIcon.tsx'; import { ContinuousHorizontalPageIcon } from '@/assets/icons/svg/ContinuousHorizontalPageIcon.tsx'; import { TranslationKey } from '@/Base.types.ts'; -import { TapZoneLayouts } from '@/modules/reader/types/TapZoneLayout.types.ts'; +import { TapZoneLayouts } from '@/features/reader/types/TapZoneLayout.types.ts'; import { WebtoonPageIcon } from '@/assets/icons/svg/WebtoonPageIcon.tsx'; export const AUTO_SCROLL_SPEED = { diff --git a/src/modules/reader/constants/ReaderTapZone.constants.ts b/src/features/reader/constants/ReaderTapZone.constants.ts similarity index 98% rename from src/modules/reader/constants/ReaderTapZone.constants.ts rename to src/features/reader/constants/ReaderTapZone.constants.ts index d8ee9bac..d2280de6 100644 --- a/src/modules/reader/constants/ReaderTapZone.constants.ts +++ b/src/features/reader/constants/ReaderTapZone.constants.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { TapZoneLayouts, TapZoneRegion, TapZoneRegionType } from '@/modules/reader/types/TapZoneLayout.types.ts'; +import { TapZoneLayouts, TapZoneRegion, TapZoneRegionType } from '@/features/reader/types/TapZoneLayout.types.ts'; import { TranslationKey } from '@/Base.types.ts'; export const READER_TAP_ZONE_LAYOUTS: Record = { diff --git a/src/modules/reader/contexts/ReaderAutoScrollContext.tsx b/src/features/reader/contexts/ReaderAutoScrollContext.tsx similarity index 89% rename from src/modules/reader/contexts/ReaderAutoScrollContext.tsx rename to src/features/reader/contexts/ReaderAutoScrollContext.tsx index 30aaae34..a407cd42 100644 --- a/src/modules/reader/contexts/ReaderAutoScrollContext.tsx +++ b/src/features/reader/contexts/ReaderAutoScrollContext.tsx @@ -7,7 +7,7 @@ */ import { createContext, useContext } from 'react'; -import { TReaderAutoScrollContext } from '@/modules/reader/types/Reader.types.ts'; +import { TReaderAutoScrollContext } from '@/features/reader/types/Reader.types.ts'; export const ReaderAutoScrollContext = createContext({ isActive: false, diff --git a/src/modules/reader/contexts/ReaderAutoScrollContextProvider.tsx b/src/features/reader/contexts/ReaderAutoScrollContextProvider.tsx similarity index 77% rename from src/modules/reader/contexts/ReaderAutoScrollContextProvider.tsx rename to src/features/reader/contexts/ReaderAutoScrollContextProvider.tsx index 8891b43f..1a4a73c9 100644 --- a/src/modules/reader/contexts/ReaderAutoScrollContextProvider.tsx +++ b/src/features/reader/contexts/ReaderAutoScrollContextProvider.tsx @@ -8,21 +8,21 @@ import { memo, ReactNode, useCallback, useMemo, useState } from 'react'; import { Direction, useTheme } from '@mui/material/styles'; -import { useAutomaticScrolling } from '@/modules/core/hooks/useAutomaticScrolling.ts'; +import { useAutomaticScrolling } from '@/features/core/hooks/useAutomaticScrolling.ts'; import { IReaderSettings, ReaderScrollAmount, ReadingMode, TReaderAutoScrollContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { ReaderAutoScrollContext } from '@/modules/reader/contexts/ReaderAutoScrollContext.tsx'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls'; -import { isContinuousReadingMode } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { CONTINUOUS_READING_MODE_TO_SCROLL_DIRECTION } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ScrollOffset } from '@/modules/core/Core.types.ts'; -import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; +} from '@/features/reader/types/Reader.types.ts'; +import { ReaderAutoScrollContext } from '@/features/reader/contexts/ReaderAutoScrollContext.tsx'; +import { ReaderControls } from '@/features/reader/services/ReaderControls'; +import { isContinuousReadingMode } from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { CONTINUOUS_READING_MODE_TO_SCROLL_DIRECTION } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ScrollOffset } from '@/features/core/Core.types.ts'; +import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; const BaseReaderAutoScrollContextProvider = ({ children, diff --git a/src/modules/reader/contexts/ReaderContextProvider.tsx b/src/features/reader/contexts/ReaderContextProvider.tsx similarity index 58% rename from src/modules/reader/contexts/ReaderContextProvider.tsx rename to src/features/reader/contexts/ReaderContextProvider.tsx index f9bc2eed..e0bd78c7 100644 --- a/src/modules/reader/contexts/ReaderContextProvider.tsx +++ b/src/features/reader/contexts/ReaderContextProvider.tsx @@ -7,12 +7,12 @@ */ import { ReactNode } from 'react'; -import { ReaderTapZoneContextProvider } from '@/modules/reader/contexts/ReaderTapZoneContextProvider.tsx'; -import { ReaderProgressBarContextProvider } from '@/modules/reader/contexts/ReaderProgressBarContextProvider.tsx'; -import { ReaderOverlayContextProvider } from '@/modules/reader/contexts/ReaderOverlayContextProvider.tsx'; -import { ReaderStateContextProvider } from '@/modules/reader/contexts/state/ReaderStateContextProvider.tsx'; -import { ReaderScrollbarContextProvider } from '@/modules/reader/contexts/ReaderScrollbarContextProvider.tsx'; -import { ReaderAutoScrollContextProvider } from '@/modules/reader/contexts/ReaderAutoScrollContextProvider.tsx'; +import { ReaderTapZoneContextProvider } from '@/features/reader/contexts/ReaderTapZoneContextProvider.tsx'; +import { ReaderProgressBarContextProvider } from '@/features/reader/contexts/ReaderProgressBarContextProvider.tsx'; +import { ReaderOverlayContextProvider } from '@/features/reader/contexts/ReaderOverlayContextProvider.tsx'; +import { ReaderStateContextProvider } from '@/features/reader/contexts/state/ReaderStateContextProvider.tsx'; +import { ReaderScrollbarContextProvider } from '@/features/reader/contexts/ReaderScrollbarContextProvider.tsx'; +import { ReaderAutoScrollContextProvider } from '@/features/reader/contexts/ReaderAutoScrollContextProvider.tsx'; export const ReaderContextProvider = ({ children }: { children?: ReactNode }) => ( diff --git a/src/modules/reader/contexts/ReaderOverlayContext.tsx b/src/features/reader/contexts/ReaderOverlayContext.tsx similarity index 85% rename from src/modules/reader/contexts/ReaderOverlayContext.tsx rename to src/features/reader/contexts/ReaderOverlayContext.tsx index 28cdcc68..5f2316c7 100644 --- a/src/modules/reader/contexts/ReaderOverlayContext.tsx +++ b/src/features/reader/contexts/ReaderOverlayContext.tsx @@ -7,7 +7,7 @@ */ import { createContext, useContext } from 'react'; -import { TReaderOverlayContext } from '@/modules/reader/types/ReaderOverlay.types.ts'; +import { TReaderOverlayContext } from '@/features/reader/types/ReaderOverlay.types.ts'; export const ReaderOverlayContext = createContext({ isVisible: false, diff --git a/src/modules/reader/contexts/ReaderOverlayContextProvider.tsx b/src/features/reader/contexts/ReaderOverlayContextProvider.tsx similarity index 87% rename from src/modules/reader/contexts/ReaderOverlayContextProvider.tsx rename to src/features/reader/contexts/ReaderOverlayContextProvider.tsx index 454e3b90..c95a3ba9 100644 --- a/src/modules/reader/contexts/ReaderOverlayContextProvider.tsx +++ b/src/features/reader/contexts/ReaderOverlayContextProvider.tsx @@ -7,7 +7,7 @@ */ import { ReactNode, useMemo, useState } from 'react'; -import { ReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx'; +import { ReaderOverlayContext } from '@/features/reader/contexts/ReaderOverlayContext.tsx'; export const ReaderOverlayContextProvider = ({ children }: { children: ReactNode }) => { const [isVisible, setIsVisible] = useState(false); diff --git a/src/modules/reader/contexts/ReaderProgressBarContext.tsx b/src/features/reader/contexts/ReaderProgressBarContext.tsx similarity index 86% rename from src/modules/reader/contexts/ReaderProgressBarContext.tsx rename to src/features/reader/contexts/ReaderProgressBarContext.tsx index dfb57a1b..edeebaa6 100644 --- a/src/modules/reader/contexts/ReaderProgressBarContext.tsx +++ b/src/features/reader/contexts/ReaderProgressBarContext.tsx @@ -7,7 +7,7 @@ */ import { createContext, useContext } from 'react'; -import { TReaderProgressBarContext } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { TReaderProgressBarContext } from '@/features/reader/types/ReaderProgressBar.types.ts'; export const ReaderProgressBarContext = createContext({ isMaximized: false, diff --git a/src/modules/reader/contexts/ReaderProgressBarContextProvider.tsx b/src/features/reader/contexts/ReaderProgressBarContextProvider.tsx similarity index 88% rename from src/modules/reader/contexts/ReaderProgressBarContextProvider.tsx rename to src/features/reader/contexts/ReaderProgressBarContextProvider.tsx index 178935f2..746b5f04 100644 --- a/src/modules/reader/contexts/ReaderProgressBarContextProvider.tsx +++ b/src/features/reader/contexts/ReaderProgressBarContextProvider.tsx @@ -7,7 +7,7 @@ */ import { ReactNode, useMemo, useState } from 'react'; -import { ReaderProgressBarContext } from '@/modules/reader/contexts/ReaderProgressBarContext.tsx'; +import { ReaderProgressBarContext } from '@/features/reader/contexts/ReaderProgressBarContext.tsx'; export const ReaderProgressBarContextProvider = ({ children }: { children: ReactNode }) => { const [isMaximized, setIsMaximized] = useState(false); diff --git a/src/modules/reader/contexts/ReaderScrollbarContext.tsx b/src/features/reader/contexts/ReaderScrollbarContext.tsx similarity index 88% rename from src/modules/reader/contexts/ReaderScrollbarContext.tsx rename to src/features/reader/contexts/ReaderScrollbarContext.tsx index 52396f56..b89f1cf3 100644 --- a/src/modules/reader/contexts/ReaderScrollbarContext.tsx +++ b/src/features/reader/contexts/ReaderScrollbarContext.tsx @@ -7,7 +7,7 @@ */ import { createContext, useContext } from 'react'; -import { TReaderScrollbarContext } from '@/modules/reader/types/Reader.types.ts'; +import { TReaderScrollbarContext } from '@/features/reader/types/Reader.types.ts'; export const ReaderScrollbarContext = createContext({ scrollbarXSize: 0, diff --git a/src/modules/reader/contexts/ReaderScrollbarContextProvider.tsx b/src/features/reader/contexts/ReaderScrollbarContextProvider.tsx similarity index 89% rename from src/modules/reader/contexts/ReaderScrollbarContextProvider.tsx rename to src/features/reader/contexts/ReaderScrollbarContextProvider.tsx index 75f37248..8b9bfb44 100644 --- a/src/modules/reader/contexts/ReaderScrollbarContextProvider.tsx +++ b/src/features/reader/contexts/ReaderScrollbarContextProvider.tsx @@ -7,7 +7,7 @@ */ import { ReactNode, useMemo, useState } from 'react'; -import { ReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx'; +import { ReaderScrollbarContext } from '@/features/reader/contexts/ReaderScrollbarContext.tsx'; export const ReaderScrollbarContextProvider = ({ children }: { children: ReactNode }) => { const [scrollbarXSize, setScrollbarXSize] = useState(0); diff --git a/src/modules/reader/contexts/ReaderTapZoneContext.tsx b/src/features/reader/contexts/ReaderTapZoneContext.tsx similarity index 85% rename from src/modules/reader/contexts/ReaderTapZoneContext.tsx rename to src/features/reader/contexts/ReaderTapZoneContext.tsx index 8069e63b..574b2d71 100644 --- a/src/modules/reader/contexts/ReaderTapZoneContext.tsx +++ b/src/features/reader/contexts/ReaderTapZoneContext.tsx @@ -7,7 +7,7 @@ */ import { createContext, useContext } from 'react'; -import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; +import { TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; export const ReaderTapZoneContext = createContext({ showPreview: false, diff --git a/src/modules/reader/contexts/ReaderTapZoneContextProvider.tsx b/src/features/reader/contexts/ReaderTapZoneContextProvider.tsx similarity index 87% rename from src/modules/reader/contexts/ReaderTapZoneContextProvider.tsx rename to src/features/reader/contexts/ReaderTapZoneContextProvider.tsx index 280233f5..d0c3bbab 100644 --- a/src/modules/reader/contexts/ReaderTapZoneContextProvider.tsx +++ b/src/features/reader/contexts/ReaderTapZoneContextProvider.tsx @@ -7,7 +7,7 @@ */ import { ReactNode, useMemo, useState } from 'react'; -import { ReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; +import { ReaderTapZoneContext } from '@/features/reader/contexts/ReaderTapZoneContext.tsx'; export const ReaderTapZoneContextProvider = ({ children }: { children: ReactNode }) => { const [showPreview, setShowPreview] = useState(false); diff --git a/src/modules/reader/contexts/state/ReaderStateChaptersContext.tsx b/src/features/reader/contexts/state/ReaderStateChaptersContext.tsx similarity index 92% rename from src/modules/reader/contexts/state/ReaderStateChaptersContext.tsx rename to src/features/reader/contexts/state/ReaderStateChaptersContext.tsx index eb1a2f6a..3dc1a4d8 100644 --- a/src/modules/reader/contexts/state/ReaderStateChaptersContext.tsx +++ b/src/features/reader/contexts/state/ReaderStateChaptersContext.tsx @@ -7,7 +7,7 @@ */ import { createContext, useContext } from 'react'; -import { ReaderStateChapters } from '@/modules/reader/types/Reader.types.ts'; +import { ReaderStateChapters } from '@/features/reader/types/Reader.types.ts'; export const READER_STATE_CHAPTERS_DEFAULTS: Omit = { chapters: [], diff --git a/src/modules/reader/contexts/state/ReaderStateChaptersContextProvider.tsx b/src/features/reader/contexts/state/ReaderStateChaptersContextProvider.tsx similarity index 85% rename from src/modules/reader/contexts/state/ReaderStateChaptersContextProvider.tsx rename to src/features/reader/contexts/state/ReaderStateChaptersContextProvider.tsx index 54386b58..146a8283 100644 --- a/src/modules/reader/contexts/state/ReaderStateChaptersContextProvider.tsx +++ b/src/features/reader/contexts/state/ReaderStateChaptersContextProvider.tsx @@ -10,8 +10,8 @@ import { ReactNode, useMemo, useState } from 'react'; import { READER_STATE_CHAPTERS_DEFAULTS, ReaderStateChaptersContext, -} from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { ReaderStateChapters } from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { ReaderStateChapters } from '@/features/reader/types/Reader.types.ts'; export const ReaderStateChaptersContextProvider = ({ children }: { children: ReactNode }) => { const [state, setState] = diff --git a/src/modules/reader/contexts/state/ReaderStateContextProvider.tsx b/src/features/reader/contexts/state/ReaderStateContextProvider.tsx similarity index 60% rename from src/modules/reader/contexts/state/ReaderStateContextProvider.tsx rename to src/features/reader/contexts/state/ReaderStateContextProvider.tsx index d138b97e..c61a0a9f 100644 --- a/src/modules/reader/contexts/state/ReaderStateContextProvider.tsx +++ b/src/features/reader/contexts/state/ReaderStateContextProvider.tsx @@ -7,10 +7,10 @@ */ import { ReactNode } from 'react'; -import { ReaderStatePagesContextProvider } from '@/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx'; -import { ReaderStateChaptersContextProvider } from '@/modules/reader/contexts/state/ReaderStateChaptersContextProvider.tsx'; -import { ReaderStateMangaContextProvider } from '@/modules/reader/contexts/state/ReaderStateMangaContextProvider.tsx'; -import { ReaderStateSettingsContextProvider } from '@/modules/reader/contexts/state/ReaderStateSettingsContextProvider.tsx'; +import { ReaderStatePagesContextProvider } from '@/features/reader/contexts/state/ReaderStatePagesContextProvider.tsx'; +import { ReaderStateChaptersContextProvider } from '@/features/reader/contexts/state/ReaderStateChaptersContextProvider.tsx'; +import { ReaderStateMangaContextProvider } from '@/features/reader/contexts/state/ReaderStateMangaContextProvider.tsx'; +import { ReaderStateSettingsContextProvider } from '@/features/reader/contexts/state/ReaderStateSettingsContextProvider.tsx'; export const ReaderStateContextProvider = ({ children }: { children: ReactNode }) => ( diff --git a/src/modules/reader/contexts/state/ReaderStateMangaContext.tsx b/src/features/reader/contexts/state/ReaderStateMangaContext.tsx similarity index 86% rename from src/modules/reader/contexts/state/ReaderStateMangaContext.tsx rename to src/features/reader/contexts/state/ReaderStateMangaContext.tsx index 0b460e77..b1c8252a 100644 --- a/src/modules/reader/contexts/state/ReaderStateMangaContext.tsx +++ b/src/features/reader/contexts/state/ReaderStateMangaContext.tsx @@ -7,7 +7,7 @@ */ import { createContext, useContext } from 'react'; -import { TReaderStateMangaContext } from '@/modules/reader/types/Reader.types.ts'; +import { TReaderStateMangaContext } from '@/features/reader/types/Reader.types.ts'; export const ReaderStateMangaContext = createContext({ manga: undefined, diff --git a/src/modules/reader/contexts/state/ReaderStateMangaContextProvider.tsx b/src/features/reader/contexts/state/ReaderStateMangaContextProvider.tsx similarity index 78% rename from src/modules/reader/contexts/state/ReaderStateMangaContextProvider.tsx rename to src/features/reader/contexts/state/ReaderStateMangaContextProvider.tsx index 06159aad..2de8b1e7 100644 --- a/src/modules/reader/contexts/state/ReaderStateMangaContextProvider.tsx +++ b/src/features/reader/contexts/state/ReaderStateMangaContextProvider.tsx @@ -7,8 +7,8 @@ */ import { ReactNode, useMemo, useState } from 'react'; -import { ReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { TReaderStateMangaContext } from '@/modules/reader/types/Reader.types.ts'; +import { ReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { TReaderStateMangaContext } from '@/features/reader/types/Reader.types.ts'; export const ReaderStateMangaContextProvider = ({ children }: { children: ReactNode }) => { const [manga, setManga] = useState(); diff --git a/src/modules/reader/contexts/state/ReaderStatePagesContext.tsx b/src/features/reader/contexts/state/ReaderStatePagesContext.tsx similarity index 85% rename from src/modules/reader/contexts/state/ReaderStatePagesContext.tsx rename to src/features/reader/contexts/state/ReaderStatePagesContext.tsx index 730b75cf..5c5bedb0 100644 --- a/src/modules/reader/contexts/state/ReaderStatePagesContext.tsx +++ b/src/features/reader/contexts/state/ReaderStatePagesContext.tsx @@ -7,8 +7,8 @@ */ import { createContext, useContext } from 'react'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { ReaderTransitionPageMode } from '@/modules/reader/types/Reader.types.ts'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { ReaderTransitionPageMode } from '@/features/reader/types/Reader.types.ts'; export const ReaderStatePagesContext = createContext({ totalPages: 0, diff --git a/src/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx b/src/features/reader/contexts/state/ReaderStatePagesContextProvider.tsx similarity index 89% rename from src/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx rename to src/features/reader/contexts/state/ReaderStatePagesContextProvider.tsx index 2393d087..5ba787c2 100644 --- a/src/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx +++ b/src/features/reader/contexts/state/ReaderStatePagesContextProvider.tsx @@ -7,9 +7,9 @@ */ import { ReactNode, useMemo, useState } from 'react'; -import { ReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { READER_STATE_PAGES_DEFAULTS } from '@/modules/reader/constants/ReaderContext.constants.ts'; +import { ReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { READER_STATE_PAGES_DEFAULTS } from '@/features/reader/constants/ReaderContext.constants.ts'; export const ReaderStatePagesContextProvider = ({ children }: { children: ReactNode }) => { const [totalPages, setTotalPages] = useState( diff --git a/src/modules/reader/contexts/state/ReaderStateSettingsContext.tsx b/src/features/reader/contexts/state/ReaderStateSettingsContext.tsx similarity index 74% rename from src/modules/reader/contexts/state/ReaderStateSettingsContext.tsx rename to src/features/reader/contexts/state/ReaderStateSettingsContext.tsx index 154c2f97..9ef35a92 100644 --- a/src/modules/reader/contexts/state/ReaderStateSettingsContext.tsx +++ b/src/features/reader/contexts/state/ReaderStateSettingsContext.tsx @@ -7,8 +7,8 @@ */ import { createContext, useContext } from 'react'; -import { TReaderStateSettingsContext } from '@/modules/reader/types/Reader.types.ts'; -import { DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG } from '@/modules/reader/services/ReaderSettingsMetadata.ts'; +import { TReaderStateSettingsContext } from '@/features/reader/types/Reader.types.ts'; +import { DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG } from '@/features/reader/services/ReaderSettingsMetadata.ts'; export const ReaderStateSettingsContext = createContext({ settings: DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG, diff --git a/src/modules/reader/contexts/state/ReaderStateSettingsContextProvider.tsx b/src/features/reader/contexts/state/ReaderStateSettingsContextProvider.tsx similarity index 70% rename from src/modules/reader/contexts/state/ReaderStateSettingsContextProvider.tsx rename to src/features/reader/contexts/state/ReaderStateSettingsContextProvider.tsx index 042d9acc..3e136175 100644 --- a/src/modules/reader/contexts/state/ReaderStateSettingsContextProvider.tsx +++ b/src/features/reader/contexts/state/ReaderStateSettingsContextProvider.tsx @@ -7,9 +7,9 @@ */ import { ReactNode, useMemo, useState } from 'react'; -import { ReaderStateSettingsContext } from '@/modules/reader/contexts/state/ReaderStateSettingsContext.tsx'; -import { DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG } from '@/modules/reader/services/ReaderSettingsMetadata.ts'; -import { TReaderStateSettingsContext } from '@/modules/reader/types/Reader.types.ts'; +import { ReaderStateSettingsContext } from '@/features/reader/contexts/state/ReaderStateSettingsContext.tsx'; +import { DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG } from '@/features/reader/services/ReaderSettingsMetadata.ts'; +import { TReaderStateSettingsContext } from '@/features/reader/types/Reader.types.ts'; export const ReaderStateSettingsContextProvider = ({ children }: { children: ReactNode }) => { const [settings, setSettings] = useState( diff --git a/src/modules/reader/hooks/useReaderAutoScroll.ts b/src/features/reader/hooks/useReaderAutoScroll.ts similarity index 82% rename from src/modules/reader/hooks/useReaderAutoScroll.ts rename to src/features/reader/hooks/useReaderAutoScroll.ts index a65f2030..8192b296 100644 --- a/src/modules/reader/hooks/useReaderAutoScroll.ts +++ b/src/features/reader/hooks/useReaderAutoScroll.ts @@ -7,8 +7,8 @@ */ import { useEffect } from 'react'; -import { useAutomaticScrolling } from '@/modules/core/hooks/useAutomaticScrolling.ts'; -import { IReaderSettings } from '@/modules/reader/types/Reader.types.ts'; +import { useAutomaticScrolling } from '@/features/core/hooks/useAutomaticScrolling.ts'; +import { IReaderSettings } from '@/features/reader/types/Reader.types.ts'; export const useReaderAutoScroll = ( isOverlayVisible: boolean, diff --git a/src/modules/reader/hooks/useReaderConvertPagesForReadingMode.ts b/src/features/reader/hooks/useReaderConvertPagesForReadingMode.ts similarity index 79% rename from src/modules/reader/hooks/useReaderConvertPagesForReadingMode.ts rename to src/features/reader/hooks/useReaderConvertPagesForReadingMode.ts index 2e0d1ba9..ec5e87b5 100644 --- a/src/modules/reader/hooks/useReaderConvertPagesForReadingMode.ts +++ b/src/features/reader/hooks/useReaderConvertPagesForReadingMode.ts @@ -7,11 +7,11 @@ */ import { useLayoutEffect, useState } from 'react'; -import { ReaderPageSpreadState, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; -import { getNextIndexFromPage, getPage } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; -import { createPagesData } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; +import { ReaderPageSpreadState, ReadingMode } from '@/features/reader/types/Reader.types.ts'; +import { getNextIndexFromPage, getPage } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; +import { createPagesData } from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; export const useReaderConvertPagesForReadingMode = ( currentPageIndex: number, diff --git a/src/modules/reader/hooks/useReaderHandlePageSelection.ts b/src/features/reader/hooks/useReaderHandlePageSelection.ts similarity index 81% rename from src/modules/reader/hooks/useReaderHandlePageSelection.ts rename to src/features/reader/hooks/useReaderHandlePageSelection.ts index fc4ef259..8115e89e 100644 --- a/src/modules/reader/hooks/useReaderHandlePageSelection.ts +++ b/src/features/reader/hooks/useReaderHandlePageSelection.ts @@ -8,12 +8,12 @@ import { MutableRefObject, useLayoutEffect } from 'react'; import { Direction } from '@mui/material/styles'; -import { ReadingDirection } from '@/modules/reader/types/Reader.types.ts'; -import { getNextIndexFromPage, getPage } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; +import { ReadingDirection } from '@/features/reader/types/Reader.types.ts'; +import { getNextIndexFromPage, getPage } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; import { DirectionOffset } from '@/Base.types.ts'; -import { getScrollIntoViewInlineOption } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; +import { getScrollIntoViewInlineOption } from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; export const useReaderHandlePageSelection = ( pageToScrollToIndex: ReaderStatePages['pageToScrollToIndex'], diff --git a/src/modules/reader/hooks/useReaderHideCursorOnInactivity.ts b/src/features/reader/hooks/useReaderHideCursorOnInactivity.ts similarity index 100% rename from src/modules/reader/hooks/useReaderHideCursorOnInactivity.ts rename to src/features/reader/hooks/useReaderHideCursorOnInactivity.ts diff --git a/src/modules/reader/hooks/useReaderHideOverlayOnUserScroll.ts b/src/features/reader/hooks/useReaderHideOverlayOnUserScroll.ts similarity index 88% rename from src/modules/reader/hooks/useReaderHideOverlayOnUserScroll.ts rename to src/features/reader/hooks/useReaderHideOverlayOnUserScroll.ts index e2caa2ce..70332894 100644 --- a/src/modules/reader/hooks/useReaderHideOverlayOnUserScroll.ts +++ b/src/features/reader/hooks/useReaderHideOverlayOnUserScroll.ts @@ -7,8 +7,8 @@ */ import { MutableRefObject, useEffect } from 'react'; -import { TReaderOverlayContext } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; +import { TReaderOverlayContext } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; export const useReaderHideOverlayOnUserScroll = ( isOverlayVisible: boolean, diff --git a/src/modules/reader/hooks/useReaderHorizontalModeInvertXYScrolling.ts b/src/features/reader/hooks/useReaderHorizontalModeInvertXYScrolling.ts similarity index 96% rename from src/modules/reader/hooks/useReaderHorizontalModeInvertXYScrolling.ts rename to src/features/reader/hooks/useReaderHorizontalModeInvertXYScrolling.ts index d6415527..8a4b64fe 100644 --- a/src/modules/reader/hooks/useReaderHorizontalModeInvertXYScrolling.ts +++ b/src/features/reader/hooks/useReaderHorizontalModeInvertXYScrolling.ts @@ -7,7 +7,7 @@ */ import { MutableRefObject, useEffect } from 'react'; -import { ReadingDirection, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; +import { ReadingDirection, ReadingMode } from '@/features/reader/types/Reader.types.ts'; export const useReaderHorizontalModeInvertXYScrolling = ( readingMode: ReadingMode, diff --git a/src/modules/reader/hooks/useReaderInfiniteScrollUpdateChapter.ts b/src/features/reader/hooks/useReaderInfiniteScrollUpdateChapter.ts similarity index 96% rename from src/modules/reader/hooks/useReaderInfiniteScrollUpdateChapter.ts rename to src/features/reader/hooks/useReaderInfiniteScrollUpdateChapter.ts index 310f19db..78c175ac 100644 --- a/src/modules/reader/hooks/useReaderInfiniteScrollUpdateChapter.ts +++ b/src/features/reader/hooks/useReaderInfiniteScrollUpdateChapter.ts @@ -7,15 +7,15 @@ */ import { useCallback, useEffect, useMemo } from 'react'; -import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; -import { ReadingDirection, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; +import { ReaderControls } from '@/features/reader/services/ReaderControls.ts'; +import { ReadingDirection, ReadingMode } from '@/features/reader/types/Reader.types.ts'; import { isContinuousReadingMode, isContinuousVerticalReadingMode, -} from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { useIntersectionObserver } from '@/modules/core/hooks/useIntersectionObserver.tsx'; +} from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { useIntersectionObserver } from '@/features/core/hooks/useIntersectionObserver.tsx'; interface ElementIntersection { start: boolean; diff --git a/src/modules/reader/hooks/useReaderPreserveScrollPosition.ts b/src/features/reader/hooks/useReaderPreserveScrollPosition.ts similarity index 97% rename from src/modules/reader/hooks/useReaderPreserveScrollPosition.ts rename to src/features/reader/hooks/useReaderPreserveScrollPosition.ts index 5bd4f7ae..12461543 100644 --- a/src/modules/reader/hooks/useReaderPreserveScrollPosition.ts +++ b/src/features/reader/hooks/useReaderPreserveScrollPosition.ts @@ -13,16 +13,16 @@ import { ReaderStateChapters, ReadingDirection, ReadingMode, -} from '@/modules/reader/types/Reader.types.ts'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types'; +} from '@/features/reader/types/Reader.types.ts'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types'; import { isContinuousReadingMode, isContinuousVerticalReadingMode, isHeightPageScaleMode, isReaderWidthEditable, -} from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { getPreviousNextChapterVisibility } from '@/modules/reader/utils/Reader.utils.ts'; -import { ChapterIdInfo, TChapterReader } from '@/modules/chapter/Chapter.types.ts'; +} from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { getPreviousNextChapterVisibility } from '@/features/reader/utils/Reader.utils.ts'; +import { ChapterIdInfo, TChapterReader } from '@/features/chapter/Chapter.types.ts'; const shouldPreserveOnResizeChange = ( readingMode: ReadingMode, diff --git a/src/modules/reader/hooks/useReaderResetStates.ts b/src/features/reader/hooks/useReaderResetStates.ts similarity index 77% rename from src/modules/reader/hooks/useReaderResetStates.ts rename to src/features/reader/hooks/useReaderResetStates.ts index a8be49bb..f422c7d5 100644 --- a/src/modules/reader/hooks/useReaderResetStates.ts +++ b/src/features/reader/hooks/useReaderResetStates.ts @@ -7,18 +7,18 @@ */ import { useEffect } from 'react'; -import { createPageData } from '@/modules/reader/utils/ReaderPager.utils.tsx'; +import { createPageData } from '@/features/reader/utils/ReaderPager.utils.tsx'; import { ReaderStateChapters, ReaderTransitionPageMode, TReaderAutoScrollContext, TReaderStateMangaContext, TReaderStateSettingsContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG } from '@/modules/reader/services/ReaderSettingsMetadata.ts'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { TReaderOverlayContext } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { READER_STATE_CHAPTERS_DEFAULTS } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG } from '@/features/reader/services/ReaderSettingsMetadata.ts'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { TReaderOverlayContext } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { READER_STATE_CHAPTERS_DEFAULTS } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; export const useReaderResetStates = ( setManga: TReaderStateMangaContext['setManga'], diff --git a/src/modules/reader/hooks/useReaderScrollToStartOnPageChange.ts b/src/features/reader/hooks/useReaderScrollToStartOnPageChange.ts similarity index 79% rename from src/modules/reader/hooks/useReaderScrollToStartOnPageChange.ts rename to src/features/reader/hooks/useReaderScrollToStartOnPageChange.ts index 92b3834e..a978e59b 100644 --- a/src/modules/reader/hooks/useReaderScrollToStartOnPageChange.ts +++ b/src/features/reader/hooks/useReaderScrollToStartOnPageChange.ts @@ -8,9 +8,9 @@ import { MutableRefObject, useLayoutEffect } from 'react'; import { Direction } from '@mui/material/styles'; -import { ReadingDirection } from '@/modules/reader/types/Reader.types.ts'; -import { getScrollToXForReadingDirection } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { ReadingDirection } from '@/features/reader/types/Reader.types.ts'; +import { getScrollToXForReadingDirection } from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; export const useReaderScrollToStartOnPageChange = ( currentPageIndex: ReaderStatePages['currentPageIndex'], diff --git a/src/modules/reader/hooks/useReaderSetChaptersState.ts b/src/features/reader/hooks/useReaderSetChaptersState.ts similarity index 91% rename from src/modules/reader/hooks/useReaderSetChaptersState.ts rename to src/features/reader/hooks/useReaderSetChaptersState.ts index 2572679c..259f1cfc 100644 --- a/src/modules/reader/hooks/useReaderSetChaptersState.ts +++ b/src/features/reader/hooks/useReaderSetChaptersState.ts @@ -8,7 +8,7 @@ import { useEffect } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { DirectionOffset } from '@/Base.types.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { GetChaptersReaderQuery } from '@/lib/graphql/generated/graphql.ts'; @@ -16,11 +16,11 @@ import { IReaderSettings, ReaderOpenChapterLocationState, ReaderStateChapters, -} from '@/modules/reader/types/Reader.types.ts'; -import { READER_STATE_CHAPTERS_DEFAULTS } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { filterChapters } from '@/modules/chapter/utils/ChapterList.util.tsx'; -import { ChapterListOptions } from '@/modules/chapter/Chapter.types.ts'; -import { getReaderChapterFromCache } from '@/modules/reader/utils/Reader.utils.ts'; +} from '@/features/reader/types/Reader.types.ts'; +import { READER_STATE_CHAPTERS_DEFAULTS } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { filterChapters } from '@/features/chapter/utils/ChapterList.util.tsx'; +import { ChapterListOptions } from '@/features/chapter/Chapter.types.ts'; +import { getReaderChapterFromCache } from '@/features/reader/utils/Reader.utils.ts'; export const useReaderSetChaptersState = ( chaptersResponse: ReturnType>, diff --git a/src/modules/reader/hooks/useReaderSetPagesState.ts b/src/features/reader/hooks/useReaderSetPagesState.ts similarity index 89% rename from src/modules/reader/hooks/useReaderSetPagesState.ts rename to src/features/reader/hooks/useReaderSetPagesState.ts index aa8813aa..f0c60b47 100644 --- a/src/modules/reader/hooks/useReaderSetPagesState.ts +++ b/src/features/reader/hooks/useReaderSetPagesState.ts @@ -7,17 +7,17 @@ */ import { useLayoutEffect, useRef } from 'react'; -import { getInitialReaderPageIndex } from '@/modules/reader/utils/Reader.utils.ts'; -import { createPagesData } from '@/modules/reader/utils/ReaderPager.utils.tsx'; +import { getInitialReaderPageIndex } from '@/features/reader/utils/Reader.utils.ts'; +import { createPagesData } from '@/features/reader/utils/ReaderPager.utils.tsx'; import { ReaderPageSpreadState, ReaderResumeMode, ReaderStateChapters, ReaderTransitionPageMode, -} from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/types/Reader.types.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { TChapterReader } from '@/modules/chapter/Chapter.types.ts'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { TChapterReader } from '@/features/chapter/Chapter.types.ts'; export const useReaderSetPagesState = ( isCurrentChapter: boolean, diff --git a/src/modules/reader/hooks/useReaderSetSettingsState.ts b/src/features/reader/hooks/useReaderSetSettingsState.ts similarity index 90% rename from src/modules/reader/hooks/useReaderSetSettingsState.ts rename to src/features/reader/hooks/useReaderSetSettingsState.ts index d17d8502..f718c9bd 100644 --- a/src/modules/reader/hooks/useReaderSetSettingsState.ts +++ b/src/features/reader/hooks/useReaderSetSettingsState.ts @@ -11,9 +11,9 @@ import { getReaderSettings, getReaderSettingsFor, useDefaultReaderSettings, -} from '@/modules/reader/services/ReaderSettingsMetadata.ts'; -import { isAutoWebtoonMode } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { ReadingMode, TReaderStateSettingsContext } from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/services/ReaderSettingsMetadata.ts'; +import { isAutoWebtoonMode } from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { ReadingMode, TReaderStateSettingsContext } from '@/features/reader/types/Reader.types.ts'; import { GetMangaReaderQuery } from '@/lib/graphql/generated/graphql.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; diff --git a/src/modules/reader/hooks/useReaderShowSettingPreviewOnChange.ts b/src/features/reader/hooks/useReaderShowSettingPreviewOnChange.ts similarity index 91% rename from src/modules/reader/hooks/useReaderShowSettingPreviewOnChange.ts rename to src/features/reader/hooks/useReaderShowSettingPreviewOnChange.ts index d4773356..7e1123ef 100644 --- a/src/modules/reader/hooks/useReaderShowSettingPreviewOnChange.ts +++ b/src/features/reader/hooks/useReaderShowSettingPreviewOnChange.ts @@ -8,11 +8,11 @@ import { useEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; -import { IReaderSettings, IReaderSettingsWithDefaultFlag } from '@/modules/reader/types/Reader.types.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { READING_MODE_VALUE_TO_DISPLAY_DATA } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { IReaderSettings, IReaderSettingsWithDefaultFlag } from '@/features/reader/types/Reader.types.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { READING_MODE_VALUE_TO_DISPLAY_DATA } from '@/features/reader/constants/ReaderSettings.constants.tsx'; import { TranslationKey } from '@/Base.types.ts'; -import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; +import { TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; const HIDE_PREVIEW_TIMEOUT = 5000; diff --git a/src/modules/reader/screens/GlobalReaderSettings.tsx b/src/features/reader/screens/GlobalReaderSettings.tsx similarity index 72% rename from src/modules/reader/screens/GlobalReaderSettings.tsx rename to src/features/reader/screens/GlobalReaderSettings.tsx index 13efe2fe..c80946db 100644 --- a/src/modules/reader/screens/GlobalReaderSettings.tsx +++ b/src/features/reader/screens/GlobalReaderSettings.tsx @@ -8,16 +8,16 @@ import { useTranslation } from 'react-i18next'; import { useState } from 'react'; -import { useDefaultReaderSettingsWithDefaultFlag } from '@/modules/reader/services/ReaderSettingsMetadata.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { useDefaultReaderSettingsWithDefaultFlag } from '@/features/reader/services/ReaderSettingsMetadata.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { IReaderSettings, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { ReaderSettingsTabs } from '@/modules/reader/components/settings/ReaderSettingsTabs.tsx'; +import { IReaderSettings, ReadingMode } from '@/features/reader/types/Reader.types.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { ReaderSettingsTabs } from '@/features/reader/components/settings/ReaderSettingsTabs.tsx'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { GLOBAL_READER_SETTINGS_MANGA } from '@/modules/manga/Manga.constants.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { GLOBAL_READER_SETTINGS_MANGA } from '@/features/manga/Manga.constants.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; export const GlobalReaderSettings = () => { const { t } = useTranslation(); diff --git a/src/modules/reader/screens/Reader.tsx b/src/features/reader/screens/Reader.tsx similarity index 79% rename from src/modules/reader/screens/Reader.tsx rename to src/features/reader/screens/Reader.tsx index 8272a73d..e17e1e52 100644 --- a/src/modules/reader/screens/Reader.tsx +++ b/src/features/reader/screens/Reader.tsx @@ -10,26 +10,26 @@ import Box from '@mui/material/Box'; import { memo, useEffect, useLayoutEffect, useRef, useState } from 'react'; import { useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import { useDefaultReaderSettings } from '@/modules/reader/services/ReaderSettingsMetadata.ts'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { ReaderOverlay } from '@/modules/reader/components/overlay/ReaderOverlay.tsx'; +import { useDefaultReaderSettings } from '@/features/reader/services/ReaderSettingsMetadata.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { ReaderOverlay } from '@/features/reader/components/overlay/ReaderOverlay.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { GetChaptersReaderQuery, GetMangaReaderQuery } from '@/lib/graphql/generated/graphql.ts'; import { GET_MANGA_READER } from '@/lib/graphql/queries/MangaQuery.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; import { GET_CHAPTERS_READER } from '@/lib/graphql/queries/ChapterQuery.ts'; -import { TapZoneLayout } from '@/modules/reader/components/TapZoneLayout.tsx'; -import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx'; -import { ReaderRGBAFilter } from '@/modules/reader/components/ReaderRGBAFilter.tsx'; -import { useReaderStateSettingsContext } from '@/modules/reader/contexts/state/ReaderStateSettingsContext.tsx'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { ReaderViewer } from '@/modules/reader/components/viewer/ReaderViewer.tsx'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { READER_BACKGROUND_TO_COLOR } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { ReaderHotkeys } from '@/modules/reader/components/ReaderHotkeys.tsx'; +import { TapZoneLayout } from '@/features/reader/components/TapZoneLayout.tsx'; +import { useReaderOverlayContext } from '@/features/reader/contexts/ReaderOverlayContext.tsx'; +import { ReaderRGBAFilter } from '@/features/reader/components/ReaderRGBAFilter.tsx'; +import { useReaderStateSettingsContext } from '@/features/reader/contexts/state/ReaderStateSettingsContext.tsx'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { ReaderViewer } from '@/features/reader/components/viewer/ReaderViewer.tsx'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { READER_BACKGROUND_TO_COLOR } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { ReaderHotkeys } from '@/features/reader/components/ReaderHotkeys.tsx'; import { IReaderSettings, IReaderSettingsWithDefaultFlag, @@ -37,23 +37,23 @@ import { TReaderAutoScrollContext, TReaderStateMangaContext, TReaderStateSettingsContext, -} from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/types/Reader.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { TReaderOverlayContext } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { useReaderAutoScrollContext } from '@/modules/reader/contexts/ReaderAutoScrollContext.tsx'; -import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; -import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; -import { useReaderResetStates } from '@/modules/reader/hooks/useReaderResetStates.ts'; -import { useReaderSetSettingsState } from '@/modules/reader/hooks/useReaderSetSettingsState.ts'; -import { useReaderShowSettingPreviewOnChange } from '@/modules/reader/hooks/useReaderShowSettingPreviewOnChange.ts'; -import { useReaderSetChaptersState } from '@/modules/reader/hooks/useReaderSetChaptersState.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { useChapterListOptions } from '@/modules/chapter/utils/ChapterList.util.tsx'; -import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { TReaderOverlayContext } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { withPropsFrom } from '@/features/core/hoc/withPropsFrom.tsx'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { useReaderAutoScrollContext } from '@/features/reader/contexts/ReaderAutoScrollContext.tsx'; +import { TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; +import { useReaderTapZoneContext } from '@/features/reader/contexts/ReaderTapZoneContext.tsx'; +import { useReaderResetStates } from '@/features/reader/hooks/useReaderResetStates.ts'; +import { useReaderSetSettingsState } from '@/features/reader/hooks/useReaderSetSettingsState.ts'; +import { useReaderShowSettingPreviewOnChange } from '@/features/reader/hooks/useReaderShowSettingPreviewOnChange.ts'; +import { useReaderSetChaptersState } from '@/features/reader/hooks/useReaderSetChaptersState.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { useChapterListOptions } from '@/features/chapter/utils/ChapterList.util.tsx'; +import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts'; const BaseReader = ({ setOverride, diff --git a/src/modules/reader/services/ReaderControls.ts b/src/features/reader/services/ReaderControls.ts similarity index 94% rename from src/modules/reader/services/ReaderControls.ts rename to src/features/reader/services/ReaderControls.ts index 7dc31d32..ea663ecf 100644 --- a/src/modules/reader/services/ReaderControls.ts +++ b/src/features/reader/services/ReaderControls.ts @@ -10,17 +10,17 @@ import { MutableRefObject, RefObject, useCallback, useEffect, useMemo } from 're import { Direction, useTheme } from '@mui/material/styles'; import { useTranslation } from 'react-i18next'; import { TFunction } from 'i18next'; -import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; +import { userReaderStatePagesContext } from '@/features/reader/contexts/state/ReaderStatePagesContext.tsx'; import { getNextIndexFromPage, getNextPageIndex, getPage, getPageForMousePos, getProgressBarPositionInfo, -} from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; -import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; +} from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; +import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; import { PageInViewportType, ProgressBarPosition, @@ -28,32 +28,32 @@ import { ReaderTransitionPageMode, ReadingDirection, ReadingMode, -} from '@/modules/reader/types/Reader.types.ts'; -import { ScrollDirection, ScrollOffset } from '@/modules/core/Core.types.ts'; -import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { ScrollDirection, ScrollOffset } from '@/features/core/Core.types.ts'; +import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/features/reader/constants/ReaderSettings.constants.tsx'; import { isATransitionPageVisible, isEndOfPageInViewport, isPageInViewport, -} from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx'; -import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; -import { TapZoneRegionType, TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts'; -import { ReaderTapZoneService } from '@/modules/reader/services/ReaderTapZoneService.ts'; -import { isContinuousReadingMode } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; +} from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { useReaderOverlayContext } from '@/features/reader/contexts/ReaderOverlayContext.tsx'; +import { useReaderTapZoneContext } from '@/features/reader/contexts/ReaderTapZoneContext.tsx'; +import { TapZoneRegionType, TReaderTapZoneContext } from '@/features/reader/types/TapZoneLayout.types.ts'; +import { ReaderTapZoneService } from '@/features/reader/services/ReaderTapZoneService.ts'; +import { isContinuousReadingMode } from '@/features/reader/utils/ReaderSettings.utils.tsx'; import { getReaderChapterFromCache, getReaderOpenChapterResumeMode, updateReaderStateVisibleChapters, -} from '@/modules/reader/utils/Reader.utils.ts'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +} from '@/features/reader/utils/Reader.utils.ts'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { DirectionOffset, TranslationKey } from '@/Base.types.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { ChapterIdInfo, TChapterReader } from '@/modules/chapter/Chapter.types.ts'; -import { awaitConfirmation } from '@/modules/core/utils/AwaitableDialog.tsx'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { ChapterIdInfo, TChapterReader } from '@/features/chapter/Chapter.types.ts'; +import { awaitConfirmation } from '@/features/core/utils/AwaitableDialog.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { TReaderOverlayContext } from '@/modules/reader/types/ReaderOverlay.types.ts'; -import { ReaderProgressBarProps, TReaderProgressCurrentPage } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { TReaderOverlayContext } from '@/features/reader/types/ReaderOverlay.types.ts'; +import { ReaderProgressBarProps, TReaderProgressCurrentPage } from '@/features/reader/types/ReaderProgressBar.types.ts'; const getScrollDirectionInvert = ( scrollDirection: ScrollDirection, diff --git a/src/modules/reader/services/ReaderService.ts b/src/features/reader/services/ReaderService.ts similarity index 91% rename from src/modules/reader/services/ReaderService.ts rename to src/features/reader/services/ReaderService.ts index 579077f2..8ba27b1b 100644 --- a/src/modules/reader/services/ReaderService.ts +++ b/src/features/reader/services/ReaderService.ts @@ -10,8 +10,8 @@ import { useCallback, useMemo } from 'react'; import { useNavigate } from 'react-router-dom'; import { Direction, useTheme } from '@mui/material/styles'; import { t as translate } from 'i18next'; -import { ChapterIdInfo, TChapterReader } from '@/modules/chapter/Chapter.types.ts'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +import { ChapterIdInfo, TChapterReader } from '@/features/chapter/Chapter.types.ts'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { IReaderSettings, IReaderSettingsWithDefaultFlag, @@ -21,25 +21,25 @@ import { ReaderStateChapters, ReadingDirection, ReadingMode, -} from '@/modules/reader/types/Reader.types.ts'; -import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { useReaderStateMangaContext } from '@/features/reader/contexts/state/ReaderStateMangaContext.tsx'; import { convertFromReaderSettingsWithDefaultFlag, updateReaderSettings, -} from '@/modules/reader/services/ReaderSettingsMetadata.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; +} from '@/features/reader/services/ReaderSettingsMetadata.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { MANGA_META_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; import { GLOBAL_METADATA } from '@/lib/graphql/fragments/Fragments.ts'; -import { updateMetadataList } from '@/modules/metadata/services/MetadataApolloCacheHandler.ts'; -import { useBackButton } from '@/modules/core/hooks/useBackButton.ts'; -import { GLOBAL_READER_SETTING_KEYS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { useReaderStateSettingsContext } from '@/modules/reader/contexts/state/ReaderStateSettingsContext.tsx'; +import { updateMetadataList } from '@/features/metadata/services/MetadataApolloCacheHandler.ts'; +import { useBackButton } from '@/features/core/hooks/useBackButton.ts'; +import { GLOBAL_READER_SETTING_KEYS } from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { useReaderStateSettingsContext } from '@/features/reader/contexts/state/ReaderStateSettingsContext.tsx'; import { UpdateChapterPatchInput } from '@/lib/graphql/generated/graphql.ts'; -import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; +import { useReaderStateChaptersContext } from '@/features/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { DirectionOffset } from '@/Base.types.ts'; import { getChapterIdsForDownloadAhead, @@ -47,13 +47,13 @@ import { getReaderChapterFromCache, isInDownloadAheadRange, updateReaderStateVisibleChapters, -} from '@/modules/reader/utils/Reader.utils.ts'; +} from '@/features/reader/utils/Reader.utils.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { Queue } from '@/lib/Queue.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -import { getMetadataKey } from '@/modules/metadata/Metadata.utils.ts'; +import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts'; +import { getMetadataKey } from '@/features/metadata/Metadata.utils.ts'; const DIRECTION_TO_INVERTED: Record = { ltr: 'rtl', diff --git a/src/modules/reader/services/ReaderSettingsMetadata.ts b/src/features/reader/services/ReaderSettingsMetadata.ts similarity index 93% rename from src/modules/reader/services/ReaderSettingsMetadata.ts rename to src/features/reader/services/ReaderSettingsMetadata.ts index 107492c5..8bae1581 100644 --- a/src/modules/reader/services/ReaderSettingsMetadata.ts +++ b/src/features/reader/services/ReaderSettingsMetadata.ts @@ -12,27 +12,27 @@ import { requestManager } from '@/lib/requests/RequestManager.ts'; import { requestUpdateMangaMetadata, requestUpdateServerMetadata, -} from '@/modules/metadata/services/MetadataUpdater.ts'; +} from '@/features/metadata/services/MetadataUpdater.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { IReaderSettings, IReaderSettingsWithDefaultFlag, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; -import { convertFromGqlMeta } from '@/modules/metadata/services/MetadataConverter.ts'; -import { getMetadataFrom } from '@/modules/metadata/services/MetadataReader.ts'; +import { IReaderSettings, IReaderSettingsWithDefaultFlag, ReadingMode } from '@/features/reader/types/Reader.types.ts'; +import { convertFromGqlMeta } from '@/features/metadata/services/MetadataConverter.ts'; +import { getMetadataFrom } from '@/features/metadata/services/MetadataReader.ts'; import { AllowedMetadataValueTypes, GqlMetaHolder, Metadata, MetadataHolder, MetadataHolderType, -} from '@/modules/metadata/Metadata.types.ts'; +} from '@/features/metadata/Metadata.types.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; import { DEFAULT_READER_SETTINGS, GLOBAL_READER_SETTING_KEYS, -} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { DEFAULT_DEVICE, getActiveDevice } from '@/modules/device/services/Device.ts'; -import { APP_METADATA_KEY_PREFIX } from '@/modules/metadata/Metadata.constants.ts'; -import { extractOriginalKey } from '@/modules/metadata/Metadata.utils.ts'; +} from '@/features/reader/constants/ReaderSettings.constants.tsx'; +import { DEFAULT_DEVICE, getActiveDevice } from '@/features/device/services/Device.ts'; +import { APP_METADATA_KEY_PREFIX } from '@/features/metadata/Metadata.constants.ts'; +import { extractOriginalKey } from '@/features/metadata/Metadata.utils.ts'; export const convertFromReaderSettingsWithDefaultFlag = (settings: IReaderSettingsWithDefaultFlag): IReaderSettings => Object.fromEntries( diff --git a/src/modules/reader/services/ReaderTapZoneService.ts b/src/features/reader/services/ReaderTapZoneService.ts similarity index 98% rename from src/modules/reader/services/ReaderTapZoneService.ts rename to src/features/reader/services/ReaderTapZoneService.ts index fba97974..59d58422 100644 --- a/src/modules/reader/services/ReaderTapZoneService.ts +++ b/src/features/reader/services/ReaderTapZoneService.ts @@ -14,11 +14,11 @@ import { TapZoneLayouts, TapZoneRegion, TapZoneRegionType, -} from '@/modules/reader/types/TapZoneLayout.types.ts'; +} from '@/features/reader/types/TapZoneLayout.types.ts'; import { READER_TAP_ZONE_LAYOUTS, TAP_ZONE_REGION_TYPE_DATA, -} from '@/modules/reader/constants/ReaderTapZone.constants.ts'; +} from '@/features/reader/constants/ReaderTapZone.constants.ts'; interface InvertMode extends TapZoneInvertMode { isRTL: boolean; diff --git a/src/modules/reader/types/Reader.types.ts b/src/features/reader/types/Reader.types.ts similarity index 93% rename from src/modules/reader/types/Reader.types.ts rename to src/features/reader/types/Reader.types.ts index 408c14dc..25533efb 100644 --- a/src/modules/reader/types/Reader.types.ts +++ b/src/features/reader/types/Reader.types.ts @@ -7,14 +7,14 @@ */ import { MutableRefObject } from 'react'; -import { TapZoneInvertMode, TapZoneLayouts } from '@/modules/reader/types/TapZoneLayout.types.ts'; -import { TChapterReader } from '@/modules/chapter/Chapter.types.ts'; -import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { TMangaReader } from '@/modules/manga/Manga.types.ts'; -import { useAutomaticScrolling } from '@/modules/core/hooks/useAutomaticScrolling.ts'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { ScrollOffset } from '@/modules/core/Core.types.ts'; +import { TapZoneInvertMode, TapZoneLayouts } from '@/features/reader/types/TapZoneLayout.types.ts'; +import { TChapterReader } from '@/features/chapter/Chapter.types.ts'; +import { ReaderService } from '@/features/reader/services/ReaderService.ts'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { TMangaReader } from '@/features/manga/Manga.types.ts'; +import { useAutomaticScrolling } from '@/features/core/hooks/useAutomaticScrolling.ts'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { ScrollOffset } from '@/features/core/Core.types.ts'; export enum ProgressBarType { HIDDEN, diff --git a/src/modules/reader/types/ReaderOverlay.types.ts b/src/features/reader/types/ReaderOverlay.types.ts similarity index 100% rename from src/modules/reader/types/ReaderOverlay.types.ts rename to src/features/reader/types/ReaderOverlay.types.ts diff --git a/src/modules/reader/types/ReaderProgressBar.types.ts b/src/features/reader/types/ReaderProgressBar.types.ts similarity index 96% rename from src/modules/reader/types/ReaderProgressBar.types.ts rename to src/features/reader/types/ReaderProgressBar.types.ts index 4f4ceb05..37ca064b 100644 --- a/src/modules/reader/types/ReaderProgressBar.types.ts +++ b/src/features/reader/types/ReaderProgressBar.types.ts @@ -8,7 +8,7 @@ import { BoxProps } from '@mui/material/Box'; import { TooltipProps } from '@mui/material/Tooltip'; -import { IReaderSettings, ReaderTransitionPageMode } from '@/modules/reader/types/Reader.types.ts'; +import { IReaderSettings, ReaderTransitionPageMode } from '@/features/reader/types/Reader.types.ts'; interface SinglePageData { index: number; diff --git a/src/modules/reader/types/TapZoneLayout.types.ts b/src/features/reader/types/TapZoneLayout.types.ts similarity index 100% rename from src/modules/reader/types/TapZoneLayout.types.ts rename to src/features/reader/types/TapZoneLayout.types.ts diff --git a/src/modules/reader/utils/Reader.utils.ts b/src/features/reader/utils/Reader.utils.ts similarity index 97% rename from src/modules/reader/utils/Reader.utils.ts rename to src/features/reader/utils/Reader.utils.ts index f7cb7d16..b783e3ac 100644 --- a/src/modules/reader/utils/Reader.utils.ts +++ b/src/features/reader/utils/Reader.utils.ts @@ -11,13 +11,13 @@ import { ReaderResumeMode, ReaderStateChapters, ReadingMode, -} from '@/modules/reader/types/Reader.types.ts'; +} from '@/features/reader/types/Reader.types.ts'; import { UpdateChapterPatchInput } from '@/lib/graphql/generated/graphql.ts'; -import { ChapterIdInfo, TChapterReader } from '@/modules/chapter/Chapter.types.ts'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; +import { ChapterIdInfo, TChapterReader } from '@/features/chapter/Chapter.types.ts'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; import { CHAPTER_READER_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; -import { isPageOfOutdatedPageLoadStates, isSpreadPage } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { isPageOfOutdatedPageLoadStates, isSpreadPage } from '@/features/reader/utils/ReaderPager.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; import { coerceIn } from '@/lib/HelperFunctions.ts'; import { DirectionOffset } from '@/Base.types.ts'; diff --git a/src/modules/reader/utils/ReaderPager.utils.tsx b/src/features/reader/utils/ReaderPager.utils.tsx similarity index 97% rename from src/modules/reader/utils/ReaderPager.utils.tsx rename to src/features/reader/utils/ReaderPager.utils.tsx index 70c0842b..a98fcd4b 100644 --- a/src/modules/reader/utils/ReaderPager.utils.tsx +++ b/src/features/reader/utils/ReaderPager.utils.tsx @@ -17,24 +17,24 @@ import { ReadingDirection, ReadingMode, TReaderScrollbarContext, -} from '@/modules/reader/types/Reader.types.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; +} from '@/features/reader/types/Reader.types.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; import { getSetReaderWidth, isContinuousReadingMode, isContinuousVerticalReadingMode, shouldApplyReaderWidth, -} from '@/modules/reader/utils/ReaderSettings.utils.tsx'; -import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +} from '@/features/reader/utils/ReaderSettings.utils.tsx'; +import { ReaderStatePages } from '@/features/reader/types/ReaderProgressBar.types.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { ReaderPage } from '@/modules/reader/components/viewer/ReaderPage.tsx'; +import { ReaderPage } from '@/features/reader/components/viewer/ReaderPage.tsx'; import { reverseString } from '@/util/Strings.ts'; -import { getPage } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx'; +import { getPage } from '@/features/reader/utils/ReaderProgressBar.utils.tsx'; import { DirectionOffset } from '@/Base.types.ts'; -import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; -import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; +import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/features/reader/constants/ReaderSettings.constants.tsx'; import { coerceIn } from '@/lib/HelperFunctions.ts'; -import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; +import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; type CSSObject = ReturnType; diff --git a/src/modules/reader/utils/ReaderProgressBar.utils.tsx b/src/features/reader/utils/ReaderProgressBar.utils.tsx similarity index 95% rename from src/modules/reader/utils/ReaderProgressBar.utils.tsx rename to src/features/reader/utils/ReaderProgressBar.utils.tsx index c41e922d..3dcd663e 100644 --- a/src/modules/reader/utils/ReaderProgressBar.utils.tsx +++ b/src/features/reader/utils/ReaderProgressBar.utils.tsx @@ -6,9 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { ReaderProgressBarProps, TReaderProgressCurrentPage } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { getOptionForDirection as getOptionForDirectionImpl } from '@/modules/theme/services/ThemeCreator.ts'; -import { ProgressBarPosition } from '@/modules/reader/types/Reader.types.ts'; +import { ReaderProgressBarProps, TReaderProgressCurrentPage } from '@/features/reader/types/ReaderProgressBar.types.ts'; +import { getOptionForDirection as getOptionForDirectionImpl } from '@/features/theme/services/ThemeCreator.ts'; +import { ProgressBarPosition } from '@/features/reader/types/Reader.types.ts'; import { coerceIn } from '@/lib/HelperFunctions.ts'; export const getPage = (pageIndex: number, pages: ReaderProgressBarProps['pages']): TReaderProgressCurrentPage => { diff --git a/src/modules/reader/utils/ReaderSettings.utils.tsx b/src/features/reader/utils/ReaderSettings.utils.tsx similarity index 86% rename from src/modules/reader/utils/ReaderSettings.utils.tsx rename to src/features/reader/utils/ReaderSettings.utils.tsx index 11d73bd8..338320b6 100644 --- a/src/modules/reader/utils/ReaderSettings.utils.tsx +++ b/src/features/reader/utils/ReaderSettings.utils.tsx @@ -15,13 +15,13 @@ import { ReaderPagerProps, ReaderPageScaleMode, ReadingMode, -} from '@/modules/reader/types/Reader.types.ts'; -import { MangaGenreInfo, MangaSourceLngInfo, MangaSourceNameInfo } from '@/modules/manga/Manga.types.ts'; -import { Mangas } from '@/modules/manga/services/Mangas.ts'; -import { ReaderPagedPager } from '@/modules/reader/components/viewer/pager/ReaderPagedPager.tsx'; -import { ReaderDoublePagedPager } from '@/modules/reader/components/viewer/pager/ReaderDoublePagedPager.tsx'; -import { ReaderVerticalPager } from '@/modules/reader/components/viewer/pager/ReaderVerticalPager.tsx'; -import { ReaderHorizontalPager } from '@/modules/reader/components/viewer/pager/ReaderHorizontalPager.tsx'; +} from '@/features/reader/types/Reader.types.ts'; +import { MangaGenreInfo, MangaSourceLngInfo, MangaSourceNameInfo } from '@/features/manga/Manga.types.ts'; +import { Mangas } from '@/features/manga/services/Mangas.ts'; +import { ReaderPagedPager } from '@/features/reader/components/viewer/pager/ReaderPagedPager.tsx'; +import { ReaderDoublePagedPager } from '@/features/reader/components/viewer/pager/ReaderDoublePagedPager.tsx'; +import { ReaderVerticalPager } from '@/features/reader/components/viewer/pager/ReaderVerticalPager.tsx'; +import { ReaderHorizontalPager } from '@/features/reader/components/viewer/pager/ReaderHorizontalPager.tsx'; export const isOffsetDoubleSpreadPagesEditable = (readingMode: IReaderSettings['readingMode']): boolean => readingMode === ReadingMode.DOUBLE_PAGE; diff --git a/src/modules/settings/Settings.constants.ts b/src/features/settings/Settings.constants.ts similarity index 93% rename from src/modules/settings/Settings.constants.ts rename to src/features/settings/Settings.constants.ts index bff21d99..dbbd935d 100644 --- a/src/modules/settings/Settings.constants.ts +++ b/src/features/settings/Settings.constants.ts @@ -6,16 +6,16 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { DEFAULT_DEVICE } from '@/modules/device/services/Device.ts'; -import { DEFAULT_SORT_SETTINGS } from '@/modules/migration/Migration.constants.ts'; -import { GlobalUpdateSkipEntriesSettings, MetadataServerSettings } from '@/modules/settings/Settings.types.ts'; -import { GridLayout } from '@/modules/core/Core.types.ts'; -import { getDefaultLanguages } from '@/modules/core/utils/Languages.ts'; -import { ThemeMode } from '@/modules/theme/contexts/AppThemeContext.tsx'; +import { DEFAULT_DEVICE } from '@/features/device/services/Device.ts'; +import { DEFAULT_SORT_SETTINGS } from '@/features/migration/Migration.constants.ts'; +import { GlobalUpdateSkipEntriesSettings, MetadataServerSettings } from '@/features/settings/Settings.types.ts'; +import { GridLayout } from '@/features/core/Core.types.ts'; +import { getDefaultLanguages } from '@/features/core/utils/Languages.ts'; +import { ThemeMode } from '@/features/theme/contexts/AppThemeContext.tsx'; import { SelectSettingValue, SelectSettingValueDisplayInfo, -} from '@/modules/core/components/settings/SelectSetting.tsx'; +} from '@/features/core/components/settings/SelectSetting.tsx'; import { AuthMode, WebUiChannel, WebUiFlavor, WebUiInterface } from '@/lib/graphql/generated/graphql.ts'; import { TranslationKey } from '@/Base.types.ts'; diff --git a/src/modules/settings/Settings.types.ts b/src/features/settings/Settings.types.ts similarity index 72% rename from src/modules/settings/Settings.types.ts rename to src/features/settings/Settings.types.ts index 0ee1483e..a233a634 100644 --- a/src/modules/settings/Settings.types.ts +++ b/src/features/settings/Settings.types.ts @@ -6,17 +6,17 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts'; -import { MetadataLibrarySettings } from '@/modules/library/Library.types.ts'; -import { MetadataClientSettings } from '@/modules/device/Device.types.ts'; -import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts'; -import { MetadataBrowseSettings } from '@/modules/browse/Browse.types.ts'; -import { MetadataTrackingSettings } from '@/modules/tracker/Tracker.types.ts'; -import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts'; -import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts'; +import { MetadataDownloadSettings } from '@/features/downloads/Downloads.types.ts'; +import { MetadataLibrarySettings } from '@/features/library/Library.types.ts'; +import { MetadataClientSettings } from '@/features/device/Device.types.ts'; +import { MetadataMigrationSettings } from '@/features/migration/Migration.types.ts'; +import { MetadataBrowseSettings } from '@/features/browse/Browse.types.ts'; +import { MetadataTrackingSettings } from '@/features/tracker/Tracker.types.ts'; +import { MetadataUpdateSettings } from '@/features/app-updates/AppUpdateChecker.types.ts'; +import { MetadataThemeSettings } from '@/features/theme/AppTheme.types.ts'; import { GetServerSettingsQuery } from '@/lib/graphql/generated/graphql.ts'; -import { MetadataHistorySettings } from '@/modules/history/History.types.ts'; -import { ServerSettings as GqlServerSettings } from '@/modules/settings/Settings.types.ts'; +import { MetadataHistorySettings } from '@/features/history/History.types.ts'; +import { ServerSettings as GqlServerSettings } from '@/features/settings/Settings.types.ts'; export type MetadataServerSettingKeys = keyof MetadataServerSettings; diff --git a/src/modules/settings/components/globalUpdate/GlobalUpdateSettings.tsx b/src/features/settings/components/globalUpdate/GlobalUpdateSettings.tsx similarity index 84% rename from src/modules/settings/components/globalUpdate/GlobalUpdateSettings.tsx rename to src/features/settings/components/globalUpdate/GlobalUpdateSettings.tsx index b02cc0f0..1c6ec1a7 100644 --- a/src/modules/settings/components/globalUpdate/GlobalUpdateSettings.tsx +++ b/src/features/settings/components/globalUpdate/GlobalUpdateSettings.tsx @@ -15,12 +15,12 @@ import Switch from '@mui/material/Switch'; import { CategoriesInclusionSetting, CategoriesInclusionSettingProps, -} from '@/modules/category/components/CategoriesInclusionSetting.tsx'; -import { GlobalUpdateSettingsEntries } from '@/modules/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx'; -import { GlobalUpdateSettingsInterval } from '@/modules/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx'; +} from '@/features/category/components/CategoriesInclusionSetting.tsx'; +import { GlobalUpdateSettingsEntries } from '@/features/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx'; +import { GlobalUpdateSettingsInterval } from '@/features/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { LibrarySettingsType, ServerSettings } from '@/modules/settings/Settings.types.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { LibrarySettingsType, ServerSettings } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const GlobalUpdateSettings = ({ diff --git a/src/modules/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx b/src/features/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx similarity index 93% rename from src/modules/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx rename to src/features/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx index 2892a0c7..aa12aa66 100644 --- a/src/modules/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx +++ b/src/features/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx @@ -17,12 +17,12 @@ import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; import DialogTitle from '@mui/material/DialogTitle'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { CheckboxContainer } from '@/modules/core/components/inputs/CheckboxContainer.ts'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { GlobalUpdateSkipEntriesSettings, ServerSettings } from '@/modules/settings/Settings.types.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { CheckboxContainer } from '@/features/core/components/inputs/CheckboxContainer.ts'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; +import { GlobalUpdateSkipEntriesSettings, ServerSettings } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { GLOBAL_UPDATE_SKIP_ENTRIES_TO_TRANSLATION } from '@/modules/settings/Settings.constants.ts'; +import { GLOBAL_UPDATE_SKIP_ENTRIES_TO_TRANSLATION } from '@/features/settings/Settings.constants.ts'; const getSkipMangasText = (settings: GlobalUpdateSkipEntriesSettings) => { const skipSettings: string[] = []; diff --git a/src/modules/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx b/src/features/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx similarity index 91% rename from src/modules/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx rename to src/features/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx index cb5b6466..c312637a 100644 --- a/src/modules/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx +++ b/src/features/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx @@ -13,11 +13,11 @@ import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { useCallback } from 'react'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; -import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; +import { getPersistedServerSetting, usePersistedValue } from '@/features/core/hooks/usePersistedValue.tsx'; -import { ServerSettings } from '@/modules/settings/Settings.types.ts'; -import { GLOBAL_UPDATE_INTERVAL } from '@/modules/settings/Settings.constants.ts'; +import { ServerSettings } from '@/features/settings/Settings.types.ts'; +import { GLOBAL_UPDATE_INTERVAL } from '@/features/settings/Settings.constants.ts'; export const GlobalUpdateSettingsInterval = ({ globalUpdateInterval, diff --git a/src/modules/settings/components/webUI/WebUIUpdateIntervalSetting.tsx b/src/features/settings/components/webUI/WebUIUpdateIntervalSetting.tsx similarity index 90% rename from src/modules/settings/components/webUI/WebUIUpdateIntervalSetting.tsx rename to src/features/settings/components/webUI/WebUIUpdateIntervalSetting.tsx index 63e3bb20..140fb422 100644 --- a/src/modules/settings/components/webUI/WebUIUpdateIntervalSetting.tsx +++ b/src/features/settings/components/webUI/WebUIUpdateIntervalSetting.tsx @@ -13,12 +13,12 @@ import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { useCallback } from 'react'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; -import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { ServerSettings } from '@/modules/settings/Settings.types.ts'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; +import { getPersistedServerSetting, usePersistedValue } from '@/features/core/hooks/usePersistedValue.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { ServerSettings } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { WEB_UI_UPDATE_INTERVAL } from '@/modules/settings/Settings.constants.ts'; +import { WEB_UI_UPDATE_INTERVAL } from '@/features/settings/Settings.constants.ts'; export const WebUIUpdateIntervalSetting = ({ disabled = false, diff --git a/src/modules/settings/screens/About.tsx b/src/features/settings/screens/About.tsx similarity index 94% rename from src/modules/settings/screens/About.tsx rename to src/features/settings/screens/About.tsx index 5bbcda09..58e1f314 100644 --- a/src/modules/settings/screens/About.tsx +++ b/src/features/settings/screens/About.tsx @@ -13,15 +13,15 @@ import { useTranslation } from 'react-i18next'; import ListSubheader from '@mui/material/ListSubheader'; import Divider from '@mui/material/Divider'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { ListItemLink } from '@/modules/core/components/lists/ListItemLink.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; +import { ListItemLink } from '@/features/core/components/lists/ListItemLink.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; import { UpdateState } from '@/lib/graphql/generated/graphql.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { VersionInfo } from '@/modules/app-updates/components/VersionInfo.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { VersionInfo } from '@/features/app-updates/components/VersionInfo.tsx'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { epochToDate } from '@/util/DateHelper.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; export function About() { const { t } = useTranslation(); diff --git a/src/modules/settings/screens/Appearance.tsx b/src/features/settings/screens/Appearance.tsx similarity index 88% rename from src/modules/settings/screens/Appearance.tsx rename to src/features/settings/screens/Appearance.tsx index e4f58c80..f7b6560e 100644 --- a/src/modules/settings/screens/Appearance.tsx +++ b/src/features/settings/screens/Appearance.tsx @@ -15,26 +15,26 @@ import ListSubheader from '@mui/material/ListSubheader'; import Switch from '@mui/material/Switch'; import Link from '@mui/material/Link'; import { useColorScheme } from '@mui/material/styles'; -import { ThemeMode, useAppThemeContext } from '@/modules/theme/contexts/AppThemeContext.tsx'; -import { Select } from '@/modules/core/components/inputs/Select.tsx'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { ThemeMode, useAppThemeContext } from '@/features/theme/contexts/AppThemeContext.tsx'; +import { Select } from '@/features/core/components/inputs/Select.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; import { I18nResourceCode, i18nResources } from '@/i18n'; -import { languageCodeToName } from '@/modules/core/utils/Languages.ts'; -import { ThemeList } from '@/modules/theme/components/ThemeList.tsx'; +import { languageCodeToName } from '@/features/core/utils/Languages.ts'; +import { ThemeList } from '@/features/theme/components/ThemeList.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { MetadataThemeSettings } from '@/features/theme/AppTheme.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { AppStorage } from '@/lib/storage/AppStorage.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; -import { MANGA_GRID_WIDTH, SERVER_SETTINGS_METADATA_DEFAULT } from '@/modules/settings/Settings.constants.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; +import { MANGA_GRID_WIDTH, SERVER_SETTINGS_METADATA_DEFAULT } from '@/features/settings/Settings.constants.ts'; import { MUI_THEME_MODE_KEY } from '@/lib/mui/MUI.constants.ts'; export const Appearance = () => { diff --git a/src/modules/settings/screens/More.tsx b/src/features/settings/screens/More.tsx similarity index 79% rename from src/modules/settings/screens/More.tsx rename to src/features/settings/screens/More.tsx index fecb2396..4e0056b6 100644 --- a/src/modules/settings/screens/More.tsx +++ b/src/features/settings/screens/More.tsx @@ -13,14 +13,14 @@ import ListItemIcon from '@mui/material/ListItemIcon'; import ListItemText from '@mui/material/ListItemText'; import ListAltIcon from '@mui/icons-material/ListAlt'; import Divider from '@mui/material/Divider'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { ListItemLink } from '@/modules/core/components/lists/ListItemLink.tsx'; -import { NAVIGATION_BAR_ITEMS } from '@/modules/navigation-bar/NavigationBar.constants.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { NavigationBarUtil } from '@/modules/navigation-bar/NavigationBar.util.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { NavbarItem, NavBarItemMoreGroup } from '@/modules/navigation-bar/NavigationBar.types.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { ListItemLink } from '@/features/core/components/lists/ListItemLink.tsx'; +import { NAVIGATION_BAR_ITEMS } from '@/features/navigation-bar/NavigationBar.constants.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { NavigationBarUtil } from '@/features/navigation-bar/NavigationBar.util.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { NavbarItem, NavBarItemMoreGroup } from '@/features/navigation-bar/NavigationBar.types.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; export const More = () => { const { t } = useTranslation(); diff --git a/src/modules/settings/screens/ServerSettings.tsx b/src/features/settings/screens/ServerSettings.tsx similarity index 96% rename from src/modules/settings/screens/ServerSettings.tsx rename to src/features/settings/screens/ServerSettings.tsx index b17d6f93..bb974cc8 100644 --- a/src/modules/settings/screens/ServerSettings.tsx +++ b/src/features/settings/screens/ServerSettings.tsx @@ -16,24 +16,24 @@ import Switch from '@mui/material/Switch'; import ListSubheader from '@mui/material/ListSubheader'; import { t as translate } from 'i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; -import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; -import { SelectSetting } from '@/modules/core/components/settings/SelectSetting.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; +import { TextSetting } from '@/features/core/components/settings/text/TextSetting.tsx'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; +import { SelectSetting } from '@/features/core/components/settings/SelectSetting.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts'; -import { ServerSettings as GqlServerSettings, ServerSettingsType } from '@/modules/settings/Settings.types.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { MetadataUpdateSettings } from '@/features/app-updates/AppUpdateChecker.types.ts'; +import { ServerSettings as GqlServerSettings, ServerSettingsType } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; import { AuthMode, SortOrder } from '@/lib/graphql/generated/graphql'; -import { AUTH_MODES_SELECT_VALUES } from '@/modules/settings/Settings.constants.ts'; +import { AUTH_MODES_SELECT_VALUES } from '@/features/settings/Settings.constants.ts'; const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType => ({ ip: settings.ip, diff --git a/src/modules/settings/screens/Settings.tsx b/src/features/settings/screens/Settings.tsx similarity index 94% rename from src/modules/settings/screens/Settings.tsx rename to src/features/settings/screens/Settings.tsx index 8192cc07..7470807e 100644 --- a/src/modules/settings/screens/Settings.tsx +++ b/src/features/settings/screens/Settings.tsx @@ -23,12 +23,12 @@ import DevicesIcon from '@mui/icons-material/Devices'; import SyncIcon from '@mui/icons-material/Sync'; import PaletteIcon from '@mui/icons-material/Palette'; import HistoryIcon from '@mui/icons-material/History'; -import { ListItemLink } from '@/modules/core/components/lists/ListItemLink.tsx'; +import { ListItemLink } from '@/features/core/components/lists/ListItemLink.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; export function Settings() { const { t } = useTranslation(); diff --git a/src/modules/settings/screens/WebUISettings.tsx b/src/features/settings/screens/WebUISettings.tsx similarity index 87% rename from src/modules/settings/screens/WebUISettings.tsx rename to src/features/settings/screens/WebUISettings.tsx index 5bdd3bc1..b7e9d2fa 100644 --- a/src/modules/settings/screens/WebUISettings.tsx +++ b/src/features/settings/screens/WebUISettings.tsx @@ -12,27 +12,27 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { WebUIUpdateIntervalSetting } from '@/modules/settings/components/webUI/WebUIUpdateIntervalSetting.tsx'; -import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; -import { SelectSetting } from '@/modules/core/components/settings/SelectSetting.tsx'; +import { WebUIUpdateIntervalSetting } from '@/features/settings/components/webUI/WebUIUpdateIntervalSetting.tsx'; +import { TextSetting } from '@/features/core/components/settings/text/TextSetting.tsx'; +import { SelectSetting } from '@/features/core/components/settings/SelectSetting.tsx'; import { WebUiChannel, WebUiFlavor, WebUiInterface } from '@/lib/graphql/generated/graphql.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts'; -import { ServerSettings, WebUISettingsType } from '@/modules/settings/Settings.types.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { MetadataUpdateSettings } from '@/features/app-updates/AppUpdateChecker.types.ts'; +import { ServerSettings, WebUISettingsType } from '@/features/settings/Settings.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; import { WEB_UI_CHANNEL_SELECT_VALUES, WEB_UI_FLAVOR_SELECT_VALUES, WEB_UI_INTERFACE_SELECT_VALUES, -} from '@/modules/settings/Settings.constants.ts'; +} from '@/features/settings/Settings.constants.ts'; const extractWebUISettings = (settings: ServerSettings): WebUISettingsType => ({ webUIFlavor: settings.webUIFlavor, diff --git a/src/modules/settings/services/ServerSettingsMetadata.ts b/src/features/settings/services/ServerSettingsMetadata.ts similarity index 86% rename from src/modules/settings/services/ServerSettingsMetadata.ts rename to src/features/settings/services/ServerSettingsMetadata.ts index 967b8ebf..19834d36 100644 --- a/src/modules/settings/services/ServerSettingsMetadata.ts +++ b/src/features/settings/services/ServerSettingsMetadata.ts @@ -8,13 +8,13 @@ import { useEffect, useMemo } from 'react'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { requestUpdateServerMetadata } from '@/modules/metadata/services/MetadataUpdater.ts'; +import { requestUpdateServerMetadata } from '@/features/metadata/services/MetadataUpdater.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { SERVER_SETTINGS_METADATA_DEFAULT } from '@/modules/settings/Settings.constants.ts'; -import { MetadataServerSettingKeys, MetadataServerSettings } from '@/modules/settings/Settings.types.ts'; -import { convertFromGqlMeta } from '@/modules/metadata/services/MetadataConverter.ts'; -import { getMetadataFrom } from '@/modules/metadata/services/MetadataReader.ts'; -import { AllowedMetadataValueTypes, Metadata } from '@/modules/metadata/Metadata.types.ts'; +import { SERVER_SETTINGS_METADATA_DEFAULT } from '@/features/settings/Settings.constants.ts'; +import { MetadataServerSettingKeys, MetadataServerSettings } from '@/features/settings/Settings.types.ts'; +import { convertFromGqlMeta } from '@/features/metadata/services/MetadataConverter.ts'; +import { getMetadataFrom } from '@/features/metadata/services/MetadataReader.ts'; +import { AllowedMetadataValueTypes, Metadata } from '@/features/metadata/Metadata.types.ts'; export const convertSettingsToMetadata = ( settings: Partial, diff --git a/src/modules/source/Source.types.ts b/src/features/source/Source.types.ts similarity index 100% rename from src/modules/source/Source.types.ts rename to src/features/source/Source.types.ts diff --git a/src/modules/source/components/SourceCard.tsx b/src/features/source/components/SourceCard.tsx similarity index 87% rename from src/modules/source/components/SourceCard.tsx rename to src/features/source/components/SourceCard.tsx index 9fe47c7b..83897623 100644 --- a/src/modules/source/components/SourceCard.tsx +++ b/src/features/source/components/SourceCard.tsx @@ -18,18 +18,18 @@ import PushPinIcon from '@mui/icons-material/PushPin'; import PushPinOutlinedIcon from '@mui/icons-material/PushPinOutlined'; import IconButton from '@mui/material/IconButton'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { SourceContentType } from '@/modules/source/screens/SourceMangas.tsx'; +import { SourceContentType } from '@/features/source/screens/SourceMangas.tsx'; import { GetSourcesListQuery } from '@/lib/graphql/generated/graphql.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; -import { Sources } from '@/modules/source/services/Sources.ts'; -import { ListCardAvatar } from '@/modules/core/components/lists/cards/ListCardAvatar.tsx'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { createUpdateSourceMetadata, useGetSourceMetadata } from '@/modules/source/services/SourceMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { Sources } from '@/features/source/services/Sources.ts'; +import { ListCardAvatar } from '@/features/core/components/lists/cards/ListCardAvatar.tsx'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { createUpdateSourceMetadata, useGetSourceMetadata } from '@/features/source/services/SourceMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { languageCodeToName } from '@/modules/core/utils/Languages.ts'; +import { languageCodeToName } from '@/features/core/utils/Languages.ts'; interface IProps { source: GetSourcesListQuery['sources']['nodes'][number]; diff --git a/src/modules/source/components/SourceGridLayout.tsx b/src/features/source/components/SourceGridLayout.tsx similarity index 71% rename from src/modules/source/components/SourceGridLayout.tsx rename to src/features/source/components/SourceGridLayout.tsx index c7b0f4b9..256c0761 100644 --- a/src/modules/source/components/SourceGridLayout.tsx +++ b/src/features/source/components/SourceGridLayout.tsx @@ -6,9 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { GridLayouts } from '@/modules/core/components/GridLayouts.tsx'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; -import { GridLayout } from '@/modules/core/Core.types.ts'; +import { GridLayouts } from '@/features/core/components/GridLayouts.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; +import { GridLayout } from '@/features/core/Core.types.ts'; export function SourceGridLayout() { const [sourceGridLayout, setSourceGridLayout] = useLocalStorage('source-grid-layout', GridLayout.Compact); diff --git a/src/modules/source/components/SourceLanguageSelect.tsx b/src/features/source/components/SourceLanguageSelect.tsx similarity index 93% rename from src/modules/source/components/SourceLanguageSelect.tsx rename to src/features/source/components/SourceLanguageSelect.tsx index 9e10836c..a453595a 100644 --- a/src/modules/source/components/SourceLanguageSelect.tsx +++ b/src/features/source/components/SourceLanguageSelect.tsx @@ -21,9 +21,9 @@ import { useTranslation } from 'react-i18next'; import { Virtuoso } from 'react-virtuoso'; import Box from '@mui/material/Box'; import ListItemAvatar from '@mui/material/ListItemAvatar'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts'; -import { languageSortComparator, toUniqueLanguageCodes } from '@/modules/core/utils/Languages.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { translateExtensionLanguage } from '@/features/extension/Extensions.utils.ts'; +import { languageSortComparator, toUniqueLanguageCodes } from '@/features/core/utils/Languages.ts'; import { SourceDisplayNameInfo, SourceIconInfo, @@ -31,12 +31,12 @@ import { SourceLanguageInfo, SourceMetaInfo, SourceNameInfo, -} from '@/modules/source/Source.types.ts'; -import { Sources } from '@/modules/source/services/Sources'; -import { getSourceMetadata, updateSourceMetadata } from '@/modules/source/services/SourceMetadata.ts'; +} from '@/features/source/Source.types.ts'; +import { Sources } from '@/features/source/services/Sources'; +import { getSourceMetadata, updateSourceMetadata } from '@/features/source/services/SourceMetadata.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { ListCardAvatar } from '@/modules/core/components/lists/cards/ListCardAvatar.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { ListCardAvatar } from '@/features/core/components/lists/cards/ListCardAvatar.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const SourceLanguageSelect = ({ diff --git a/src/modules/source/components/SourceOptions.tsx b/src/features/source/components/SourceOptions.tsx similarity index 92% rename from src/modules/source/components/SourceOptions.tsx rename to src/features/source/components/SourceOptions.tsx index da0ec2ee..e5d962a6 100644 --- a/src/modules/source/components/SourceOptions.tsx +++ b/src/features/source/components/SourceOptions.tsx @@ -23,22 +23,22 @@ import DialogTitle from '@mui/material/DialogTitle'; import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; import TextField from '@mui/material/TextField'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { OptionsPanel } from '@/modules/core/components/modals/OptionsPanel.tsx'; -import { CheckBoxFilter } from '@/modules/source/components/filters/CheckBoxFilter.tsx'; -import { HeaderFilter } from '@/modules/source/components/filters/HeaderFilter.tsx'; -import { SelectFilter } from '@/modules/source/components/filters/SelectFilter.tsx'; -import { SortFilter } from '@/modules/source/components/filters/SortFilter.tsx'; -import { TextFilter } from '@/modules/source/components/filters/TextFilter.tsx'; -import { TriStateFilter } from '@/modules/source/components/filters/TriStateFilter.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { OptionsPanel } from '@/features/core/components/modals/OptionsPanel.tsx'; +import { CheckBoxFilter } from '@/features/source/components/filters/CheckBoxFilter.tsx'; +import { HeaderFilter } from '@/features/source/components/filters/HeaderFilter.tsx'; +import { SelectFilter } from '@/features/source/components/filters/SelectFilter.tsx'; +import { SortFilter } from '@/features/source/components/filters/SortFilter.tsx'; +import { TextFilter } from '@/features/source/components/filters/TextFilter.tsx'; +import { TriStateFilter } from '@/features/source/components/filters/TriStateFilter.tsx'; // this can only cycle once, so should be fine // eslint-disable-next-line import/no-cycle -import { GroupFilter } from '@/modules/source/components/filters/GroupFilter.tsx'; -import { SeparatorFilter } from '@/modules/source/components/filters/SeparatorFilter.tsx'; -import { StyledFab } from '@/modules/core/components/buttons/StyledFab.tsx'; -import { awaitConfirmation } from '@/modules/core/utils/AwaitableDialog.tsx'; +import { GroupFilter } from '@/features/source/components/filters/GroupFilter.tsx'; +import { SeparatorFilter } from '@/features/source/components/filters/SeparatorFilter.tsx'; +import { StyledFab } from '@/features/core/components/buttons/StyledFab.tsx'; +import { awaitConfirmation } from '@/features/core/utils/AwaitableDialog.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { ISourceMetadata, SourceFilters } from '@/modules/source/Source.types.ts'; +import { ISourceMetadata, SourceFilters } from '@/features/source/Source.types.ts'; interface IFilters { sourceFilter: SourceFilters[]; diff --git a/src/modules/source/components/filters/CheckBoxFilter.tsx b/src/features/source/components/filters/CheckBoxFilter.tsx similarity index 93% rename from src/modules/source/components/filters/CheckBoxFilter.tsx rename to src/features/source/components/filters/CheckBoxFilter.tsx index 8602bd93..14862811 100644 --- a/src/modules/source/components/filters/CheckBoxFilter.tsx +++ b/src/features/source/components/filters/CheckBoxFilter.tsx @@ -7,7 +7,7 @@ */ import React from 'react'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; interface Props { state: boolean; diff --git a/src/modules/source/components/filters/GroupFilter.tsx b/src/features/source/components/filters/GroupFilter.tsx similarity index 92% rename from src/modules/source/components/filters/GroupFilter.tsx rename to src/features/source/components/filters/GroupFilter.tsx index 871b6242..f2b1aca6 100644 --- a/src/modules/source/components/filters/GroupFilter.tsx +++ b/src/features/source/components/filters/GroupFilter.tsx @@ -15,8 +15,8 @@ import Stack from '@mui/material/Stack'; import Box from '@mui/material/Box'; import React from 'react'; // eslint-disable-next-line import/no-cycle -import { Options } from '@/modules/source/components/SourceOptions.tsx'; -import { SourceFilters } from '@/modules/source/Source.types.ts'; +import { Options } from '@/features/source/components/SourceOptions.tsx'; +import { SourceFilters } from '@/features/source/Source.types.ts'; interface Props { state: ExtractByKeyValue['filters']; diff --git a/src/modules/source/components/filters/HeaderFilter.tsx b/src/features/source/components/filters/HeaderFilter.tsx similarity index 100% rename from src/modules/source/components/filters/HeaderFilter.tsx rename to src/features/source/components/filters/HeaderFilter.tsx diff --git a/src/modules/source/components/filters/SelectFilter.tsx b/src/features/source/components/filters/SelectFilter.tsx similarity index 100% rename from src/modules/source/components/filters/SelectFilter.tsx rename to src/features/source/components/filters/SelectFilter.tsx diff --git a/src/modules/source/components/filters/SeparatorFilter.tsx b/src/features/source/components/filters/SeparatorFilter.tsx similarity index 100% rename from src/modules/source/components/filters/SeparatorFilter.tsx rename to src/features/source/components/filters/SeparatorFilter.tsx diff --git a/src/modules/source/components/filters/SortFilter.tsx b/src/features/source/components/filters/SortFilter.tsx similarity index 96% rename from src/modules/source/components/filters/SortFilter.tsx rename to src/features/source/components/filters/SortFilter.tsx index 979a0440..1e58e4aa 100644 --- a/src/modules/source/components/filters/SortFilter.tsx +++ b/src/features/source/components/filters/SortFilter.tsx @@ -14,7 +14,7 @@ import ListItemText from '@mui/material/ListItemText'; import Stack from '@mui/material/Stack'; import Box from '@mui/material/Box'; import React from 'react'; -import { SortRadioInput } from '@/modules/core/components/inputs/SortRadioInput.tsx'; +import { SortRadioInput } from '@/features/core/components/inputs/SortRadioInput.tsx'; import { SortSelectionInput } from '@/lib/graphql/generated/graphql.ts'; interface Props { diff --git a/src/modules/source/components/filters/TextFilter.tsx b/src/features/source/components/filters/TextFilter.tsx similarity index 96% rename from src/modules/source/components/filters/TextFilter.tsx rename to src/features/source/components/filters/TextFilter.tsx index bdd4aaab..2f960bba 100644 --- a/src/modules/source/components/filters/TextFilter.tsx +++ b/src/features/source/components/filters/TextFilter.tsx @@ -12,7 +12,7 @@ import Input from '@mui/material/Input'; import InputAdornment from '@mui/material/InputAdornment'; import InputLabel from '@mui/material/InputLabel'; import React, { useEffect } from 'react'; -import { useDebounce } from '@/modules/core/hooks/useDebounce.ts'; +import { useDebounce } from '@/features/core/hooks/useDebounce.ts'; interface Props { state: string; diff --git a/src/modules/source/components/filters/TriStateFilter.tsx b/src/features/source/components/filters/TriStateFilter.tsx similarity index 95% rename from src/modules/source/components/filters/TriStateFilter.tsx rename to src/features/source/components/filters/TriStateFilter.tsx index 434cdb7e..2572bd82 100644 --- a/src/modules/source/components/filters/TriStateFilter.tsx +++ b/src/features/source/components/filters/TriStateFilter.tsx @@ -7,7 +7,7 @@ */ import React from 'react'; -import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; +import { ThreeStateCheckboxInput } from '@/features/core/components/inputs/ThreeStateCheckboxInput.tsx'; import { TriState } from '@/lib/graphql/generated/graphql.ts'; interface Props { diff --git a/src/modules/source/components/sourceConfiguration/EditTextPreference.tsx b/src/features/source/components/sourceConfiguration/EditTextPreference.tsx similarity index 97% rename from src/modules/source/components/sourceConfiguration/EditTextPreference.tsx rename to src/features/source/components/sourceConfiguration/EditTextPreference.tsx index 7011c4bf..33ec2e50 100644 --- a/src/modules/source/components/sourceConfiguration/EditTextPreference.tsx +++ b/src/features/source/components/sourceConfiguration/EditTextPreference.tsx @@ -18,7 +18,7 @@ import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; import ListItemButton from '@mui/material/ListItemButton'; -import { EditTextPreferenceProps } from '@/modules/source/Source.types.ts'; +import { EditTextPreferenceProps } from '@/features/source/Source.types.ts'; export function EditTextPreference(props: EditTextPreferenceProps) { const { t } = useTranslation(); diff --git a/src/modules/source/components/sourceConfiguration/ListPreference.tsx b/src/features/source/components/sourceConfiguration/ListPreference.tsx similarity index 98% rename from src/modules/source/components/sourceConfiguration/ListPreference.tsx rename to src/features/source/components/sourceConfiguration/ListPreference.tsx index f9599c9f..63e6daa8 100644 --- a/src/modules/source/components/sourceConfiguration/ListPreference.tsx +++ b/src/features/source/components/sourceConfiguration/ListPreference.tsx @@ -19,7 +19,7 @@ import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; import ListItemButton from '@mui/material/ListItemButton'; -import { ListPreferenceProps } from '@/modules/source/Source.types.ts'; +import { ListPreferenceProps } from '@/features/source/Source.types.ts'; interface IListDialogProps { value: string; diff --git a/src/modules/source/components/sourceConfiguration/MultiSelectListPreference.tsx b/src/features/source/components/sourceConfiguration/MultiSelectListPreference.tsx similarity index 98% rename from src/modules/source/components/sourceConfiguration/MultiSelectListPreference.tsx rename to src/features/source/components/sourceConfiguration/MultiSelectListPreference.tsx index 08f30729..5c404fd9 100644 --- a/src/modules/source/components/sourceConfiguration/MultiSelectListPreference.tsx +++ b/src/features/source/components/sourceConfiguration/MultiSelectListPreference.tsx @@ -19,7 +19,7 @@ import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; import ListItemButton from '@mui/material/ListItemButton'; import { cloneObject } from '@/util/cloneObject.tsx'; -import { MultiSelectListPreferenceProps } from '@/modules/source/Source.types.ts'; +import { MultiSelectListPreferenceProps } from '@/features/source/Source.types.ts'; interface IListDialogProps { selectedValues: string[]; diff --git a/src/modules/source/components/sourceConfiguration/TwoStatePreference.tsx b/src/features/source/components/sourceConfiguration/TwoStatePreference.tsx similarity index 98% rename from src/modules/source/components/sourceConfiguration/TwoStatePreference.tsx rename to src/features/source/components/sourceConfiguration/TwoStatePreference.tsx index 8479c523..4025ac59 100644 --- a/src/modules/source/components/sourceConfiguration/TwoStatePreference.tsx +++ b/src/features/source/components/sourceConfiguration/TwoStatePreference.tsx @@ -15,7 +15,7 @@ import { CheckBoxPreferenceProps, SwitchPreferenceCompatProps, TwoStatePreferenceProps, -} from '@/modules/source/Source.types.ts'; +} from '@/features/source/Source.types.ts'; function getTwoStateType(type: TwoStatePreferenceProps['twoStateType']) { if (type === 'Switch') { diff --git a/src/modules/source/screens/SourceConfigure.tsx b/src/features/source/screens/SourceConfigure.tsx similarity index 79% rename from src/modules/source/screens/SourceConfigure.tsx rename to src/features/source/screens/SourceConfigure.tsx index 3a717e0a..f7cb1486 100644 --- a/src/modules/source/screens/SourceConfigure.tsx +++ b/src/features/source/screens/SourceConfigure.tsx @@ -15,19 +15,19 @@ import { cloneObject } from '@/util/cloneObject.tsx'; import { SwitchPreferenceCompat, CheckBoxPreference, -} from '@/modules/source/components/sourceConfiguration/TwoStatePreference.tsx'; -import { ListPreference } from '@/modules/source/components/sourceConfiguration/ListPreference.tsx'; -import { EditTextPreference } from '@/modules/source/components/sourceConfiguration/EditTextPreference.tsx'; -import { MultiSelectListPreference } from '@/modules/source/components/sourceConfiguration/MultiSelectListPreference.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +} from '@/features/source/components/sourceConfiguration/TwoStatePreference.tsx'; +import { ListPreference } from '@/features/source/components/sourceConfiguration/ListPreference.tsx'; +import { EditTextPreference } from '@/features/source/components/sourceConfiguration/EditTextPreference.tsx'; +import { MultiSelectListPreference } from '@/features/source/components/sourceConfiguration/MultiSelectListPreference.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetCategoriesSettingsQueryVariables, GetSourceSettingsQuery } from '@/lib/graphql/generated/graphql.ts'; import { GET_SOURCE_SETTINGS } from '@/lib/graphql/queries/SourceQuery.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { PreferenceProps } from '@/modules/source/Source.types.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { PreferenceProps } from '@/features/source/Source.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; function getPrefComponent(type: string) { switch (type) { diff --git a/src/modules/source/screens/SourceMangas.tsx b/src/features/source/screens/SourceMangas.tsx similarity index 92% rename from src/modules/source/screens/SourceMangas.tsx rename to src/features/source/screens/SourceMangas.tsx index 3df83dee..d13a56b7 100644 --- a/src/modules/source/screens/SourceMangas.tsx +++ b/src/features/source/screens/SourceMangas.tsx @@ -19,16 +19,16 @@ import { styled } from '@mui/material/styles'; import FavoriteIcon from '@mui/icons-material/Favorite'; import NewReleasesIcon from '@mui/icons-material/NewReleases'; import FilterListIcon from '@mui/icons-material/FilterList'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager, AbortableApolloUseMutationPaginatedResponse, SPECIAL_ED_SOURCES, } from '@/lib/requests/RequestManager.ts'; -import { SourceGridLayout } from '@/modules/source/components/SourceGridLayout.tsx'; -import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx'; -import { SourceOptions } from '@/modules/source/components/SourceOptions.tsx'; -import { BaseMangaGrid } from '@/modules/manga/components/BaseMangaGrid.tsx'; +import { SourceGridLayout } from '@/features/source/components/SourceGridLayout.tsx'; +import { AppbarSearch } from '@/features/core/components/AppbarSearch.tsx'; +import { SourceOptions } from '@/features/source/components/SourceOptions.tsx'; +import { BaseMangaGrid } from '@/features/manga/components/BaseMangaGrid.tsx'; import { GetSourceBrowseQuery, GetSourceBrowseQueryVariables, @@ -38,24 +38,24 @@ import { import { updateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { useLocalStorage, useSessionStorage } from '@/modules/core/hooks/useStorage.tsx'; -import { MANGA_GRID_SNAPSHOT_KEY } from '@/modules/manga/components/MangaGrid.tsx'; -import { createUpdateSourceMetadata, useGetSourceMetadata } from '@/modules/source/services/SourceMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { useLocalStorage, useSessionStorage } from '@/features/core/hooks/useStorage.tsx'; +import { MANGA_GRID_SNAPSHOT_KEY } from '@/features/manga/components/MangaGrid.tsx'; +import { createUpdateSourceMetadata, useGetSourceMetadata } from '@/features/source/services/SourceMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { GET_SOURCE_BROWSE } from '@/lib/graphql/queries/SourceQuery.ts'; import { TranslationKey } from '@/Base.types.ts'; -import { IPos, SourceIdInfo } from '@/modules/source/Source.types.ts'; +import { IPos, SourceIdInfo } from '@/features/source/Source.types.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { EmptyView } from '@/modules/core/components/feedback/EmptyView.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; -import { GridLayout, SearchParam } from '@/modules/core/Core.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { EmptyView } from '@/features/core/components/feedback/EmptyView.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; +import { GridLayout, SearchParam } from '@/features/core/Core.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { Sources } from '@/modules/source/services/Sources.ts'; -import { useAppTitleAndAction } from '@/modules/navigation-bar/hooks/useAppTitleAndAction.ts'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; +import { Sources } from '@/features/source/services/Sources.ts'; +import { useAppTitleAndAction } from '@/features/navigation-bar/hooks/useAppTitleAndAction.ts'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; import { VirtuosoUtil } from '@/lib/virtuoso/Virtuoso.util.tsx'; const DEFAULT_SOURCE: SourceIdInfo = { id: '-1' }; diff --git a/src/modules/source/screens/Sources.tsx b/src/features/source/screens/Sources.tsx similarity index 82% rename from src/modules/source/screens/Sources.tsx rename to src/features/source/screens/Sources.tsx index 49cc9ff4..2516eff2 100644 --- a/src/modules/source/screens/Sources.tsx +++ b/src/features/source/screens/Sources.tsx @@ -12,24 +12,24 @@ import TravelExploreIcon from '@mui/icons-material/TravelExplore'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import Typography from '@mui/material/Typography'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { DefaultLanguage } from '@/modules/core/utils/Languages.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { SourceCard } from '@/modules/source/components/SourceCard.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { DefaultLanguage } from '@/features/core/utils/Languages.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { SourceCard } from '@/features/source/components/SourceCard.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { isPinnedOrLastUsedSource, translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { isPinnedOrLastUsedSource, translateExtensionLanguage } from '@/features/extension/Extensions.utils.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { Sources as SourceService } from '@/modules/source/services/Sources.ts'; -import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { useAppAction } from '@/modules/navigation-bar/hooks/useAppAction.ts'; -import { StyledGroupedVirtuoso } from '@/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; +import { Sources as SourceService } from '@/features/source/services/Sources.ts'; +import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { useAppAction } from '@/features/navigation-bar/hooks/useAppAction.ts'; +import { StyledGroupedVirtuoso } from '@/features/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; import { VirtuosoUtil } from '@/lib/virtuoso/Virtuoso.util.tsx'; -import { StyledGroupHeader } from '@/modules/core/components/virtuoso/StyledGroupHeader.tsx'; -import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; -import { SourceLanguageSelect } from '@/modules/source/components/SourceLanguageSelect.tsx'; +import { StyledGroupHeader } from '@/features/core/components/virtuoso/StyledGroupHeader.tsx'; +import { StyledGroupItemWrapper } from '@/features/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { SourceLanguageSelect } from '@/features/source/components/SourceLanguageSelect.tsx'; export function Sources({ tabsMenuHeight }: { tabsMenuHeight: number }) { const { t } = useTranslation(); diff --git a/src/modules/source/services/SourceMetadata.ts b/src/features/source/services/SourceMetadata.ts similarity index 87% rename from src/modules/source/services/SourceMetadata.ts rename to src/features/source/services/SourceMetadata.ts index c7bc2f82..3048134b 100644 --- a/src/modules/source/services/SourceMetadata.ts +++ b/src/features/source/services/SourceMetadata.ts @@ -7,12 +7,12 @@ */ import { useEffect, useMemo } from 'react'; -import { requestUpdateSourceMetadata } from '@/modules/metadata/services/MetadataUpdater.ts'; +import { requestUpdateSourceMetadata } from '@/features/metadata/services/MetadataUpdater.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { ISourceMetadata, SourceIdInfo, SourceMetadataKeys } from '@/modules/source/Source.types.ts'; -import { convertFromGqlMeta } from '@/modules/metadata/services/MetadataConverter.ts'; -import { getMetadataFrom } from '@/modules/metadata/services/MetadataReader.ts'; -import { AllowedMetadataValueTypes, GqlMetaHolder, Metadata } from '@/modules/metadata/Metadata.types.ts'; +import { ISourceMetadata, SourceIdInfo, SourceMetadataKeys } from '@/features/source/Source.types.ts'; +import { convertFromGqlMeta } from '@/features/metadata/services/MetadataConverter.ts'; +import { getMetadataFrom } from '@/features/metadata/services/MetadataReader.ts'; +import { AllowedMetadataValueTypes, GqlMetaHolder, Metadata } from '@/features/metadata/Metadata.types.ts'; const DEFAULT_SOURCE_METADATA: ISourceMetadata = { savedSearches: undefined, diff --git a/src/modules/source/services/Sources.ts b/src/features/source/services/Sources.ts similarity index 94% rename from src/modules/source/services/Sources.ts rename to src/features/source/services/Sources.ts index f388920e..3643f3a8 100644 --- a/src/modules/source/services/Sources.ts +++ b/src/features/source/services/Sources.ts @@ -15,20 +15,20 @@ import { SourceNsfwInfo, SourceMetaInfo, SourceRepoInfo, -} from '@/modules/source/Source.types.ts'; +} from '@/features/source/Source.types.ts'; import { DefaultLanguage, languageSpecialSortComparator, toComparableLanguage, toComparableLanguages, toUniqueLanguageCodes, -} from '@/modules/core/utils/Languages.ts'; -import { getSourceMetadata } from '@/modules/source/services/SourceMetadata.ts'; +} from '@/features/core/utils/Languages.ts'; +import { getSourceMetadata } from '@/features/source/services/SourceMetadata.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export class Sources { diff --git a/src/modules/theme/AppTheme.types.ts b/src/features/theme/AppTheme.types.ts similarity index 78% rename from src/modules/theme/AppTheme.types.ts rename to src/features/theme/AppTheme.types.ts index a00f4c73..1500a6fd 100644 --- a/src/modules/theme/AppTheme.types.ts +++ b/src/features/theme/AppTheme.types.ts @@ -6,8 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { AppTheme, AppThemes } from '@/modules/theme/services/AppThemes.ts'; -import { ThemeMode } from '@/modules/theme/contexts/AppThemeContext.tsx'; +import { AppTheme, AppThemes } from '@/features/theme/services/AppThemes.ts'; +import { ThemeMode } from '@/features/theme/contexts/AppThemeContext.tsx'; export type MetadataThemeSettings = { appTheme: AppThemes; diff --git a/src/modules/theme/ThemeDirectionCache.ts b/src/features/theme/ThemeDirectionCache.ts similarity index 100% rename from src/modules/theme/ThemeDirectionCache.ts rename to src/features/theme/ThemeDirectionCache.ts diff --git a/src/modules/theme/Themes.ts b/src/features/theme/Themes.ts similarity index 100% rename from src/modules/theme/Themes.ts rename to src/features/theme/Themes.ts diff --git a/src/modules/theme/components/CreateThemeButton.tsx b/src/features/theme/components/CreateThemeButton.tsx similarity index 86% rename from src/modules/theme/components/CreateThemeButton.tsx rename to src/features/theme/components/CreateThemeButton.tsx index 69411a74..b1db9c5e 100644 --- a/src/modules/theme/components/CreateThemeButton.tsx +++ b/src/features/theme/components/CreateThemeButton.tsx @@ -11,9 +11,9 @@ import Stack from '@mui/material/Stack'; import Button from '@mui/material/Button'; import AddCircleIcon from '@mui/icons-material/AddCircle'; import { bindDialog, bindTrigger, usePopupState } from 'material-ui-popup-state/hooks'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { ThemeCreationDialog } from '@/modules/theme/components/CreateThemeDialog.tsx'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { ThemeCreationDialog } from '@/features/theme/components/CreateThemeDialog.tsx'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; export const CreateThemeButton = () => { const { t } = useTranslation(); diff --git a/src/modules/theme/components/CreateThemeDialog.tsx b/src/features/theme/components/CreateThemeDialog.tsx similarity index 95% rename from src/modules/theme/components/CreateThemeDialog.tsx rename to src/features/theme/components/CreateThemeDialog.tsx index e71b382e..7cfa0469 100644 --- a/src/modules/theme/components/CreateThemeDialog.tsx +++ b/src/features/theme/components/CreateThemeDialog.tsx @@ -20,17 +20,17 @@ import TextField from '@mui/material/TextField'; import Link from '@mui/material/Link'; import { jsonrepair } from 'jsonrepair'; import { getErrorMessage, jsonSaveParse } from '@/lib/HelperFunctions.ts'; -import { AppTheme, isThemeNameUnique } from '@/modules/theme/services/AppThemes.ts'; +import { AppTheme, isThemeNameUnique } from '@/features/theme/services/AppThemes.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { EmptyView } from '@/modules/core/components/feedback/EmptyView.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { EmptyView } from '@/features/core/components/feedback/EmptyView.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { TranslationKey } from '@/Base.types.ts'; -import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts'; +import { MetadataThemeSettings } from '@/features/theme/AppTheme.types.ts'; const baseCustomTheme: AppTheme = { id: '', diff --git a/src/modules/theme/components/ThemeList.tsx b/src/features/theme/components/ThemeList.tsx similarity index 83% rename from src/modules/theme/components/ThemeList.tsx rename to src/features/theme/components/ThemeList.tsx index 6e92bbcf..9a83a446 100644 --- a/src/modules/theme/components/ThemeList.tsx +++ b/src/features/theme/components/ThemeList.tsx @@ -9,18 +9,18 @@ import { useTranslation } from 'react-i18next'; import Stack from '@mui/material/Stack'; import { useMemo } from 'react'; -import { appThemes } from '@/modules/theme/services/AppThemes.ts'; +import { appThemes } from '@/features/theme/services/AppThemes.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { EmptyView } from '@/modules/core/components/feedback/EmptyView.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { EmptyView } from '@/features/core/components/feedback/EmptyView.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { CreateThemeButton } from '@/modules/theme/components/CreateThemeButton.tsx'; -import { ThemePreview } from '@/modules/theme/components/ThemePreview.tsx'; -import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts'; +import { CreateThemeButton } from '@/features/theme/components/CreateThemeButton.tsx'; +import { ThemePreview } from '@/features/theme/components/ThemePreview.tsx'; +import { MetadataThemeSettings } from '@/features/theme/AppTheme.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const ThemeList = () => { diff --git a/src/modules/theme/components/ThemePreview.tsx b/src/features/theme/components/ThemePreview.tsx similarity index 95% rename from src/modules/theme/components/ThemePreview.tsx rename to src/features/theme/components/ThemePreview.tsx index 58d4b341..7a6a4ea2 100644 --- a/src/modules/theme/components/ThemePreview.tsx +++ b/src/features/theme/components/ThemePreview.tsx @@ -18,13 +18,13 @@ import DeleteIcon from '@mui/icons-material/Delete'; import IconButton from '@mui/material/IconButton'; import EditIcon from '@mui/icons-material/Edit'; import { bindDialog, usePopupState } from 'material-ui-popup-state/hooks'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { useAppThemeContext } from '@/modules/theme/contexts/AppThemeContext.tsx'; -import { AppTheme, hasMissingFonts, loadThemeFonts } from '@/modules/theme/services/AppThemes.ts'; -import { createTheme } from '@/modules/theme/services/ThemeCreator.ts'; -import { ThemeCreationDialog } from '@/modules/theme/components/CreateThemeDialog.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { useAppThemeContext } from '@/features/theme/contexts/AppThemeContext.tsx'; +import { AppTheme, hasMissingFonts, loadThemeFonts } from '@/features/theme/services/AppThemes.ts'; +import { createTheme } from '@/features/theme/services/ThemeCreator.ts'; +import { ThemeCreationDialog } from '@/features/theme/components/CreateThemeDialog.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; const ThemePreviewBadge = styled(Box)(() => ({ diff --git a/src/modules/theme/contexts/AppThemeContext.tsx b/src/features/theme/contexts/AppThemeContext.tsx similarity index 95% rename from src/modules/theme/contexts/AppThemeContext.tsx rename to src/features/theme/contexts/AppThemeContext.tsx index 3d2ee9c2..453b1862 100644 --- a/src/modules/theme/contexts/AppThemeContext.tsx +++ b/src/features/theme/contexts/AppThemeContext.tsx @@ -9,7 +9,7 @@ import React, { useContext } from 'react'; import { Palette } from '@vibrant/color'; import { FastAverageColorResult } from 'fast-average-color'; -import { AppThemes } from '@/modules/theme/services/AppThemes.ts'; +import { AppThemes } from '@/features/theme/services/AppThemes.ts'; export enum ThemeMode { SYSTEM = 'system', diff --git a/src/modules/theme/contexts/AppThemeContextProvider.tsx b/src/features/theme/contexts/AppThemeContextProvider.tsx similarity index 89% rename from src/modules/theme/contexts/AppThemeContextProvider.tsx rename to src/features/theme/contexts/AppThemeContextProvider.tsx index 00f1b2b1..cb9e8878 100644 --- a/src/modules/theme/contexts/AppThemeContextProvider.tsx +++ b/src/features/theme/contexts/AppThemeContextProvider.tsx @@ -10,18 +10,18 @@ import { ReactNode, useEffect, useLayoutEffect, useMemo, useRef, useState } from import { Direction, ThemeProvider } from '@mui/material/styles'; import { CacheProvider } from '@emotion/react'; import { useTranslation } from 'react-i18next'; -import { AppThemeContext, TAppThemeContext, ThemeMode } from '@/modules/theme/contexts/AppThemeContext.tsx'; -import { DIRECTION_TO_CACHE } from '@/modules/theme/ThemeDirectionCache.ts'; +import { AppThemeContext, TAppThemeContext, ThemeMode } from '@/features/theme/contexts/AppThemeContext.tsx'; +import { DIRECTION_TO_CACHE } from '@/features/theme/ThemeDirectionCache.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { AppTheme, getTheme } from '@/modules/theme/services/AppThemes.ts'; -import { createAndSetTheme } from '@/modules/theme/services/ThemeCreator.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { AppTheme, getTheme } from '@/features/theme/services/AppThemes.ts'; +import { createAndSetTheme } from '@/features/theme/services/ThemeCreator.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; import { AppStorage } from '@/lib/storage/AppStorage.ts'; import { MUI_THEME_MODE_KEY } from '@/lib/mui/MUI.constants.ts'; diff --git a/src/modules/theme/services/AppThemes.ts b/src/features/theme/services/AppThemes.ts similarity index 98% rename from src/modules/theme/services/AppThemes.ts rename to src/features/theme/services/AppThemes.ts index d860fbb5..201d93de 100644 --- a/src/modules/theme/services/AppThemes.ts +++ b/src/features/theme/services/AppThemes.ts @@ -10,7 +10,7 @@ import { CssVarsThemeOptions } from '@mui/material/styles'; import WebFont from 'webfontloader'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { ControlledPromise } from '@/lib/ControlledPromise.ts'; -import { TBaseTheme, themes } from '@/modules/theme/Themes.ts'; +import { TBaseTheme, themes } from '@/features/theme/Themes.ts'; export type AppThemes = keyof typeof themes | string; diff --git a/src/modules/theme/services/ThemeCreator.ts b/src/features/theme/services/ThemeCreator.ts similarity index 97% rename from src/modules/theme/services/ThemeCreator.ts rename to src/features/theme/services/ThemeCreator.ts index 776bf3cf..2ef8655d 100644 --- a/src/modules/theme/services/ThemeCreator.ts +++ b/src/features/theme/services/ThemeCreator.ts @@ -22,11 +22,11 @@ import { deepmerge } from '@mui/utils'; // eslint-disable-next-line no-restricted-imports import { PaletteBackgroundChannel } from '@mui/material/styles/createThemeWithVars'; import { Palette } from '@vibrant/color'; -import { TAppThemeContext, ThemeMode } from '@/modules/theme/contexts/AppThemeContext.tsx'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { AppTheme, loadThemeFonts } from '@/modules/theme/services/AppThemes.ts'; +import { TAppThemeContext, ThemeMode } from '@/features/theme/contexts/AppThemeContext.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { AppTheme, loadThemeFonts } from '@/features/theme/services/AppThemes.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; const SCROLLBAR_SIZE = 14; diff --git a/src/modules/tracker/Tracker.constants.ts b/src/features/tracker/Tracker.constants.ts similarity index 95% rename from src/modules/tracker/Tracker.constants.ts rename to src/features/tracker/Tracker.constants.ts index bdaf451b..4f00c6bb 100644 --- a/src/modules/tracker/Tracker.constants.ts +++ b/src/features/tracker/Tracker.constants.ts @@ -7,7 +7,7 @@ */ import { SxProps, Theme } from '@mui/material/styles'; -import { PublishingStatus, PublishingType } from '@/modules/tracker/Tracker.types.ts'; +import { PublishingStatus, PublishingType } from '@/features/tracker/Tracker.types.ts'; import { TranslationKey } from '@/Base.types.ts'; export const DIALOG_PADDING: number = 2; diff --git a/src/modules/tracker/Tracker.types.ts b/src/features/tracker/Tracker.types.ts similarity index 100% rename from src/modules/tracker/Tracker.types.ts rename to src/features/tracker/Tracker.types.ts diff --git a/src/modules/tracker/components/TrackManga.tsx b/src/features/tracker/components/TrackManga.tsx similarity index 91% rename from src/modules/tracker/components/TrackManga.tsx rename to src/features/tracker/components/TrackManga.tsx index ddd15a60..e04d87df 100644 --- a/src/modules/tracker/components/TrackManga.tsx +++ b/src/features/tracker/components/TrackManga.tsx @@ -12,18 +12,18 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import DialogContent from '@mui/material/DialogContent'; import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { Trackers } from '@/modules/tracker/services/Trackers.ts'; -import { TrackerCard, TrackerMode } from '@/modules/tracker/components/cards/TrackerCard.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { Trackers } from '@/features/tracker/services/Trackers.ts'; +import { TrackerCard, TrackerMode } from '@/features/tracker/components/cards/TrackerCard.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetMangaTrackRecordsQuery, GetTrackersBindQuery, MangaType } from '@/lib/graphql/generated/graphql.ts'; import { GET_TRACKERS_BIND } from '@/lib/graphql/queries/TrackerQuery.ts'; import { GET_MANGA_TRACK_RECORDS } from '@/lib/graphql/queries/MangaQuery.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { EmptyView } from '@/modules/core/components/feedback/EmptyView.tsx'; +import { EmptyView } from '@/features/core/components/feedback/EmptyView.tsx'; const getTrackerMode = (id: number, trackersInUse: number[], searchModeForTracker?: number): TrackerMode => { if (id === searchModeForTracker) { diff --git a/src/modules/tracker/components/TrackerSearch.tsx b/src/features/tracker/components/TrackerSearch.tsx similarity index 90% rename from src/modules/tracker/components/TrackerSearch.tsx rename to src/features/tracker/components/TrackerSearch.tsx index 6d13d0de..3fcc37c4 100644 --- a/src/modules/tracker/components/TrackerSearch.tsx +++ b/src/features/tracker/components/TrackerSearch.tsx @@ -23,22 +23,22 @@ import Popover from '@mui/material/Popover'; import Typography from '@mui/material/Typography'; import VisibilityOffIcon from '@mui/icons-material/VisibilityOff'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { SearchTextField } from '@/modules/core/components/inputs/SearchTextField.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { TrackerMangaCard } from '@/modules/tracker/components/cards/TrackerMangaCard.tsx'; -import { DIALOG_PADDING } from '@/modules/tracker/Tracker.constants.ts'; -import { useGetOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { SearchTextField } from '@/features/core/components/inputs/SearchTextField.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { TrackerMangaCard } from '@/features/tracker/components/cards/TrackerMangaCard.tsx'; +import { DIALOG_PADDING } from '@/features/tracker/Tracker.constants.ts'; +import { useGetOptionForDirection } from '@/features/theme/services/ThemeCreator.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { Tracker, TrackerIdInfo, TTrackerBind } from '@/modules/tracker/Tracker.types.ts'; -import { CustomButtonIcon } from '@/modules/core/components/buttons/CustomButtonIcon.tsx'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; +import { Tracker, TrackerIdInfo, TTrackerBind } from '@/features/tracker/Tracker.types.ts'; +import { CustomButtonIcon } from '@/features/core/components/buttons/CustomButtonIcon.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; const TrackButton = ({ mangaId, diff --git a/src/modules/tracker/components/cards/SettingsTrackerCard.tsx b/src/features/tracker/components/cards/SettingsTrackerCard.tsx similarity index 94% rename from src/modules/tracker/components/cards/SettingsTrackerCard.tsx rename to src/features/tracker/components/cards/SettingsTrackerCard.tsx index c8e9ba24..8e2da8d7 100644 --- a/src/modules/tracker/components/cards/SettingsTrackerCard.tsx +++ b/src/features/tracker/components/cards/SettingsTrackerCard.tsx @@ -21,13 +21,13 @@ import DialogContent from '@mui/material/DialogContent'; import TextField from '@mui/material/TextField'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; -import { PasswordTextField } from '@/modules/core/components/inputs/PasswordTextField.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +import { PasswordTextField } from '@/features/core/components/inputs/PasswordTextField.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { Trackers } from '@/modules/tracker/services/Trackers.ts'; +import { Trackers } from '@/features/tracker/services/Trackers.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; -import { TTrackerSearch } from '@/modules/tracker/Tracker.types.ts'; +import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx'; +import { TTrackerSearch } from '@/features/tracker/Tracker.types.ts'; export const SettingsTrackerCard = ({ tracker }: { tracker: TTrackerSearch }) => { const { t } = useTranslation(); diff --git a/src/modules/tracker/components/cards/TrackerActiveCard.tsx b/src/features/tracker/components/cards/TrackerActiveCard.tsx similarity index 93% rename from src/modules/tracker/components/cards/TrackerActiveCard.tsx rename to src/features/tracker/components/cards/TrackerActiveCard.tsx index d881b573..3641402b 100644 --- a/src/modules/tracker/components/cards/TrackerActiveCard.tsx +++ b/src/features/tracker/components/cards/TrackerActiveCard.tsx @@ -29,21 +29,21 @@ import PopupState, { bindDialog, bindMenu, bindTrigger } from 'material-ui-popup import { useMemo, useState } from 'react'; import Badge from '@mui/material/Badge'; import VisibilityOffIcon from '@mui/icons-material/VisibilityOff'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { Trackers } from '@/modules/tracker/services/Trackers.ts'; -import { ListPreference } from '@/modules/source/components/sourceConfiguration/ListPreference.tsx'; -import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; -import { DateSetting } from '@/modules/core/components/settings/DateSetting.tsx'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; -import { Menu } from '@/modules/core/components/menu/Menu.tsx'; -import { CARD_STYLING, UNSET_DATE } from '@/modules/tracker/Tracker.constants.ts'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; -import { SelectSetting, SelectSettingValue } from '@/modules/core/components/settings/SelectSetting.tsx'; -import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { Trackers } from '@/features/tracker/services/Trackers.ts'; +import { ListPreference } from '@/features/source/components/sourceConfiguration/ListPreference.tsx'; +import { NumberSetting } from '@/features/core/components/settings/NumberSetting.tsx'; +import { DateSetting } from '@/features/core/components/settings/DateSetting.tsx'; +import { makeToast } from '@/features/core/utils/Toast.ts'; +import { Menu } from '@/features/core/components/menu/Menu.tsx'; +import { CARD_STYLING, UNSET_DATE } from '@/features/tracker/Tracker.constants.ts'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; +import { SelectSetting, SelectSettingValue } from '@/features/core/components/settings/SelectSetting.tsx'; +import { CheckboxInput } from '@/features/core/components/inputs/CheckboxInput.tsx'; import { TrackRecordType } from '@/lib/graphql/generated/graphql.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { TTrackerBind, TTrackRecordBind } from '@/modules/tracker/Tracker.types.ts'; +import { TTrackerBind, TTrackRecordBind } from '@/features/tracker/Tracker.types.ts'; const TrackerActiveLink = ({ children, url }: { children: React.ReactNode; url: string }) => ( diff --git a/src/modules/tracker/components/cards/TrackerCard.tsx b/src/features/tracker/components/cards/TrackerCard.tsx similarity index 78% rename from src/modules/tracker/components/cards/TrackerCard.tsx rename to src/features/tracker/components/cards/TrackerCard.tsx index 4fbb9434..1ca9fe84 100644 --- a/src/modules/tracker/components/cards/TrackerCard.tsx +++ b/src/features/tracker/components/cards/TrackerCard.tsx @@ -6,13 +6,13 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { TrackerUntrackedCard } from '@/modules/tracker/components/cards/TrackerUntrackedCard.tsx'; -import { TrackerSearch } from '@/modules/tracker/components/TrackerSearch.tsx'; -import { TrackerActiveCard } from '@/modules/tracker/components/cards/TrackerActiveCard.tsx'; +import { TrackerUntrackedCard } from '@/features/tracker/components/cards/TrackerUntrackedCard.tsx'; +import { TrackerSearch } from '@/features/tracker/components/TrackerSearch.tsx'; +import { TrackerActiveCard } from '@/features/tracker/components/cards/TrackerActiveCard.tsx'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; -import { TTrackerBind, TTrackRecordBind } from '@/modules/tracker/Tracker.types.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; +import { TTrackerBind, TTrackRecordBind } from '@/features/tracker/Tracker.types.ts'; export enum TrackerMode { UNTRACKED, diff --git a/src/modules/tracker/components/cards/TrackerMangaCard.tsx b/src/features/tracker/components/cards/TrackerMangaCard.tsx similarity index 92% rename from src/modules/tracker/components/cards/TrackerMangaCard.tsx rename to src/features/tracker/components/cards/TrackerMangaCard.tsx index 47064108..f2afc6cd 100644 --- a/src/modules/tracker/components/cards/TrackerMangaCard.tsx +++ b/src/features/tracker/components/cards/TrackerMangaCard.tsx @@ -19,19 +19,19 @@ import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; import { useLayoutEffect, useRef, useState } from 'react'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; -import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; -import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx'; -import { Metadata } from '@/modules/core/components/texts/Metadata.tsx'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; -import { Trackers } from '@/modules/tracker/services/Trackers.ts'; -import { MANGA_COVER_ASPECT_RATIO } from '@/modules/manga/Manga.constants.ts'; +import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx'; +import { SpinnerImage } from '@/features/core/components/SpinnerImage.tsx'; +import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx'; +import { Metadata } from '@/features/core/components/texts/Metadata.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; +import { Trackers } from '@/features/tracker/services/Trackers.ts'; +import { MANGA_COVER_ASPECT_RATIO } from '@/features/manga/Manga.constants.ts'; import { MUIUtil } from '@/lib/mui/MUI.util.ts'; import { PUBLISHING_STATUS_TO_TRANSLATION, PUBLISHING_TYPE_TO_TRANSLATION, -} from '@/modules/tracker/Tracker.constants.ts'; -import { TTrackerManga } from '@/modules/tracker/Tracker.types.ts'; +} from '@/features/tracker/Tracker.constants.ts'; +import { TTrackerManga } from '@/features/tracker/Tracker.types.ts'; const TrackerMangaCardTitle = ({ title, selected }: { title: string; selected: boolean }) => ( { diff --git a/src/modules/tracker/screens/TrackingSettings.tsx b/src/features/tracker/screens/TrackingSettings.tsx similarity index 88% rename from src/modules/tracker/screens/TrackingSettings.tsx rename to src/features/tracker/screens/TrackingSettings.tsx index c02c9ca3..f8aee15d 100644 --- a/src/modules/tracker/screens/TrackingSettings.tsx +++ b/src/features/tracker/screens/TrackingSettings.tsx @@ -13,20 +13,20 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { SettingsTrackerCard } from '@/modules/tracker/components/cards/SettingsTrackerCard.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { SettingsTrackerCard } from '@/features/tracker/components/cards/SettingsTrackerCard.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, -} from '@/modules/settings/services/ServerSettingsMetadata.ts'; -import { makeToast } from '@/modules/core/utils/Toast.ts'; +} from '@/features/settings/services/ServerSettingsMetadata.ts'; +import { makeToast } from '@/features/core/utils/Toast.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GET_TRACKERS_SETTINGS } from '@/lib/graphql/queries/TrackerQuery.ts'; import { GetTrackersSettingsQuery } from '@/lib/graphql/generated/graphql.ts'; -import { MetadataTrackingSettings } from '@/modules/tracker/Tracker.types.ts'; +import { MetadataTrackingSettings } from '@/features/tracker/Tracker.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts'; +import { useAppTitle } from '@/features/navigation-bar/hooks/useAppTitle.ts'; export const TrackingSettings = () => { const { t } = useTranslation(); diff --git a/src/modules/tracker/services/Trackers.ts b/src/features/tracker/services/Trackers.ts similarity index 97% rename from src/modules/tracker/services/Trackers.ts rename to src/features/tracker/services/Trackers.ts index 3f4fc469..0f249fb7 100644 --- a/src/modules/tracker/services/Trackers.ts +++ b/src/features/tracker/services/Trackers.ts @@ -14,8 +14,8 @@ import { TrackRecordTrackerInfo, TrackSearchPublishingStatusInfo, TrackSearchPublishingTypeInfo, -} from '@/modules/tracker/Tracker.types.ts'; -import { UNSET_DATE } from '@/modules/tracker/Tracker.constants.ts'; +} from '@/features/tracker/Tracker.types.ts'; +import { UNSET_DATE } from '@/features/tracker/Tracker.constants.ts'; export class Trackers { static getIds(trackers: TrackerIdInfo[]): number[] { diff --git a/src/modules/updates/components/ChapterUpdateCard.tsx b/src/features/updates/components/ChapterUpdateCard.tsx similarity index 72% rename from src/modules/updates/components/ChapterUpdateCard.tsx rename to src/features/updates/components/ChapterUpdateCard.tsx index 2fcf43ef..8f04675c 100644 --- a/src/modules/updates/components/ChapterUpdateCard.tsx +++ b/src/features/updates/components/ChapterUpdateCard.tsx @@ -11,15 +11,15 @@ import CardActionArea from '@mui/material/CardActionArea'; import Card from '@mui/material/Card'; import { Link } from 'react-router-dom'; import { memo } from 'react'; -import { DownloadStateIndicator } from '@/modules/core/components/downloads/DownloadStateIndicator.tsx'; +import { DownloadStateIndicator } from '@/features/core/components/downloads/DownloadStateIndicator.tsx'; import { ChapterUpdateListFieldsFragment } from '@/lib/graphql/generated/graphql.ts'; -import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; -import { ChapterCardThumbnail } from '@/modules/chapter/components/cards/ChapterCardThumbnail.tsx'; -import { ChapterCardMetadata } from '@/modules/chapter/components/cards/ChapterCardMetadata.tsx'; -import { ChapterDownloadButton } from '@/modules/chapter/components/buttons/ChapterDownloadButton.tsx'; -import { ChapterDownloadRetryButton } from '@/modules/chapter/components/buttons/ChapterDownloadRetryButton.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { ListCardContent } from '@/modules/core/components/lists/cards/ListCardContent.tsx'; +import { AppRoutes } from '@/features/core/AppRoute.constants.ts'; +import { ChapterCardThumbnail } from '@/features/chapter/components/cards/ChapterCardThumbnail.tsx'; +import { ChapterCardMetadata } from '@/features/chapter/components/cards/ChapterCardMetadata.tsx'; +import { ChapterDownloadButton } from '@/features/chapter/components/buttons/ChapterDownloadButton.tsx'; +import { ChapterDownloadRetryButton } from '@/features/chapter/components/buttons/ChapterDownloadRetryButton.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { ListCardContent } from '@/features/core/components/lists/cards/ListCardContent.tsx'; export const ChapterUpdateCard = memo(({ chapter }: { chapter: ChapterUpdateListFieldsFragment }) => { const { manga } = chapter; diff --git a/src/modules/updates/screens/Updates.tsx b/src/features/updates/screens/Updates.tsx similarity index 84% rename from src/modules/updates/screens/Updates.tsx rename to src/features/updates/screens/Updates.tsx index a489619b..64824149 100644 --- a/src/modules/updates/screens/Updates.tsx +++ b/src/features/updates/screens/Updates.tsx @@ -10,20 +10,20 @@ import Typography from '@mui/material/Typography'; import React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; -import { UpdateChecker } from '@/modules/core/components/UpdateChecker.tsx'; -import { StyledGroupedVirtuoso } from '@/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; -import { StyledGroupHeader } from '@/modules/core/components/virtuoso/StyledGroupHeader.tsx'; -import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { LoadingPlaceholder } from '@/features/core/components/feedback/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/features/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; +import { UpdateChecker } from '@/features/core/components/UpdateChecker.tsx'; +import { StyledGroupedVirtuoso } from '@/features/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; +import { StyledGroupHeader } from '@/features/core/components/virtuoso/StyledGroupHeader.tsx'; +import { StyledGroupItemWrapper } from '@/features/core/components/virtuoso/StyledGroupItemWrapper.tsx'; import { dateTimeFormatter } from '@/util/DateHelper.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { VirtuosoUtil } from '@/lib/virtuoso/Virtuoso.util.tsx'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; -import { ChapterUpdateCard } from '@/modules/updates/components/ChapterUpdateCard.tsx'; -import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; -import { Chapters } from '@/modules/chapter/services/Chapters.ts'; -import { useAppTitleAndAction } from '@/modules/navigation-bar/hooks/useAppTitleAndAction.ts'; +import { ChapterUpdateCard } from '@/features/updates/components/ChapterUpdateCard.tsx'; +import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx'; +import { Chapters } from '@/features/chapter/services/Chapters.ts'; +import { useAppTitleAndAction } from '@/features/navigation-bar/hooks/useAppTitleAndAction.ts'; import { GROUPED_VIRTUOSO_Z_INDEX } from '@/lib/virtuoso/Virtuoso.constants.ts'; export const Updates: React.FC = () => { diff --git a/src/lib/dnd-kit/DndKitUtil.ts b/src/lib/dnd-kit/DndKitUtil.ts index c29cd4c6..a66e6c5e 100644 --- a/src/lib/dnd-kit/DndKitUtil.ts +++ b/src/lib/dnd-kit/DndKitUtil.ts @@ -17,7 +17,7 @@ import { useSensors, } from '@dnd-kit/core'; import { AbstractPointerSensorOptions, PointerActivationConstraint } from '@dnd-kit/core/dist/sensors'; -import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; +import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx'; export class DndKitUtil { static getSensorForDevice(): Sensor { diff --git a/src/lib/dnd-kit/DndSortableItem.tsx b/src/lib/dnd-kit/DndSortableItem.tsx index ec4b8773..ae2e3b57 100644 --- a/src/lib/dnd-kit/DndSortableItem.tsx +++ b/src/lib/dnd-kit/DndSortableItem.tsx @@ -11,7 +11,7 @@ import { useSortable } from '@dnd-kit/sortable'; import { ReactNode } from 'react'; import { UniqueIdentifier } from '@dnd-kit/core'; import { CSS } from '@dnd-kit/utilities'; -import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; +import { applyStyles } from '@/features/core/utils/ApplyStyles.ts'; export const DndSortableItem = ({ id, diff --git a/src/lib/requests/RequestManager.ts b/src/lib/requests/RequestManager.ts index 99d937c2..8c2e2fa8 100644 --- a/src/lib/requests/RequestManager.ts +++ b/src/lib/requests/RequestManager.ts @@ -324,9 +324,9 @@ import { GLOBAL_METADATA } from '@/lib/graphql/fragments/Fragments.ts'; import { CATEGORY_META_FIELDS } from '@/lib/graphql/fragments/CategoryFragments.ts'; import { SOURCE_META_FIELDS } from '@/lib/graphql/fragments/SourceFragments.ts'; import { CHAPTER_META_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; -import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; -import { updateMetadataList } from '@/modules/metadata/services/MetadataApolloCacheHandler.ts'; +import { MetadataMigrationSettings } from '@/features/migration/Migration.types.ts'; +import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; +import { updateMetadataList } from '@/features/metadata/services/MetadataApolloCacheHandler.ts'; enum GQLMethod { QUERY = 'QUERY', diff --git a/src/lib/virtuoso/Virtuoso.util.tsx b/src/lib/virtuoso/Virtuoso.util.tsx index a96ea31b..7f0d90b3 100644 --- a/src/lib/virtuoso/Virtuoso.util.tsx +++ b/src/lib/virtuoso/Virtuoso.util.tsx @@ -8,7 +8,7 @@ import { useCallback, useEffect, useMemo, useRef } from 'react'; import { useLocation } from 'react-router-dom'; -import { useSessionStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { useSessionStorage } from '@/features/core/hooks/useStorage.tsx'; import { AppStorage } from '@/lib/storage/AppStorage.ts'; export class VirtuosoUtil {