diff --git a/.eslintrc.js b/.eslintrc.js index 4361cb2a..0de4a859 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,13 @@ module.exports = { extends: ['airbnb', 'airbnb-typescript', 'prettier'], - plugins: ['unused-imports', 'eslint-plugin-import', '@typescript-eslint', 'no-relative-import-paths', 'prettier', 'header'], + plugins: [ + 'unused-imports', + 'eslint-plugin-import', + '@typescript-eslint', + 'no-relative-import-paths', + 'prettier', + 'header', + ], parserOptions: { project: ['./tsconfig.json', './tsconfig.node.json', './tools/scripts/tsconfig.json'], }, @@ -61,6 +68,28 @@ module.exports = { prefix: '@', }, ], + + 'no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: ['@mui/*', '!@mui/material/', '!@mui/icons-material/', '!@mui/x-date-pickers/'], + }, + { + group: ['@mui/*/*/*'], + }, + ], + }, + ], + + 'no-restricted-syntax': [ + 'error', + { + selector: 'TSTypeReference[typeName.name="SxProps"]:not([typeParameters])', + message: 'SxProps must have Theme parameter to avoid significant compiler slowdown.', + }, + ], }, }, { diff --git a/src/App.tsx b/src/App.tsx index fc22e4e3..27ab88e0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Container } from '@mui/material'; +import Container from '@mui/material/Container'; import CssBaseline from '@mui/material/CssBaseline'; import React, { useLayoutEffect } from 'react'; import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; diff --git a/src/components/ExtensionCard.tsx b/src/components/ExtensionCard.tsx index 80319990..2278a10e 100644 --- a/src/components/ExtensionCard.tsx +++ b/src/components/ExtensionCard.tsx @@ -12,7 +12,7 @@ import CardContent from '@mui/material/CardContent'; import Button from '@mui/material/Button'; import Avatar from '@mui/material/Avatar'; import Typography from '@mui/material/Typography'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { useTranslation } from 'react-i18next'; import { PartialExtension, TranslationKey } from '@/typings'; import { requestManager } from '@/lib/requests/RequestManager.ts'; diff --git a/src/components/MangaGrid.tsx b/src/components/MangaGrid.tsx index 7d301ecf..a2b3c056 100644 --- a/src/components/MangaGrid.tsx +++ b/src/components/MangaGrid.tsx @@ -8,7 +8,8 @@ import React, { ForwardedRef, forwardRef, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; import Grid, { GridTypeMap } from '@mui/material/Grid'; -import { Box, Typography } from '@mui/material'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; import { GridItemProps, GridStateSnapshot, VirtuosoGrid } from 'react-virtuoso'; import { useLocation } from 'react-router-dom'; import { EmptyView } from '@/components/util/EmptyView'; diff --git a/src/components/MigrateDialog.tsx b/src/components/MigrateDialog.tsx index baa8896f..e8c0b9cd 100644 --- a/src/components/MigrateDialog.tsx +++ b/src/components/MigrateDialog.tsx @@ -12,7 +12,7 @@ import DialogContent from '@mui/material/DialogContent'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; -import { Stack } from '@mui/material'; +import Stack from '@mui/material/Stack'; import { Link, useNavigate, useParams } from 'react-router-dom'; import { useState } from 'react'; import FormGroup from '@mui/material/FormGroup'; diff --git a/src/components/MigrationCard.tsx b/src/components/MigrationCard.tsx index 1a3f8d57..97b06272 100644 --- a/src/components/MigrationCard.tsx +++ b/src/components/MigrationCard.tsx @@ -8,7 +8,9 @@ import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; -import { Box, CardActionArea, Chip } from '@mui/material'; +import Box from '@mui/material/Box'; +import CardActionArea from '@mui/material/CardActionArea'; +import Chip from '@mui/material/Chip'; import Avatar from '@mui/material/Avatar'; import Typography from '@mui/material/Typography'; import { Link } from 'react-router-dom'; diff --git a/src/components/SourceCard.tsx b/src/components/SourceCard.tsx index cc1f56ef..63667303 100644 --- a/src/components/SourceCard.tsx +++ b/src/components/SourceCard.tsx @@ -6,7 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { CardActionArea, Box, styled } from '@mui/material'; +import CardActionArea from '@mui/material/CardActionArea'; +import Box from '@mui/material/Box'; +import { styled } from '@mui/material/styles'; import Avatar from '@mui/material/Avatar'; import Button from '@mui/material/Button'; import Card from '@mui/material/Card'; diff --git a/src/components/atoms/CheckboxInput.tsx b/src/components/atoms/CheckboxInput.tsx index 343cf713..c0e96d91 100644 --- a/src/components/atoms/CheckboxInput.tsx +++ b/src/components/atoms/CheckboxInput.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Checkbox, CheckboxProps, FormControlLabel } from '@mui/material'; +import Checkbox, { CheckboxProps } from '@mui/material/Checkbox'; +import FormControlLabel from '@mui/material/FormControlLabel'; import React from 'react'; interface IProps extends CheckboxProps { diff --git a/src/components/atoms/CustomIconButton.tsx b/src/components/atoms/CustomIconButton.tsx index 73e0b469..bb25f321 100644 --- a/src/components/atoms/CustomIconButton.tsx +++ b/src/components/atoms/CustomIconButton.tsx @@ -6,7 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Button, ButtonProps, Stack, TypographyProps } from '@mui/material'; +import Button, { ButtonProps } from '@mui/material/Button'; +import Stack from '@mui/material/Stack'; +import { TypographyProps } from '@mui/material/Typography'; export const CustomIconButton = ({ children, diff --git a/src/components/atoms/PasswordTextField.tsx b/src/components/atoms/PasswordTextField.tsx index b2a91907..9947034f 100644 --- a/src/components/atoms/PasswordTextField.tsx +++ b/src/components/atoms/PasswordTextField.tsx @@ -6,11 +6,12 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { InputAdornment, TextFieldProps } from '@mui/material'; -import TextField from '@mui/material/TextField'; +import InputAdornment from '@mui/material/InputAdornment'; +import TextField, { TextFieldProps } from '@mui/material/TextField'; import { useState } from 'react'; import IconButton from '@mui/material/IconButton'; -import { Visibility, VisibilityOff } from '@mui/icons-material'; +import Visibility from '@mui/icons-material/Visibility'; +import VisibilityOff from '@mui/icons-material/VisibilityOff'; import { useTranslation } from 'react-i18next'; export const PasswordTextField = (props: TextFieldProps) => { diff --git a/src/components/atoms/RadioInput.tsx b/src/components/atoms/RadioInput.tsx index 357b210e..34847cfd 100644 --- a/src/components/atoms/RadioInput.tsx +++ b/src/components/atoms/RadioInput.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { FormControlLabel, Radio, RadioProps } from '@mui/material'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Radio, { RadioProps } from '@mui/material/Radio'; import React from 'react'; export interface RadioInputProps extends RadioProps { diff --git a/src/components/atoms/SearchTextField.tsx b/src/components/atoms/SearchTextField.tsx index 2821c116..3c977145 100644 --- a/src/components/atoms/SearchTextField.tsx +++ b/src/components/atoms/SearchTextField.tsx @@ -6,8 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import TextField from '@mui/material/TextField'; -import { IconButton, InputAdornment, TextFieldProps } from '@mui/material'; +import TextField, { TextFieldProps } from '@mui/material/TextField'; +import IconButton from '@mui/material/IconButton'; +import InputAdornment from '@mui/material/InputAdornment'; import CancelIcon from '@mui/icons-material/Cancel'; export const SearchTextField = ({ onCancel, ...textFieldProps }: TextFieldProps & { onCancel: () => void }) => ( diff --git a/src/components/atoms/Select.tsx b/src/components/atoms/Select.tsx index bb131430..2c5b955e 100644 --- a/src/components/atoms/Select.tsx +++ b/src/components/atoms/Select.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Select as MuiSelect } from '@mui/material'; +import MuiSelect from '@mui/material/Select'; export const Select = ({ children, diff --git a/src/components/atoms/ThreeStateCheckbox.tsx b/src/components/atoms/ThreeStateCheckbox.tsx index ee555c12..00a0c410 100644 --- a/src/components/atoms/ThreeStateCheckbox.tsx +++ b/src/components/atoms/ThreeStateCheckbox.tsx @@ -6,8 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { DisabledByDefaultRounded } from '@mui/icons-material'; -import { Checkbox, CheckboxProps } from '@mui/material'; +import DisabledByDefaultRounded from '@mui/icons-material/DisabledByDefaultRounded'; +import Checkbox, { CheckboxProps } from '@mui/material/Checkbox'; import React, { useCallback } from 'react'; type CheckState = boolean | undefined | null; diff --git a/src/components/atoms/ThreeStateCheckboxInput.tsx b/src/components/atoms/ThreeStateCheckboxInput.tsx index e62ad632..d11bba62 100644 --- a/src/components/atoms/ThreeStateCheckboxInput.tsx +++ b/src/components/atoms/ThreeStateCheckboxInput.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { FormControlLabel } from '@mui/material'; +import FormControlLabel from '@mui/material/FormControlLabel'; import React from 'react'; import { ThreeStateCheckbox, ThreeStateCheckboxProps } from '@/components/atoms/ThreeStateCheckbox'; diff --git a/src/components/atoms/TypographyMaxLines.tsx b/src/components/atoms/TypographyMaxLines.tsx index 9f474df7..d0ffbbd5 100644 --- a/src/components/atoms/TypographyMaxLines.tsx +++ b/src/components/atoms/TypographyMaxLines.tsx @@ -7,7 +7,7 @@ */ import styled from '@emotion/styled'; -import { Typography, TypographyProps } from '@mui/material'; +import Typography, { TypographyProps } from '@mui/material/Typography'; export const TypographyMaxLines = styled(Typography, { shouldForwardProp: (prop) => prop !== 'lines', diff --git a/src/components/chapter/ChapterCard.tsx b/src/components/chapter/ChapterCard.tsx index c669a5fc..d5112bdf 100644 --- a/src/components/chapter/ChapterCard.tsx +++ b/src/components/chapter/ChapterCard.tsx @@ -8,7 +8,10 @@ import BookmarkIcon from '@mui/icons-material/Bookmark'; import MoreVertIcon from '@mui/icons-material/MoreVert'; -import { CardActionArea, Checkbox, Stack, Tooltip } from '@mui/material'; +import CardActionArea from '@mui/material/CardActionArea'; +import Checkbox from '@mui/material/Checkbox'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; import IconButton from '@mui/material/IconButton'; diff --git a/src/components/chapter/ChapterList.tsx b/src/components/chapter/ChapterList.tsx index b7f0bbe7..c640d1bc 100644 --- a/src/components/chapter/ChapterList.tsx +++ b/src/components/chapter/ChapterList.tsx @@ -6,7 +6,11 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Box, CircularProgress, Stack, styled, Tooltip } from '@mui/material'; +import Box from '@mui/material/Box'; +import CircularProgress from '@mui/material/CircularProgress'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; +import { styled } from '@mui/material/styles'; import Typography from '@mui/material/Typography'; import React, { useMemo } from 'react'; import { Virtuoso } from 'react-virtuoso'; diff --git a/src/components/chapter/ChapterOptions.tsx b/src/components/chapter/ChapterOptions.tsx index 231c6cd4..494587fd 100644 --- a/src/components/chapter/ChapterOptions.tsx +++ b/src/components/chapter/ChapterOptions.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { RadioGroup } from '@mui/material'; +import RadioGroup from '@mui/material/RadioGroup'; import React from 'react'; import { useTranslation } from 'react-i18next'; import { ChapterListOptions, ChapterOptionsReducerAction, TranslationKey } from '@/typings.ts'; diff --git a/src/components/chapter/ChaptersToolbarMenu.tsx b/src/components/chapter/ChaptersToolbarMenu.tsx index 11db49cc..e3997c7a 100644 --- a/src/components/chapter/ChaptersToolbarMenu.tsx +++ b/src/components/chapter/ChaptersToolbarMenu.tsx @@ -7,7 +7,8 @@ */ import FilterList from '@mui/icons-material/FilterList'; -import { IconButton, Tooltip } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; import * as React from 'react'; import { useTranslation } from 'react-i18next'; import { ChapterListOptions, ChapterOptionsReducerAction } from '@/typings.ts'; diff --git a/src/components/collection/SelectableCollectionSelectAll.tsx b/src/components/collection/SelectableCollectionSelectAll.tsx index 9452fe87..d82aec77 100644 --- a/src/components/collection/SelectableCollectionSelectAll.tsx +++ b/src/components/collection/SelectableCollectionSelectAll.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Tooltip } from '@mui/material'; +import Tooltip from '@mui/material/Tooltip'; import Checkbox from '@mui/material/Checkbox'; import { useTranslation } from 'react-i18next'; diff --git a/src/components/collection/SelectableCollectionSelectMode.tsx b/src/components/collection/SelectableCollectionSelectMode.tsx index bf25b098..3840e74b 100644 --- a/src/components/collection/SelectableCollectionSelectMode.tsx +++ b/src/components/collection/SelectableCollectionSelectMode.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Tooltip } from '@mui/material'; +import Tooltip from '@mui/material/Tooltip'; import Checkbox from '@mui/material/Checkbox'; import { useTranslation } from 'react-i18next'; import ClearIcon from '@mui/icons-material/Clear'; diff --git a/src/components/collection/SelectionFAB.tsx b/src/components/collection/SelectionFAB.tsx index 1e10dc99..44b849df 100644 --- a/src/components/collection/SelectionFAB.tsx +++ b/src/components/collection/SelectionFAB.tsx @@ -7,7 +7,9 @@ */ import MoreHoriz from '@mui/icons-material/MoreHoriz'; -import { Fab, Box, styled } from '@mui/material'; +import Fab from '@mui/material/Fab'; +import Box from '@mui/material/Box'; +import { styled } from '@mui/material/styles'; import React from 'react'; import { useTranslation } from 'react-i18next'; import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; diff --git a/src/components/library/LibraryOptionsPanel.tsx b/src/components/library/LibraryOptionsPanel.tsx index 04bc4338..e3d69632 100644 --- a/src/components/library/LibraryOptionsPanel.tsx +++ b/src/components/library/LibraryOptionsPanel.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { FormLabel, RadioGroup } from '@mui/material'; +import FormLabel from '@mui/material/FormLabel'; +import RadioGroup from '@mui/material/RadioGroup'; import React from 'react'; import { useTranslation } from 'react-i18next'; import { LibraryOptions, LibrarySortMode, TranslationKey } from '@/typings'; diff --git a/src/components/library/LibraryToolbarMenu.tsx b/src/components/library/LibraryToolbarMenu.tsx index 3db4aeaf..318e9040 100644 --- a/src/components/library/LibraryToolbarMenu.tsx +++ b/src/components/library/LibraryToolbarMenu.tsx @@ -7,7 +7,8 @@ */ import FilterList from '@mui/icons-material/FilterList'; -import { IconButton, Tooltip } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useLibraryOptionsContext } from '@/components/context/LibraryOptionsContext'; diff --git a/src/components/library/UpdateChecker.tsx b/src/components/library/UpdateChecker.tsx index 8fc718c6..687948d5 100644 --- a/src/components/library/UpdateChecker.tsx +++ b/src/components/library/UpdateChecker.tsx @@ -10,7 +10,7 @@ import { useEffect, useMemo } from 'react'; import IconButton from '@mui/material/IconButton'; import RefreshIcon from '@mui/icons-material/Refresh'; import { useTranslation } from 'react-i18next'; -import { Tooltip } from '@mui/material'; +import Tooltip from '@mui/material/Tooltip'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { makeToast } from '@/components/util/Toast'; import { UpdaterSubscription } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/components/manga/ContinueReadingButton.tsx b/src/components/manga/ContinueReadingButton.tsx index f30a536a..4ed5af8b 100644 --- a/src/components/manga/ContinueReadingButton.tsx +++ b/src/components/manga/ContinueReadingButton.tsx @@ -7,7 +7,8 @@ */ import { useTranslation } from 'react-i18next'; -import { Button, Tooltip } from '@mui/material'; +import Button from '@mui/material/Button'; +import Tooltip from '@mui/material/Tooltip'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import { Link } from 'react-router-dom'; diff --git a/src/components/manga/MangaActionMenuItems.tsx b/src/components/manga/MangaActionMenuItems.tsx index f1e478ef..62aaf1e3 100644 --- a/src/components/manga/MangaActionMenuItems.tsx +++ b/src/components/manga/MangaActionMenuItems.tsx @@ -18,7 +18,7 @@ import { useMemo, useState } from 'react'; 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'; +import Dialog from '@mui/material/Dialog'; import { TManga } from '@/typings.ts'; import { actionToTranslationKey, MangaAction, MangaDownloadInfo, Mangas, MangaUnreadInfo } from '@/lib/data/Mangas.ts'; import { SelectableCollectionReturnType } from '@/components/collection/useSelectableCollection.ts'; diff --git a/src/components/manga/MangaBadges.tsx b/src/components/manga/MangaBadges.tsx index 3d3a12d7..75dd65fa 100644 --- a/src/components/manga/MangaBadges.tsx +++ b/src/components/manga/MangaBadges.tsx @@ -6,10 +6,10 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import styled from '@mui/material/styles/styled'; +import { styled } from '@mui/material/styles'; import { useTranslation } from 'react-i18next'; -import Button from '@mui/material/Button/Button'; -import Typography from '@mui/material/Typography/Typography'; +import Button from '@mui/material/Button'; +import Typography from '@mui/material/Typography'; import { useLibraryOptionsContext } from '@/components/context/LibraryOptionsContext.tsx'; import { MangaCardMode } from '@/components/manga/MangaCard.types.tsx'; diff --git a/src/components/manga/MangaDetails.tsx b/src/components/manga/MangaDetails.tsx index d5952eb1..a4c9981b 100644 --- a/src/components/manga/MangaDetails.tsx +++ b/src/components/manga/MangaDetails.tsx @@ -13,7 +13,7 @@ import { styled } from '@mui/material/styles'; import React, { useEffect, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { t as translate } from 'i18next'; -import { Link } from '@mui/material'; +import Link from '@mui/material/Link'; import { ISource, TManga } from '@/typings'; import { makeToast } from '@/components/util/Toast'; import { Mangas } from '@/lib/data/Mangas.ts'; diff --git a/src/components/manga/MangaGridCard.tsx b/src/components/manga/MangaGridCard.tsx index e000de01..4715902c 100644 --- a/src/components/manga/MangaGridCard.tsx +++ b/src/components/manga/MangaGridCard.tsx @@ -6,14 +6,14 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import Link from '@mui/material/Link/Link'; +import Link from '@mui/material/Link'; import { Link as RouterLink } from 'react-router-dom'; -import Box from '@mui/material/Box/Box'; -import Card from '@mui/material/Card/Card'; -import CardActionArea from '@mui/material/CardActionArea/CardActionArea'; -import Stack from '@mui/material/Stack/Stack'; -import Tooltip from '@mui/material/Tooltip/Tooltip'; -import styled from '@mui/material/styles/styled'; +import Box from '@mui/material/Box'; +import Card from '@mui/material/Card'; +import CardActionArea from '@mui/material/CardActionArea'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; +import { styled } from '@mui/material/styles'; import { isMobile } from 'react-device-detect'; import { useRef } from 'react'; import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; diff --git a/src/components/manga/MangaListCard.tsx b/src/components/manga/MangaListCard.tsx index a763690c..5e57305a 100644 --- a/src/components/manga/MangaListCard.tsx +++ b/src/components/manga/MangaListCard.tsx @@ -6,13 +6,13 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import Card from '@mui/material/Card/Card'; -import CardContent from '@mui/material/CardContent/CardContent'; -import CardActionArea from '@mui/material/CardActionArea/CardActionArea'; -import Avatar from '@mui/material/Avatar/Avatar'; -import Box from '@mui/material/Box/Box'; -import Stack from '@mui/material/Stack/Stack'; -import Tooltip from '@mui/material/Tooltip/Tooltip'; +import Card from '@mui/material/Card'; +import CardContent from '@mui/material/CardContent'; +import CardActionArea from '@mui/material/CardActionArea'; +import Avatar from '@mui/material/Avatar'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; import { isMobile } from 'react-device-detect'; import { Link as RouterLink } from 'react-router-dom'; import { useRef } from 'react'; diff --git a/src/components/manga/MangaOptionButton.tsx b/src/components/manga/MangaOptionButton.tsx index 7b4a1872..4dc20dfb 100644 --- a/src/components/manga/MangaOptionButton.tsx +++ b/src/components/manga/MangaOptionButton.tsx @@ -8,7 +8,8 @@ import { useTranslation } from 'react-i18next'; import { BaseSyntheticEvent, MouseEvent, TouchEvent, ChangeEvent, useMemo, forwardRef, ForwardedRef } from 'react'; -import { Button, Tooltip } from '@mui/material'; +import Button from '@mui/material/Button'; +import Tooltip from '@mui/material/Tooltip'; import Checkbox from '@mui/material/Checkbox'; import IconButton from '@mui/material/IconButton'; import MoreVertIcon from '@mui/icons-material/MoreVert'; diff --git a/src/components/manga/MangaToolbarMenu.tsx b/src/components/manga/MangaToolbarMenu.tsx index c74edee0..e8a3d6e9 100644 --- a/src/components/manga/MangaToolbarMenu.tsx +++ b/src/components/manga/MangaToolbarMenu.tsx @@ -9,20 +9,18 @@ import Label from '@mui/icons-material/Label'; import MoreHoriz from '@mui/icons-material/MoreHoriz'; import Refresh from '@mui/icons-material/Refresh'; -import { - IconButton, - ListItemIcon, - ListItemText, - Menu, - MenuItem, - Tooltip, - useMediaQuery, - useTheme, -} from '@mui/material'; +import IconButton from '@mui/material/IconButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import Tooltip from '@mui/material/Tooltip'; import React from 'react'; import { useTranslation } from 'react-i18next'; 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 { TManga } from '@/typings.ts'; import { useCategorySelect } from '@/components/navbar/action/useCategorySelect.tsx'; diff --git a/src/components/manga/ResumeFAB.tsx b/src/components/manga/ResumeFAB.tsx index 361561b6..dbc6e575 100644 --- a/src/components/manga/ResumeFAB.tsx +++ b/src/components/manga/ResumeFAB.tsx @@ -7,7 +7,7 @@ */ import { Link } from 'react-router-dom'; -import { PlayArrow } from '@mui/icons-material'; +import PlayArrow from '@mui/icons-material/PlayArrow'; import { useTranslation } from 'react-i18next'; import { StyledFab } from '@/components/util/StyledFab'; diff --git a/src/components/menu/Menu.tsx b/src/components/menu/Menu.tsx index 0bbcff4d..d3f43961 100644 --- a/src/components/menu/Menu.tsx +++ b/src/components/menu/Menu.tsx @@ -6,8 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { MenuProps } from '@mui/material/Menu/Menu'; -import { Menu as MuiMenu } from '@mui/material'; +import MuiMenu, { MenuProps } from '@mui/material/Menu'; import { useState } from 'react'; export const Menu = ({ diff --git a/src/components/menu/MenuItem.tsx b/src/components/menu/MenuItem.tsx index d1de6c17..ffd3f112 100644 --- a/src/components/menu/MenuItem.tsx +++ b/src/components/menu/MenuItem.tsx @@ -6,9 +6,11 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { ListItemIcon, ListItemText, MenuItem as MuiMenuItem, MenuItemProps } from '@mui/material'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import MuiMenuItem, { MenuItemProps } from '@mui/material/MenuItem'; import { OverridableComponent } from '@mui/material/OverridableComponent'; -import { SvgIconTypeMap } from '@mui/material/SvgIcon/SvgIcon'; +import { SvgIconTypeMap } from '@mui/material/SvgIcon'; interface IProps extends MenuItemProps { title: string; diff --git a/src/components/molecules/ConfirmDialog.tsx b/src/components/molecules/ConfirmDialog.tsx index bfea8894..b0a1cb7a 100644 --- a/src/components/molecules/ConfirmDialog.tsx +++ b/src/components/molecules/ConfirmDialog.tsx @@ -6,12 +6,12 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import Dialog from '@mui/material/Dialog/Dialog'; -import DialogActions from '@mui/material/DialogActions/DialogActions'; -import DialogContent from '@mui/material/DialogContent/DialogContent'; -import DialogTitle from '@mui/material/DialogTitle/DialogTitle'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; import { useTranslation } from 'react-i18next'; -import Button from '@mui/material/Button/Button'; +import Button from '@mui/material/Button'; type Action = { show?: boolean; diff --git a/src/components/molecules/DownloadStateIndicator.tsx b/src/components/molecules/DownloadStateIndicator.tsx index a16df2e0..70948ca8 100644 --- a/src/components/molecules/DownloadStateIndicator.tsx +++ b/src/components/molecules/DownloadStateIndicator.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { CircularProgress, Box } from '@mui/material'; +import CircularProgress from '@mui/material/CircularProgress'; +import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import React from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/src/components/molecules/OptionsPanel.tsx b/src/components/molecules/OptionsPanel.tsx index d7266d54..a55cac05 100644 --- a/src/components/molecules/OptionsPanel.tsx +++ b/src/components/molecules/OptionsPanel.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Drawer, Box } from '@mui/material'; +import Drawer from '@mui/material/Drawer'; +import Box from '@mui/material/Box'; import React from 'react'; interface IProps { diff --git a/src/components/molecules/OptionsTabs.tsx b/src/components/molecules/OptionsTabs.tsx index d5dabd10..f4351c57 100644 --- a/src/components/molecules/OptionsTabs.tsx +++ b/src/components/molecules/OptionsTabs.tsx @@ -6,7 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Stack, Tab, Tabs } from '@mui/material'; +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 '@/components/tabs/TabPanel.tsx'; import { OptionsPanel } from '@/components/molecules/OptionsPanel'; diff --git a/src/components/navbar/DefaultNavBar.tsx b/src/components/navbar/DefaultNavBar.tsx index edd1e4b3..ca37e433 100644 --- a/src/components/navbar/DefaultNavBar.tsx +++ b/src/components/navbar/DefaultNavBar.tsx @@ -11,7 +11,8 @@ import AppBar from '@mui/material/AppBar'; import Toolbar from '@mui/material/Toolbar'; import Typography from '@mui/material/Typography'; import IconButton from '@mui/material/IconButton'; -import { Box, useMediaQuery } from '@mui/material'; +import Box from '@mui/material/Box'; +import useMediaQuery from '@mui/material/useMediaQuery'; import { useTheme } from '@mui/material/styles'; import CollectionsBookmarkIcon from '@mui/icons-material/CollectionsBookmark'; import CollectionsOutlinedBookmarkIcon from '@mui/icons-material/CollectionsBookmarkOutlined'; diff --git a/src/components/navbar/ReaderNavBar.tsx b/src/components/navbar/ReaderNavBar.tsx index c506c26c..bd49575d 100644 --- a/src/components/navbar/ReaderNavBar.tsx +++ b/src/components/navbar/ReaderNavBar.tsx @@ -18,7 +18,11 @@ import { useLocation, useNavigate } from 'react-router-dom'; import Slide from '@mui/material/Slide'; import Fade from '@mui/material/Fade'; import Zoom from '@mui/material/Zoom'; -import { Divider, FormControl, MenuItem, styled, Tooltip } from '@mui/material'; +import Divider from '@mui/material/Divider'; +import FormControl from '@mui/material/FormControl'; +import MenuItem from '@mui/material/MenuItem'; +import Tooltip from '@mui/material/Tooltip'; +import { styled } from '@mui/material/styles'; import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Collapse from '@mui/material/Collapse'; diff --git a/src/components/navbar/action/CategorySelect.tsx b/src/components/navbar/action/CategorySelect.tsx index 9e2e6af1..dc0fd212 100644 --- a/src/components/navbar/action/CategorySelect.tsx +++ b/src/components/navbar/action/CategorySelect.tsx @@ -15,7 +15,7 @@ import Dialog from '@mui/material/Dialog'; import FormGroup from '@mui/material/FormGroup'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -import { Stack } from '@mui/material'; +import Stack from '@mui/material/Stack'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { Mangas } from '@/lib/data/Mangas.ts'; import { useSelectableCollection } from '@/components/collection/useSelectableCollection.ts'; diff --git a/src/components/navbar/action/LangSelect.tsx b/src/components/navbar/action/LangSelect.tsx index 15c58f41..3f35bbf1 100644 --- a/src/components/navbar/action/LangSelect.tsx +++ b/src/components/navbar/action/LangSelect.tsx @@ -15,7 +15,9 @@ import Dialog from '@mui/material/Dialog'; import Switch from '@mui/material/Switch'; import IconButton from '@mui/material/IconButton'; import FilterListIcon from '@mui/icons-material/FilterList'; -import { List, ListItemText, Tooltip } from '@mui/material'; +import List from '@mui/material/List'; +import ListItemText from '@mui/material/ListItemText'; +import Tooltip from '@mui/material/Tooltip'; import ListItem from '@mui/material/ListItem'; import { useTranslation } from 'react-i18next'; import { cloneObject } from '@/util/cloneObject'; diff --git a/src/components/navbar/navigation/DesktopSideBar.tsx b/src/components/navbar/navigation/DesktopSideBar.tsx index 9ac355b0..fe92cdd1 100644 --- a/src/components/navbar/navigation/DesktopSideBar.tsx +++ b/src/components/navbar/navigation/DesktopSideBar.tsx @@ -6,9 +6,11 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { ListItemIcon, Tooltip, styled, ListItemButton } from '@mui/material'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import Tooltip from '@mui/material/Tooltip'; +import ListItemButton from '@mui/material/ListItemButton'; +import { styled, useTheme } from '@mui/material/styles'; import { Link, useLocation } from 'react-router-dom'; -import { useTheme } from '@mui/material/styles'; import { useTranslation } from 'react-i18next'; import { NavbarItem } from '@/typings'; diff --git a/src/components/navbar/navigation/MobileBottomBar.tsx b/src/components/navbar/navigation/MobileBottomBar.tsx index 33242744..f631b370 100644 --- a/src/components/navbar/navigation/MobileBottomBar.tsx +++ b/src/components/navbar/navigation/MobileBottomBar.tsx @@ -6,9 +6,10 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { styled, Box, ListItemButton } from '@mui/material'; +import Box from '@mui/material/Box'; +import ListItemButton from '@mui/material/ListItemButton'; +import { styled, useTheme } from '@mui/material/styles'; import { Link as RRDLink, useLocation } from 'react-router-dom'; -import { useTheme } from '@mui/material/styles'; import { useTranslation } from 'react-i18next'; import { NavbarItem } from '@/typings'; diff --git a/src/components/reader/DoublePage.tsx b/src/components/reader/DoublePage.tsx index 2f4f0219..5ae189a9 100644 --- a/src/components/reader/DoublePage.tsx +++ b/src/components/reader/DoublePage.tsx @@ -7,7 +7,7 @@ */ import { CSSProperties, forwardRef } from 'react'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { IReaderSettings } from '@/typings'; import { SpinnerImage } from '@/components/util/SpinnerImage'; import { imageStyle } from '@/components/reader/Page'; diff --git a/src/components/reader/Page.tsx b/src/components/reader/Page.tsx index 3713680e..b0178a33 100644 --- a/src/components/reader/Page.tsx +++ b/src/components/reader/Page.tsx @@ -9,7 +9,7 @@ import { CSSProperties, forwardRef } from 'react'; import Box from '@mui/material/Box'; import { useTheme } from '@mui/material/styles'; -import { useMediaQuery } from '@mui/material'; +import useMediaQuery from '@mui/material/useMediaQuery'; import { IReaderSettings, ReaderType } from '@/typings'; import { SpinnerImage } from '@/components/util/SpinnerImage'; diff --git a/src/components/reader/PageNumber.tsx b/src/components/reader/PageNumber.tsx index 2f1b2567..de268f38 100644 --- a/src/components/reader/PageNumber.tsx +++ b/src/components/reader/PageNumber.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { IReaderSettings } from '@/typings'; interface IProps { diff --git a/src/components/reader/ReaderSettingsOptions.tsx b/src/components/reader/ReaderSettingsOptions.tsx index b858c14d..f5cf8e22 100644 --- a/src/components/reader/ReaderSettingsOptions.tsx +++ b/src/components/reader/ReaderSettingsOptions.tsx @@ -6,7 +6,10 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { List, ListItem, ListItemText, Switch } from '@mui/material'; +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 MenuItem from '@mui/material/MenuItem'; import { useTranslation } from 'react-i18next'; import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings'; diff --git a/src/components/reader/pager/DoublePagedPager.tsx b/src/components/reader/pager/DoublePagedPager.tsx index 2c50e640..ea3700d1 100644 --- a/src/components/reader/pager/DoublePagedPager.tsx +++ b/src/components/reader/pager/DoublePagedPager.tsx @@ -7,7 +7,7 @@ */ import { MouseEvent, useEffect, useRef, useState } from 'react'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { IReaderProps } from '@/typings'; import { Page } from '@/components/reader/Page'; import { DoublePage } from '@/components/reader/DoublePage'; diff --git a/src/components/reader/pager/HorizontalPager.tsx b/src/components/reader/pager/HorizontalPager.tsx index 79d60dca..5004a533 100644 --- a/src/components/reader/pager/HorizontalPager.tsx +++ b/src/components/reader/pager/HorizontalPager.tsx @@ -7,7 +7,7 @@ */ import { MouseEvent as ReactMouseEvent, useEffect, useLayoutEffect, useRef } from 'react'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { IReaderProps } from '@/typings'; import { Page } from '@/components/reader/Page'; diff --git a/src/components/reader/pager/PagedPager.tsx b/src/components/reader/pager/PagedPager.tsx index e389cea8..3cc53198 100644 --- a/src/components/reader/pager/PagedPager.tsx +++ b/src/components/reader/pager/PagedPager.tsx @@ -7,7 +7,7 @@ */ import { MouseEvent, useEffect, useRef } from 'react'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { IReaderProps } from '@/typings'; import { Page } from '@/components/reader/Page'; import { requestManager } from '@/lib/requests/RequestManager.ts'; diff --git a/src/components/reader/pager/VerticalPager.tsx b/src/components/reader/pager/VerticalPager.tsx index d363afc6..06874956 100644 --- a/src/components/reader/pager/VerticalPager.tsx +++ b/src/components/reader/pager/VerticalPager.tsx @@ -7,7 +7,7 @@ */ import { useCallback, useEffect, useLayoutEffect, useRef } from 'react'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { IReaderProps } from '@/typings'; import { Page } from '@/components/reader/Page'; diff --git a/src/components/settings/DateSetting.tsx b/src/components/settings/DateSetting.tsx index 8714a6ee..118d414c 100644 --- a/src/components/settings/DateSetting.tsx +++ b/src/components/settings/DateSetting.tsx @@ -6,7 +6,11 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Button, Dialog, DialogTitle, ListItemText, Stack } from '@mui/material'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import ListItemText from '@mui/material/ListItemText'; +import Stack from '@mui/material/Stack'; import DialogContent from '@mui/material/DialogContent'; import DialogActions from '@mui/material/DialogActions'; import ListItemButton from '@mui/material/ListItemButton'; diff --git a/src/components/settings/DeviceSetting.tsx b/src/components/settings/DeviceSetting.tsx index 60ff3afa..fe6b87a3 100644 --- a/src/components/settings/DeviceSetting.tsx +++ b/src/components/settings/DeviceSetting.tsx @@ -6,7 +6,10 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { List, ListItem, ListItemText, MenuItem } from '@mui/material'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemText from '@mui/material/ListItemText'; +import MenuItem from '@mui/material/MenuItem'; import { useTranslation } from 'react-i18next'; import { useContext, useEffect } from 'react'; import { updateMetadataServerSettings, useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; diff --git a/src/components/settings/MutableListSetting.tsx b/src/components/settings/MutableListSetting.tsx index 7c4bf1fa..8a51c794 100644 --- a/src/components/settings/MutableListSetting.tsx +++ b/src/components/settings/MutableListSetting.tsx @@ -6,17 +6,15 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { - Button, - Dialog, - DialogTitle, - ListItem, - ListItemButton, - ListItemText, - Stack, - Tooltip, - Typography, -} from '@mui/material'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import ListItem from '@mui/material/ListItem'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemText from '@mui/material/ListItemText'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; import { useEffect, useState } from 'react'; import DialogContent from '@mui/material/DialogContent'; import DialogActions from '@mui/material/DialogActions'; diff --git a/src/components/settings/NumberSetting.tsx b/src/components/settings/NumberSetting.tsx index 1729f9cb..a7230009 100644 --- a/src/components/settings/NumberSetting.tsx +++ b/src/components/settings/NumberSetting.tsx @@ -10,7 +10,10 @@ import Dialog from '@mui/material/Dialog'; import DialogContent from '@mui/material/DialogContent'; import DialogTitle from '@mui/material/DialogTitle'; import TextField from '@mui/material/TextField'; -import { InputAdornment, ListItemText, Stack, SxProps, Typography, Theme } from '@mui/material'; +import InputAdornment from '@mui/material/InputAdornment'; +import ListItemText from '@mui/material/ListItemText'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; import { useCallback, useState } from 'react'; @@ -21,6 +24,7 @@ import ListItemIcon from '@mui/material/ListItemIcon'; import Slider from '@mui/material/Slider'; import DialogContentText from '@mui/material/DialogContentText'; import InfoIcon from '@mui/icons-material/Info'; +import { SxProps, Theme } from '@mui/material/styles'; type BaseProps = { settingTitle: string; diff --git a/src/components/settings/SelectSetting.tsx b/src/components/settings/SelectSetting.tsx index 4732c9cc..8456e7d0 100644 --- a/src/components/settings/SelectSetting.tsx +++ b/src/components/settings/SelectSetting.tsx @@ -6,7 +6,14 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Button, Dialog, DialogTitle, FormControl, ListItemText, MenuItem, Stack, Typography } from '@mui/material'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import FormControl from '@mui/material/FormControl'; +import ListItemText from '@mui/material/ListItemText'; +import MenuItem from '@mui/material/MenuItem'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; import DialogContent from '@mui/material/DialogContent'; import DialogActions from '@mui/material/DialogActions'; import ListItemButton from '@mui/material/ListItemButton'; diff --git a/src/components/settings/TimeSetting.tsx b/src/components/settings/TimeSetting.tsx index 1d17b9a6..d784afe4 100644 --- a/src/components/settings/TimeSetting.tsx +++ b/src/components/settings/TimeSetting.tsx @@ -6,7 +6,10 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Button, Dialog, DialogTitle, ListItemText } from '@mui/material'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import ListItemText from '@mui/material/ListItemText'; import DialogContent from '@mui/material/DialogContent'; import DialogActions from '@mui/material/DialogActions'; import ListItemButton from '@mui/material/ListItemButton'; diff --git a/src/components/settings/downloads/DownloadAheadSetting.tsx b/src/components/settings/downloads/DownloadAheadSetting.tsx index 9aabf2fa..00d2f07b 100644 --- a/src/components/settings/downloads/DownloadAheadSetting.tsx +++ b/src/components/settings/downloads/DownloadAheadSetting.tsx @@ -7,7 +7,10 @@ */ import { useTranslation } from 'react-i18next'; -import { List, ListItem, ListItemText, Switch } from '@mui/material'; +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 '@/components/settings/NumberSetting.tsx'; import { getPersistedServerSetting, usePersistedValue } from '@/util/usePersistedValue.tsx'; import { updateMetadataServerSettings, useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; diff --git a/src/components/settings/globalUpdate/CheckboxContainer.ts b/src/components/settings/globalUpdate/CheckboxContainer.ts index 21823418..068b8de8 100644 --- a/src/components/settings/globalUpdate/CheckboxContainer.ts +++ b/src/components/settings/globalUpdate/CheckboxContainer.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { styled } from '@mui/material'; +import { styled } from '@mui/material/styles'; export const CheckboxContainer = styled('div')({ display: 'flex', diff --git a/src/components/settings/globalUpdate/GlobalUpdateSettings.tsx b/src/components/settings/globalUpdate/GlobalUpdateSettings.tsx index c94ebd92..910b259d 100644 --- a/src/components/settings/globalUpdate/GlobalUpdateSettings.tsx +++ b/src/components/settings/globalUpdate/GlobalUpdateSettings.tsx @@ -9,7 +9,9 @@ import List from '@mui/material/List'; import ListSubheader from '@mui/material/ListSubheader'; import { useTranslation } from 'react-i18next'; -import { ListItem, ListItemText, Switch } from '@mui/material'; +import ListItem from '@mui/material/ListItem'; +import ListItemText from '@mui/material/ListItemText'; +import Switch from '@mui/material/Switch'; import { CategoriesInclusionSetting } from '@/components/settings/CategoriesInclusionSetting.tsx'; import { GlobalUpdateSettingsEntries } from '@/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx'; import { GlobalUpdateSettingsInterval } from '@/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx'; diff --git a/src/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx b/src/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx index 93e8e6c1..5e76dc26 100644 --- a/src/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx +++ b/src/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx @@ -11,7 +11,11 @@ import { useTranslation } from 'react-i18next'; import { useEffect, useState } from 'react'; import ListItemButton from '@mui/material/ListItemButton'; import ListItemText from '@mui/material/ListItemText'; -import { Button, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; import { ServerSettings, TranslationKey } from '@/typings.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { makeToast } from '@/components/util/Toast.tsx'; diff --git a/src/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx b/src/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx index ffffead8..eb0af32a 100644 --- a/src/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx +++ b/src/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx @@ -7,7 +7,10 @@ */ import { useTranslation } from 'react-i18next'; -import { List, ListItem, ListItemText, Switch } from '@mui/material'; +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 { useCallback } from 'react'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; diff --git a/src/components/settings/text/TextSetting.tsx b/src/components/settings/text/TextSetting.tsx index 9ed90484..221ff021 100644 --- a/src/components/settings/text/TextSetting.tsx +++ b/src/components/settings/text/TextSetting.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { ListItemText } from '@mui/material'; +import ListItemText from '@mui/material/ListItemText'; import ListItemButton from '@mui/material/ListItemButton'; import { useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/src/components/settings/text/TextSettingDialog.tsx b/src/components/settings/text/TextSettingDialog.tsx index a4dcafbe..810369e8 100644 --- a/src/components/settings/text/TextSettingDialog.tsx +++ b/src/components/settings/text/TextSettingDialog.tsx @@ -6,7 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Button, Dialog, DialogTitle } from '@mui/material'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; import DialogContent from '@mui/material/DialogContent'; import DialogContentText from '@mui/material/DialogContentText'; import TextField from '@mui/material/TextField'; diff --git a/src/components/settings/webUI/WebUIUpdateIntervalSetting.tsx b/src/components/settings/webUI/WebUIUpdateIntervalSetting.tsx index 0800f100..c2beb4e8 100644 --- a/src/components/settings/webUI/WebUIUpdateIntervalSetting.tsx +++ b/src/components/settings/webUI/WebUIUpdateIntervalSetting.tsx @@ -7,7 +7,10 @@ */ import { useTranslation } from 'react-i18next'; -import { List, ListItem, ListItemText, Switch } from '@mui/material'; +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 { useCallback } from 'react'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; diff --git a/src/components/source/GridLayouts.tsx b/src/components/source/GridLayouts.tsx index ca79e44a..7e529fd1 100644 --- a/src/components/source/GridLayouts.tsx +++ b/src/components/source/GridLayouts.tsx @@ -6,7 +6,12 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { IconButton, Menu, MenuItem, FormControlLabel, Radio, Tooltip } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Radio from '@mui/material/Radio'; +import Tooltip from '@mui/material/Tooltip'; import React from 'react'; import ViewModuleIcon from '@mui/icons-material/ViewModule'; import { useTranslation } from 'react-i18next'; diff --git a/src/components/source/SourceOptions.tsx b/src/components/source/SourceOptions.tsx index c7b23a37..43f88166 100644 --- a/src/components/source/SourceOptions.tsx +++ b/src/components/source/SourceOptions.tsx @@ -7,7 +7,9 @@ */ import FilterListIcon from '@mui/icons-material/FilterList'; -import { Button, Stack, Box } from '@mui/material'; +import Button from '@mui/material/Button'; +import Stack from '@mui/material/Stack'; +import Box from '@mui/material/Box'; import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { SourceFilters } from '@/typings'; diff --git a/src/components/source/filters/GroupFilter.tsx b/src/components/source/filters/GroupFilter.tsx index 3d65c01f..c78a775e 100644 --- a/src/components/source/filters/GroupFilter.tsx +++ b/src/components/source/filters/GroupFilter.tsx @@ -6,8 +6,13 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { ExpandLess, ExpandMore } from '@mui/icons-material'; -import { Collapse, ListItemButton, ListItemText, Stack, Box } from '@mui/material'; +import ExpandLess from '@mui/icons-material/ExpandLess'; +import ExpandMore from '@mui/icons-material/ExpandMore'; +import Collapse from '@mui/material/Collapse'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemText from '@mui/material/ListItemText'; +import Stack from '@mui/material/Stack'; +import Box from '@mui/material/Box'; import React from 'react'; // eslint-disable-next-line import/no-cycle import { SourceFilters } from '@/typings'; diff --git a/src/components/source/filters/HeaderFilter.tsx b/src/components/source/filters/HeaderFilter.tsx index 41655963..58355077 100644 --- a/src/components/source/filters/HeaderFilter.tsx +++ b/src/components/source/filters/HeaderFilter.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Typography } from '@mui/material'; +import Typography from '@mui/material/Typography'; import React from 'react'; interface Props { diff --git a/src/components/source/filters/SeparatorFilter.tsx b/src/components/source/filters/SeparatorFilter.tsx index e045d56d..95aefa3c 100644 --- a/src/components/source/filters/SeparatorFilter.tsx +++ b/src/components/source/filters/SeparatorFilter.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Divider } from '@mui/material'; +import Divider from '@mui/material/Divider'; import React from 'react'; interface Props { diff --git a/src/components/source/filters/SortFilter.tsx b/src/components/source/filters/SortFilter.tsx index 000c1f3a..8526f2ae 100644 --- a/src/components/source/filters/SortFilter.tsx +++ b/src/components/source/filters/SortFilter.tsx @@ -6,8 +6,13 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { ExpandLess, ExpandMore } from '@mui/icons-material'; -import { Collapse, ListItemButton, ListItemText, Stack, Box } from '@mui/material'; +import ExpandLess from '@mui/icons-material/ExpandLess'; +import ExpandMore from '@mui/icons-material/ExpandMore'; +import Collapse from '@mui/material/Collapse'; +import ListItemButton from '@mui/material/ListItemButton'; +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 '@/components/atoms/SortRadioInput'; import { SortSelectionInput } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/components/source/filters/TextFilter.tsx b/src/components/source/filters/TextFilter.tsx index 9127195b..51c287c4 100644 --- a/src/components/source/filters/TextFilter.tsx +++ b/src/components/source/filters/TextFilter.tsx @@ -7,7 +7,10 @@ */ import SearchIcon from '@mui/icons-material/Search'; -import { FormControl, Input, InputAdornment, InputLabel } from '@mui/material'; +import FormControl from '@mui/material/FormControl'; +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 '@/util/useDebounce.ts'; diff --git a/src/components/sourceConfiguration/EditTextPreference.tsx b/src/components/sourceConfiguration/EditTextPreference.tsx index f45329ce..825b9632 100644 --- a/src/components/sourceConfiguration/EditTextPreference.tsx +++ b/src/components/sourceConfiguration/EditTextPreference.tsx @@ -16,7 +16,7 @@ import DialogActions from '@mui/material/DialogActions'; import TextField from '@mui/material/TextField'; import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; -import { ListItemButton } from '@mui/material'; +import ListItemButton from '@mui/material/ListItemButton'; import { EditTextPreferenceProps } from '@/typings'; export function EditTextPreference(props: EditTextPreferenceProps) { diff --git a/src/components/sourceConfiguration/ListPreference.tsx b/src/components/sourceConfiguration/ListPreference.tsx index a9d1519f..544ba61b 100644 --- a/src/components/sourceConfiguration/ListPreference.tsx +++ b/src/components/sourceConfiguration/ListPreference.tsx @@ -17,7 +17,7 @@ import Radio from '@mui/material/Radio'; import FormControlLabel from '@mui/material/FormControlLabel'; import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; -import { ListItemButton } from '@mui/material'; +import ListItemButton from '@mui/material/ListItemButton'; import { ListPreferenceProps } from '@/typings'; interface IListDialogProps { diff --git a/src/components/sourceConfiguration/MultiSelectListPreference.tsx b/src/components/sourceConfiguration/MultiSelectListPreference.tsx index 125dde3c..fcfa7234 100644 --- a/src/components/sourceConfiguration/MultiSelectListPreference.tsx +++ b/src/components/sourceConfiguration/MultiSelectListPreference.tsx @@ -17,7 +17,7 @@ import Checkbox from '@mui/material/Checkbox'; import FormControlLabel from '@mui/material/FormControlLabel'; import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; -import { ListItemButton } from '@mui/material'; +import ListItemButton from '@mui/material/ListItemButton'; import { MultiSelectListPreferenceProps } from '@/typings'; import { cloneObject } from '@/util/cloneObject'; diff --git a/src/components/tabs/TabsMenu.tsx b/src/components/tabs/TabsMenu.tsx index 2391e276..dc68d96d 100644 --- a/src/components/tabs/TabsMenu.tsx +++ b/src/components/tabs/TabsMenu.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { styled, Tabs, TabsProps } from '@mui/material'; +import Tabs, { TabsProps } from '@mui/material/Tabs'; +import { styled } from '@mui/material/styles'; const StyledTabsMenu = styled(Tabs)(({ theme }) => ({ display: 'flex', diff --git a/src/components/tabs/TabsWrapper.tsx b/src/components/tabs/TabsWrapper.tsx index 6b98a10e..dfa183bb 100644 --- a/src/components/tabs/TabsWrapper.tsx +++ b/src/components/tabs/TabsWrapper.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Box, styled } from '@mui/material'; +import Box from '@mui/material/Box'; +import { styled } from '@mui/material/styles'; export const TabsWrapper = styled(Box)(({ theme }) => ({ // TabsMenu height + TabsMenu bottom padding - grid item top padding diff --git a/src/components/tracker/SettingsTrackerCard.tsx b/src/components/tracker/SettingsTrackerCard.tsx index db4b099b..320617c1 100644 --- a/src/components/tracker/SettingsTrackerCard.tsx +++ b/src/components/tracker/SettingsTrackerCard.tsx @@ -10,7 +10,9 @@ import { useTranslation } from 'react-i18next'; import { useState } from 'react'; import PopupState, { bindDialog, bindTrigger } from 'material-ui-popup-state'; import ListItemButton from '@mui/material/ListItemButton'; -import { Chip, ListItemAvatar, ListItemSecondaryAction } from '@mui/material'; +import Chip from '@mui/material/Chip'; +import ListItemAvatar from '@mui/material/ListItemAvatar'; +import ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction'; import Avatar from '@mui/material/Avatar'; import ListItemText from '@mui/material/ListItemText'; import Dialog from '@mui/material/Dialog'; diff --git a/src/components/tracker/TrackManga.tsx b/src/components/tracker/TrackManga.tsx index 3b748588..a0d946e5 100644 --- a/src/components/tracker/TrackManga.tsx +++ b/src/components/tracker/TrackManga.tsx @@ -7,7 +7,7 @@ */ import { useNavigate } from 'react-router-dom'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { useEffect, useMemo, useState } from 'react'; import DialogContent from '@mui/material/DialogContent'; import { useTranslation } from 'react-i18next'; diff --git a/src/components/tracker/TrackerActiveCard.tsx b/src/components/tracker/TrackerActiveCard.tsx index 1d28ce44..4d2882d9 100644 --- a/src/components/tracker/TrackerActiveCard.tsx +++ b/src/components/tracker/TrackerActiveCard.tsx @@ -10,23 +10,21 @@ import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; import Avatar from '@mui/material/Avatar'; import { useTranslation } from 'react-i18next'; -import { - Box, - Button, - Dialog, - DialogActions, - DialogContent, - DialogTitle, - Divider, - FormGroup, - IconButton, - Link, - ListItemButton, - MenuItem, - Stack, - Tooltip, - Typography, -} from '@mui/material'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; +import Divider from '@mui/material/Divider'; +import FormGroup from '@mui/material/FormGroup'; +import IconButton from '@mui/material/IconButton'; +import Link from '@mui/material/Link'; +import ListItemButton from '@mui/material/ListItemButton'; +import MenuItem from '@mui/material/MenuItem'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; import MoreVertIcon from '@mui/icons-material/MoreVert'; import PopupState, { bindDialog, bindMenu, bindTrigger } from 'material-ui-popup-state'; import { useMemo, useState } from 'react'; diff --git a/src/components/tracker/TrackerMangaCard.tsx b/src/components/tracker/TrackerMangaCard.tsx index 9c1fdd52..6f10185d 100644 --- a/src/components/tracker/TrackerMangaCard.tsx +++ b/src/components/tracker/TrackerMangaCard.tsx @@ -10,21 +10,19 @@ import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; -import { - Box, - CardActionArea, - CardMedia, - Collapse, - Link, - Stack, - Tooltip, - Typography, - useMediaQuery, - useTheme, -} from '@mui/material'; +import Box from '@mui/material/Box'; +import CardActionArea from '@mui/material/CardActionArea'; +import CardMedia from '@mui/material/CardMedia'; +import Collapse from '@mui/material/Collapse'; +import Link from '@mui/material/Link'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; import { useLayoutEffect, useRef, useState } from 'react'; import parseHtml from 'html-react-parser'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; +import { useTheme } from '@mui/material/styles'; +import useMediaQuery from '@mui/material/useMediaQuery'; import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; import { TrackerManga } from '@/lib/data/Trackers.ts'; import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; diff --git a/src/components/tracker/TrackerSearch.tsx b/src/components/tracker/TrackerSearch.tsx index 5e256a26..c1e0d3e9 100644 --- a/src/components/tracker/TrackerSearch.tsx +++ b/src/components/tracker/TrackerSearch.tsx @@ -8,7 +8,8 @@ import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; -import { List, Stack } from '@mui/material'; +import List from '@mui/material/List'; +import Stack from '@mui/material/Stack'; import { useEffect, useMemo, useState } from 'react'; import IconButton from '@mui/material/IconButton'; import ArrowBack from '@mui/icons-material/ArrowBack'; diff --git a/src/components/tracker/TrackerUntrackedCard.tsx b/src/components/tracker/TrackerUntrackedCard.tsx index 06564ef6..00468e85 100644 --- a/src/components/tracker/TrackerUntrackedCard.tsx +++ b/src/components/tracker/TrackerUntrackedCard.tsx @@ -11,7 +11,7 @@ import CardContent from '@mui/material/CardContent'; import Avatar from '@mui/material/Avatar'; import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; -import { Stack } from '@mui/material'; +import Stack from '@mui/material/Stack'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { TBaseTracker } from '@/lib/data/Trackers.ts'; import { CARD_STYLING } from '@/components/tracker/constants.ts'; diff --git a/src/components/tracker/constants.ts b/src/components/tracker/constants.ts index 84d580cc..6348a701 100644 --- a/src/components/tracker/constants.ts +++ b/src/components/tracker/constants.ts @@ -6,17 +6,17 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { SxProps } from '@mui/material'; +import { SxProps, Theme } from '@mui/material/styles'; export const DIALOG_PADDING: number = 2; -export const CARD_BACKGROUND: SxProps = { +export const CARD_BACKGROUND: SxProps = { backgroundColor: 'transparent', boxShadow: 'unset', backgroundImage: 'unset', }; -export const CARD_STYLING: SxProps = { +export const CARD_STYLING: SxProps = { padding: DIALOG_PADDING, ...CARD_BACKGROUND, }; diff --git a/src/components/util/AppbarSearch.tsx b/src/components/util/AppbarSearch.tsx index 8f1b5cdc..dfcdb469 100644 --- a/src/components/util/AppbarSearch.tsx +++ b/src/components/util/AppbarSearch.tsx @@ -8,7 +8,8 @@ import React, { useState, useEffect } from 'react'; import SearchIcon from '@mui/icons-material/Search'; -import { IconButton, Tooltip } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; import { useQueryParam, StringParam } from 'use-query-params'; import { useTranslation } from 'react-i18next'; import { useLocation } from 'react-router-dom'; diff --git a/src/components/util/CustomExtensionOutlinedIcon.tsx b/src/components/util/CustomExtensionOutlinedIcon.tsx index e0c7bdf3..d1ab226e 100644 --- a/src/components/util/CustomExtensionOutlinedIcon.tsx +++ b/src/components/util/CustomExtensionOutlinedIcon.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import createSvgIcon from '@mui/material/utils/createSvgIcon'; +import { createSvgIcon } from '@mui/material/utils'; const d = 'M 11 1 C 9.3550302 1 8 2.3550302 8 4 L 4 4 C 2.9069372 4 2 4.9069372 2 6 L 2 12 L 4 12 C 4.5650302 12 5 12.43497 5 13 C 5 13.56503 4.5650302 14 4 14 L 2 14 L 2 20 C 2 21.093063 2.9069372 22 4 22 L 10 22 L 10 20 C 10 19.43497 10.43497 19 11 19 C 11.56503 19 12 19.43497 12 20 L 12 22 L 18 22 C 19.093063 22 20 21.093063 20 20 L 20 16 C 21.64497 16 23 14.64497 23 13 C 23 11.35503 21.64497 10 20 10 L 20 6 C 20 4.9069372 19.093063 4 18 4 L 14 4 C 14 2.3550302 12.64497 1 11 1 z M 11 3 C 11.56503 3 12 3.4349698 12 4 L 12 6 L 18 6 L 18 12 L 20 12 C 20.56503 12 21 12.43497 21 13 C 21 13.56503 20.56503 14 20 14 L 18 14 L 18 20 L 14 20 C 14 18.35503 12.64497 17 11 17 C 9.3550302 17 8 18.35503 8 20 L 4 20 L 4 16 C 5.6449698 16 7 14.64497 7 13 C 7 11.35503 5.6449698 10 4 10 L 4 6 L 10 6 L 10 4 C 10 3.4349698 10.43497 3 11 3 z'; diff --git a/src/components/util/EmptyView.tsx b/src/components/util/EmptyView.tsx index 3b704c5e..ee57010c 100644 --- a/src/components/util/EmptyView.tsx +++ b/src/components/util/EmptyView.tsx @@ -11,7 +11,8 @@ import { useMemo } from 'react'; import Typography from '@mui/material/Typography'; import { useTheme } from '@mui/material/styles'; -import { Box, useMediaQuery } from '@mui/material'; +import Box from '@mui/material/Box'; +import useMediaQuery from '@mui/material/useMediaQuery'; const ERROR_FACES = ['(・o・;)', 'Σ(ಠ_ಠ)', 'ಥ_ಥ', '(˘・_・˘)', '(; ̄Д ̄)', '(・Д・。']; diff --git a/src/components/util/ListItemLink.tsx b/src/components/util/ListItemLink.tsx index f968047d..7feed88c 100644 --- a/src/components/util/ListItemLink.tsx +++ b/src/components/util/ListItemLink.tsx @@ -7,7 +7,7 @@ */ import { Link } from 'react-router-dom'; -import { ListItemButton, ListItemButtonProps } from '@mui/material'; +import ListItemButton, { ListItemButtonProps } from '@mui/material/ListItemButton'; export function ListItemLink(props: ListItemButtonProps) { return ; diff --git a/src/components/util/LoadingPlaceholder.tsx b/src/components/util/LoadingPlaceholder.tsx index af8b9f29..3da97b1a 100644 --- a/src/components/util/LoadingPlaceholder.tsx +++ b/src/components/util/LoadingPlaceholder.tsx @@ -8,7 +8,7 @@ import React from 'react'; import CircularProgress from '@mui/material/CircularProgress'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; interface IProps { shouldRender?: boolean | (() => boolean); diff --git a/src/components/util/Progress.tsx b/src/components/util/Progress.tsx index ef9f67fc..05bc8894 100644 --- a/src/components/util/Progress.tsx +++ b/src/components/util/Progress.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import CircularProgress from '@mui/material/CircularProgress'; import Typography from '@mui/material/Typography'; diff --git a/src/components/util/SpinnerImage.tsx b/src/components/util/SpinnerImage.tsx index d7144b16..9f2e065b 100644 --- a/src/components/util/SpinnerImage.tsx +++ b/src/components/util/SpinnerImage.tsx @@ -9,12 +9,13 @@ import { useState, CSSProperties, useEffect, forwardRef, ForwardedRef } from 'react'; import CircularProgress from '@mui/material/CircularProgress'; import Box from '@mui/material/Box'; -import { Theme, SxProps, Stack, Button } from '@mui/material'; - +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; import BrokenImageIcon from '@mui/icons-material/BrokenImage'; import RefreshIcon from '@mui/icons-material/Refresh'; import { useTranslation } from 'react-i18next'; import ImageIcon from '@mui/icons-material/Image'; +import { SxProps, Theme } from '@mui/material/styles'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; import { Priority } from '@/lib/Queue.ts'; diff --git a/src/components/util/StyledFab.tsx b/src/components/util/StyledFab.tsx index 3bf41df1..4b24ab5c 100644 --- a/src/components/util/StyledFab.tsx +++ b/src/components/util/StyledFab.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Fab, styled } from '@mui/material'; +import Fab from '@mui/material/Fab'; +import { styled } from '@mui/material/styles'; export const DEFAULT_FAB_STYLE = { position: 'fixed', diff --git a/src/components/virtuoso/StyledGroupHeader.tsx b/src/components/virtuoso/StyledGroupHeader.tsx index b68e547c..09303883 100644 --- a/src/components/virtuoso/StyledGroupHeader.tsx +++ b/src/components/virtuoso/StyledGroupHeader.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { styled } from '@mui/material'; +import { styled } from '@mui/material/styles'; import Typography from '@mui/material/Typography'; export const StyledGroupHeader = styled(Typography, { shouldForwardProp: (prop) => prop !== 'isFirstItem' })<{ diff --git a/src/components/virtuoso/StyledGroupItemWrapper.tsx b/src/components/virtuoso/StyledGroupItemWrapper.tsx index b144d1a9..cae01cdd 100644 --- a/src/components/virtuoso/StyledGroupItemWrapper.tsx +++ b/src/components/virtuoso/StyledGroupItemWrapper.tsx @@ -6,7 +6,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Box, styled } from '@mui/material'; +import Box from '@mui/material/Box'; +import { styled } from '@mui/material/styles'; export const StyledGroupItemWrapper = styled(Box, { shouldForwardProp: (prop) => prop !== 'isLastItem' })<{ isLastItem: boolean; diff --git a/src/components/virtuoso/StyledGroupedVirtuoso.tsx b/src/components/virtuoso/StyledGroupedVirtuoso.tsx index 6f1aada3..b8babded 100644 --- a/src/components/virtuoso/StyledGroupedVirtuoso.tsx +++ b/src/components/virtuoso/StyledGroupedVirtuoso.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { styled } from '@mui/material'; +import { styled } from '@mui/material/styles'; import { GroupedVirtuoso } from 'react-virtuoso'; export const StyledGroupedVirtuoso = styled(GroupedVirtuoso, { diff --git a/src/lib/ui/AwaitableDialog.tsx b/src/lib/ui/AwaitableDialog.tsx index c8392fc0..8be3eadd 100644 --- a/src/lib/ui/AwaitableDialog.tsx +++ b/src/lib/ui/AwaitableDialog.tsx @@ -7,7 +7,7 @@ */ import { createRoot } from 'react-dom/client'; -import ThemeProvider from '@mui/material/styles/ThemeProvider'; +import { ThemeProvider } from '@mui/material/styles'; import { ConfirmDialog } from '@/components/molecules/ConfirmDialog.tsx'; import { ControlledPromise } from '@/lib/ControlledPromise.ts'; import { getCurrentTheme } from '@/theme.ts'; diff --git a/src/screens/DownloadQueue.tsx b/src/screens/DownloadQueue.tsx index 597c736b..f661e54e 100644 --- a/src/screens/DownloadQueue.tsx +++ b/src/screens/DownloadQueue.tsx @@ -10,7 +10,11 @@ import DeleteIcon from '@mui/icons-material/Delete'; import DragHandle from '@mui/icons-material/DragHandle'; import PauseIcon from '@mui/icons-material/Pause'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; -import { Card, CardActionArea, Stack, Box, Tooltip } from '@mui/material'; +import Card from '@mui/material/Card'; +import CardActionArea from '@mui/material/CardActionArea'; +import Stack from '@mui/material/Stack'; +import Box, { BoxProps } from '@mui/material/Box'; +import Tooltip from '@mui/material/Tooltip'; import IconButton from '@mui/material/IconButton'; import React, { useContext, useEffect } from 'react'; import { DragDropContext, Draggable, DraggableProvided, DropResult } from 'react-beautiful-dnd'; @@ -19,7 +23,6 @@ import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import DeleteSweepIcon from '@mui/icons-material/DeleteSweep'; import { Virtuoso } from 'react-virtuoso'; -import { BoxProps } from '@mui/material/Box/Box'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { StrictModeDroppable } from '@/lib/StrictModeDroppable'; import { makeToast } from '@/components/util/Toast'; diff --git a/src/screens/Extensions.tsx b/src/screens/Extensions.tsx index 2e211ca6..d123dbfa 100644 --- a/src/screens/Extensions.tsx +++ b/src/screens/Extensions.tsx @@ -11,7 +11,11 @@ import { fromEvent } from 'file-selector'; import IconButton from '@mui/material/IconButton'; import AddIcon from '@mui/icons-material/Add'; import { StringParam, useQueryParam } from 'use-query-params'; -import { Button, Stack, Tooltip, Typography, useMediaQuery } from '@mui/material'; +import Button from '@mui/material/Button'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; +import useMediaQuery from '@mui/material/useMediaQuery'; import { useTranslation } from 'react-i18next'; import { useTheme } from '@mui/material/styles'; import { Link } from 'react-router-dom'; diff --git a/src/screens/Library.tsx b/src/screens/Library.tsx index 8d0d82d4..7a37181f 100644 --- a/src/screens/Library.tsx +++ b/src/screens/Library.tsx @@ -6,7 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Chip, Tab, styled } from '@mui/material'; +import Chip from '@mui/material/Chip'; +import Tab from '@mui/material/Tab'; +import { styled } from '@mui/material/styles'; import React, { useContext, useEffect, useMemo, useState } from 'react'; import { useQueryParam, NumberParam } from 'use-query-params'; import { useTranslation } from 'react-i18next'; diff --git a/src/screens/Manga.tsx b/src/screens/Manga.tsx index 6f377c59..8a7b8109 100644 --- a/src/screens/Manga.tsx +++ b/src/screens/Manga.tsx @@ -6,8 +6,12 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Warning } from '@mui/icons-material'; -import { CircularProgress, IconButton, Stack, Tooltip, Box } from '@mui/material'; +import Warning from '@mui/icons-material/Warning'; +import CircularProgress from '@mui/material/CircularProgress'; +import IconButton from '@mui/material/IconButton'; +import Stack from '@mui/material/Stack'; +import Tooltip from '@mui/material/Tooltip'; +import Box from '@mui/material/Box'; import React, { useContext, useEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; diff --git a/src/screens/Reader.tsx b/src/screens/Reader.tsx index 2d4b5d1f..2f9e363e 100644 --- a/src/screens/Reader.tsx +++ b/src/screens/Reader.tsx @@ -9,7 +9,7 @@ import CircularProgress from '@mui/material/CircularProgress'; import { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react'; import { useLocation, useNavigate, useParams } from 'react-router-dom'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import { useTranslation } from 'react-i18next'; import { AllowedMetadataValueTypes, ChapterOffset, IReaderSettings, ReaderType, TChapter, TManga } from '@/typings'; import { requestManager } from '@/lib/requests/RequestManager.ts'; diff --git a/src/screens/SearchAll.tsx b/src/screens/SearchAll.tsx index 51ebc29a..25569806 100644 --- a/src/screens/SearchAll.tsx +++ b/src/screens/SearchAll.tsx @@ -6,7 +6,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Card, CardActionArea, Typography } from '@mui/material'; +import Card from '@mui/material/Card'; +import CardActionArea from '@mui/material/CardActionArea'; +import Typography from '@mui/material/Typography'; import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { StringParam, useQueryParam } from 'use-query-params'; diff --git a/src/screens/Settings.tsx b/src/screens/Settings.tsx index 89d95c1b..65132716 100644 --- a/src/screens/Settings.tsx +++ b/src/screens/Settings.tsx @@ -17,7 +17,9 @@ import ListItem from '@mui/material/ListItem'; import ListItemIcon from '@mui/material/ListItemIcon'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; -import { Link, ListItemButton, MenuItem } from '@mui/material'; +import Link from '@mui/material/Link'; +import ListItemButton from '@mui/material/ListItemButton'; +import MenuItem from '@mui/material/MenuItem'; import { useTranslation } from 'react-i18next'; import LanguageIcon from '@mui/icons-material/Language'; import CollectionsOutlinedBookmarkIcon from '@mui/icons-material/CollectionsBookmarkOutlined'; diff --git a/src/screens/SourceMangas.tsx b/src/screens/SourceMangas.tsx index a01b5535..3c679ab0 100644 --- a/src/screens/SourceMangas.tsx +++ b/src/screens/SourceMangas.tsx @@ -13,7 +13,10 @@ import SettingsIcon from '@mui/icons-material/Settings'; import { useQueryParam, StringParam } from 'use-query-params'; import { useTranslation } from 'react-i18next'; import Link from '@mui/material/Link'; -import { Box, Button, styled, Tooltip } from '@mui/material'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Tooltip from '@mui/material/Tooltip'; +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'; diff --git a/src/screens/Sources.tsx b/src/screens/Sources.tsx index e515596e..292ec968 100644 --- a/src/screens/Sources.tsx +++ b/src/screens/Sources.tsx @@ -7,7 +7,9 @@ */ import { Fragment, useContext, useEffect, useMemo } from 'react'; -import { IconButton, Tooltip, Typography } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; import TravelExploreIcon from '@mui/icons-material/TravelExplore'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; diff --git a/src/screens/Updates.tsx b/src/screens/Updates.tsx index a6b9e134..d9a1f533 100644 --- a/src/screens/Updates.tsx +++ b/src/screens/Updates.tsx @@ -7,7 +7,9 @@ */ import DownloadIcon from '@mui/icons-material/Download'; -import { Box, CardActionArea, Tooltip } from '@mui/material'; +import Box from '@mui/material/Box'; +import CardActionArea from '@mui/material/CardActionArea'; +import Tooltip from '@mui/material/Tooltip'; import Avatar from '@mui/material/Avatar'; import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; diff --git a/src/screens/settings/About.tsx b/src/screens/settings/About.tsx index f3ab39e4..74ef603b 100644 --- a/src/screens/settings/About.tsx +++ b/src/screens/settings/About.tsx @@ -12,7 +12,11 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import { useTranslation } from 'react-i18next'; import ListSubheader from '@mui/material/ListSubheader'; -import { Button, CircularProgress, Divider, Stack, Typography } from '@mui/material'; +import Button from '@mui/material/Button'; +import CircularProgress from '@mui/material/CircularProgress'; +import Divider from '@mui/material/Divider'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; import RefreshIcon from '@mui/icons-material/Refresh'; import DownloadIcon from '@mui/icons-material/Download'; import OpenInNewIcon from '@mui/icons-material/OpenInNew'; diff --git a/src/screens/settings/Backup.tsx b/src/screens/settings/Backup.tsx index 5b163724..12a485cd 100644 --- a/src/screens/settings/Backup.tsx +++ b/src/screens/settings/Backup.tsx @@ -11,7 +11,7 @@ import List from '@mui/material/List'; import ListItemText from '@mui/material/ListItemText'; import { fromEvent } from 'file-selector'; import { useTranslation } from 'react-i18next'; -import { ListItemButton } from '@mui/material'; +import ListItemButton from '@mui/material/ListItemButton'; import ListItemIcon from '@mui/material/ListItemIcon'; import ListSubheader from '@mui/material/ListSubheader'; import { t as translate } from 'i18next'; diff --git a/src/screens/settings/Categories.tsx b/src/screens/settings/Categories.tsx index 6a9fd009..b6c23327 100644 --- a/src/screens/settings/Categories.tsx +++ b/src/screens/settings/Categories.tsx @@ -7,7 +7,12 @@ */ import { useMemo, useState, useContext, useEffect } from 'react'; -import { List, ListItem, ListItemText, ListItemIcon, IconButton, Tooltip } from '@mui/material'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemText from '@mui/material/ListItemText'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; import { DragDropContext, Draggable, DropResult, DraggingStyle, NotDraggingStyle } from 'react-beautiful-dnd'; import DragHandleIcon from '@mui/icons-material/DragHandle'; import EditIcon from '@mui/icons-material/Edit'; diff --git a/src/screens/settings/DefaultReaderSettings.tsx b/src/screens/settings/DefaultReaderSettings.tsx index e6667926..46186d3f 100644 --- a/src/screens/settings/DefaultReaderSettings.tsx +++ b/src/screens/settings/DefaultReaderSettings.tsx @@ -7,7 +7,7 @@ */ import { useContext, useEffect } from 'react'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; import CircularProgress from '@mui/material/CircularProgress'; import { useTranslation } from 'react-i18next'; import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings'; diff --git a/src/screens/settings/DownloadSettings.tsx b/src/screens/settings/DownloadSettings.tsx index 25a94294..45a1093e 100644 --- a/src/screens/settings/DownloadSettings.tsx +++ b/src/screens/settings/DownloadSettings.tsx @@ -9,7 +9,9 @@ import { useTranslation } from 'react-i18next'; import { useContext, useEffect } from 'react'; import List from '@mui/material/List'; -import { ListItem, ListItemText, Switch } from '@mui/material'; +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 '@/components/settings/text/TextSetting.tsx'; import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext.tsx'; diff --git a/src/screens/settings/LibrarySettings.tsx b/src/screens/settings/LibrarySettings.tsx index 75d5b523..6687667c 100644 --- a/src/screens/settings/LibrarySettings.tsx +++ b/src/screens/settings/LibrarySettings.tsx @@ -8,7 +8,11 @@ import { useTranslation } from 'react-i18next'; import { useContext, useEffect } from 'react'; -import { List, ListItem, ListItemButton, ListItemText, Switch } from '@mui/material'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemButton from '@mui/material/ListItemButton'; +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 { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext.tsx'; diff --git a/src/screens/settings/ServerSettings.tsx b/src/screens/settings/ServerSettings.tsx index 4751fdab..016fad68 100644 --- a/src/screens/settings/ServerSettings.tsx +++ b/src/screens/settings/ServerSettings.tsx @@ -8,7 +8,11 @@ import { useTranslation, Trans } from 'react-i18next'; import { useContext, useEffect } from 'react'; -import { Link, List, ListItem, ListItemText, Switch } from '@mui/material'; +import Link from '@mui/material/Link'; +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 ListSubheader from '@mui/material/ListSubheader'; import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; diff --git a/src/screens/settings/WebUISettings.tsx b/src/screens/settings/WebUISettings.tsx index b6bd5a36..230abd0d 100644 --- a/src/screens/settings/WebUISettings.tsx +++ b/src/screens/settings/WebUISettings.tsx @@ -9,7 +9,9 @@ import { useTranslation } from 'react-i18next'; import { useContext, useEffect } from 'react'; import List from '@mui/material/List'; -import { ListItem, ListItemText, Switch } from '@mui/material'; +import ListItem from '@mui/material/ListItem'; +import ListItemText from '@mui/material/ListItemText'; +import Switch from '@mui/material/Switch'; import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext.tsx'; import { ServerSettings } from '@/typings.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; diff --git a/src/typings.ts b/src/typings.ts index a231d60d..e97c4135 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -7,7 +7,7 @@ */ import { OverridableComponent } from '@mui/material/OverridableComponent'; -import { SvgIconTypeMap } from '@mui/material/SvgIcon/SvgIcon'; +import { SvgIconTypeMap } from '@mui/material/SvgIcon'; import { ParseKeys } from 'i18next'; import { Location } from 'react-router-dom'; import { diff --git a/tsconfig.json b/tsconfig.json index 333123b0..03f7b1d1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,6 +34,7 @@ "include": [ "src" ], + "exclude": ["**/node_modules", "**/.*/"], "references": [ { "path": "./tsconfig.node.json"