diff --git a/eslint.config.mjs b/eslint.config.mjs index e094230ec9..9c0ff13268 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -128,7 +128,35 @@ export default tseslint.config( '@stylistic/quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }], '@stylistic/semi': 'error', '@stylistic/space-before-blocks': 'error', - '@stylistic/space-infix-ops': 'error' + '@stylistic/space-infix-ops': 'error', + + '@typescript-eslint/no-restricted-imports': [ + 'error', + { + paths: [ + { + name: '@jellyfin/sdk/lib/generated-client', + message: 'Use direct file imports for tree-shaking', + allowTypeImports: true + }, + { + name: '@jellyfin/sdk/lib/generated-client/api', + message: 'Use direct file imports for tree-shaking', + allowTypeImports: true + }, + { + name: '@jellyfin/sdk/lib/generated-client/models', + message: 'Use direct file imports for tree-shaking', + allowTypeImports: true + }, + { + name: '@mui/material', + message: 'Use direct file imports for tree-shaking', + allowTypeImports: true + } + ] + } + ] } }, diff --git a/src/apps/dashboard/components/UserAvatarButton.tsx b/src/apps/dashboard/components/UserAvatarButton.tsx index e8f4530de3..fdf68ccf00 100644 --- a/src/apps/dashboard/components/UserAvatarButton.tsx +++ b/src/apps/dashboard/components/UserAvatarButton.tsx @@ -1,6 +1,6 @@ import type { UserDto } from '@jellyfin/sdk/lib/generated-client/models/user-dto'; import type { SxProps, Theme } from '@mui/material'; -import IconButton from '@mui/material/IconButton/IconButton'; +import IconButton from '@mui/material/IconButton'; import React, { type FC } from 'react'; import { Link } from 'react-router-dom'; diff --git a/src/apps/dashboard/components/toolbar/HelpButton.tsx b/src/apps/dashboard/components/toolbar/HelpButton.tsx index 7a47ca9407..7b9bfb315b 100644 --- a/src/apps/dashboard/components/toolbar/HelpButton.tsx +++ b/src/apps/dashboard/components/toolbar/HelpButton.tsx @@ -1,5 +1,5 @@ import HelpOutline from '@mui/icons-material/HelpOutline'; -import IconButton from '@mui/material/IconButton/IconButton'; +import IconButton from '@mui/material/IconButton'; import Tooltip from '@mui/material/Tooltip/Tooltip'; import React from 'react'; import { Route, Routes } from 'react-router-dom'; diff --git a/src/apps/dashboard/features/activity/components/ActionsCell.tsx b/src/apps/dashboard/features/activity/components/ActionsCell.tsx index 0f00613270..619c31c20a 100644 --- a/src/apps/dashboard/features/activity/components/ActionsCell.tsx +++ b/src/apps/dashboard/features/activity/components/ActionsCell.tsx @@ -1,4 +1,4 @@ -import IconButton from '@mui/material/IconButton/IconButton'; +import IconButton from '@mui/material/IconButton'; import PermMedia from '@mui/icons-material/PermMedia'; import React, { type FC } from 'react'; import { Link } from 'react-router-dom'; diff --git a/src/apps/dashboard/features/keys/api/useRevokeKey.ts b/src/apps/dashboard/features/keys/api/useRevokeKey.ts index b0307630c1..7ea8788f3c 100644 --- a/src/apps/dashboard/features/keys/api/useRevokeKey.ts +++ b/src/apps/dashboard/features/keys/api/useRevokeKey.ts @@ -1,4 +1,4 @@ -import { ApiKeyApiRevokeKeyRequest } from '@jellyfin/sdk/lib/generated-client'; +import type { ApiKeyApiRevokeKeyRequest } from '@jellyfin/sdk/lib/generated-client'; import { getApiKeyApi } from '@jellyfin/sdk/lib/utils/api/api-key-api'; import { useMutation } from '@tanstack/react-query'; import { useApi } from 'hooks/useApi'; diff --git a/src/apps/dashboard/features/plugins/components/PluginRevisions.tsx b/src/apps/dashboard/features/plugins/components/PluginRevisions.tsx index 815ac6ae05..2026a9a11c 100644 --- a/src/apps/dashboard/features/plugins/components/PluginRevisions.tsx +++ b/src/apps/dashboard/features/plugins/components/PluginRevisions.tsx @@ -1,3 +1,4 @@ +import type { VersionInfo } from '@jellyfin/sdk/lib/generated-client'; import Download from '@mui/icons-material/Download'; import DownloadDone from '@mui/icons-material/DownloadDone'; import ExpandMore from '@mui/icons-material/ExpandMore'; @@ -13,7 +14,6 @@ import { getDisplayDateTime } from 'scripts/datetime'; import globalize from 'lib/globalize'; import type { PluginDetails } from '../types/PluginDetails'; -import { VersionInfo } from '@jellyfin/sdk/lib/generated-client'; interface PluginRevisionsProps { pluginDetails?: PluginDetails, diff --git a/src/apps/dashboard/routes/devices/index.tsx b/src/apps/dashboard/routes/devices/index.tsx index c554971834..e7961ccdb5 100644 --- a/src/apps/dashboard/routes/devices/index.tsx +++ b/src/apps/dashboard/routes/devices/index.tsx @@ -3,7 +3,7 @@ import Delete from '@mui/icons-material/Delete'; import Edit from '@mui/icons-material/Edit'; import Box from '@mui/material/Box/Box'; import Button from '@mui/material/Button/Button'; -import IconButton from '@mui/material/IconButton/IconButton'; +import IconButton from '@mui/material/IconButton'; import Tooltip from '@mui/material/Tooltip/Tooltip'; import parseISO from 'date-fns/parseISO'; import { type MRT_ColumnDef, useMaterialReactTable } from 'material-react-table'; diff --git a/src/apps/experimental/components/library/GridListViewButton.tsx b/src/apps/experimental/components/library/GridListViewButton.tsx index 8941f4f5cb..bf6f48391c 100644 --- a/src/apps/experimental/components/library/GridListViewButton.tsx +++ b/src/apps/experimental/components/library/GridListViewButton.tsx @@ -1,7 +1,9 @@ import React, { FC, useCallback } from 'react'; -import { ButtonGroup, IconButton } from '@mui/material'; +import ButtonGroup from '@mui/material/ButtonGroup/ButtonGroup'; +import IconButton from '@mui/material/IconButton'; import ViewModuleIcon from '@mui/icons-material/ViewModule'; import ViewListIcon from '@mui/icons-material/ViewList'; + import globalize from 'lib/globalize'; import { LibraryViewSettings, ViewMode } from 'types/library'; import { LibraryTab } from 'types/libraryTab'; diff --git a/src/apps/experimental/components/library/ItemsView.tsx b/src/apps/experimental/components/library/ItemsView.tsx index db6303324d..aa6e8f881d 100644 --- a/src/apps/experimental/components/library/ItemsView.tsx +++ b/src/apps/experimental/components/library/ItemsView.tsx @@ -1,6 +1,6 @@ import type { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; import { CollectionType } from '@jellyfin/sdk/lib/generated-client/models/collection-type'; -import { ImageType } from '@jellyfin/sdk/lib/generated-client'; +import { ImageType } from '@jellyfin/sdk/lib/generated-client/models/image-type'; import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client/models/item-sort-by'; import React, { type FC, useCallback } from 'react'; import Box from '@mui/material/Box'; diff --git a/src/apps/experimental/components/library/NewCollectionButton.tsx b/src/apps/experimental/components/library/NewCollectionButton.tsx index 92ac452d77..92d9eea313 100644 --- a/src/apps/experimental/components/library/NewCollectionButton.tsx +++ b/src/apps/experimental/components/library/NewCollectionButton.tsx @@ -1,5 +1,5 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import AddIcon from '@mui/icons-material/Add'; import globalize from 'lib/globalize'; diff --git a/src/apps/experimental/components/library/PlayAllButton.tsx b/src/apps/experimental/components/library/PlayAllButton.tsx index b2c3da4181..16cef318a1 100644 --- a/src/apps/experimental/components/library/PlayAllButton.tsx +++ b/src/apps/experimental/components/library/PlayAllButton.tsx @@ -1,5 +1,5 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import { playbackManager } from 'components/playback/playbackmanager'; diff --git a/src/apps/experimental/components/library/QueueButton.tsx b/src/apps/experimental/components/library/QueueButton.tsx index 305594dd14..c656e2b56b 100644 --- a/src/apps/experimental/components/library/QueueButton.tsx +++ b/src/apps/experimental/components/library/QueueButton.tsx @@ -1,5 +1,5 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import QueueIcon from '@mui/icons-material/Queue'; import { playbackManager } from 'components/playback/playbackmanager'; diff --git a/src/apps/experimental/components/library/ShuffleButton.tsx b/src/apps/experimental/components/library/ShuffleButton.tsx index 9c11ef00eb..44acdbc542 100644 --- a/src/apps/experimental/components/library/ShuffleButton.tsx +++ b/src/apps/experimental/components/library/ShuffleButton.tsx @@ -1,6 +1,6 @@ import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client/models/item-sort-by'; import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import ShuffleIcon from '@mui/icons-material/Shuffle'; import { playbackManager } from 'components/playback/playbackmanager'; diff --git a/src/apps/experimental/components/library/SortButton.tsx b/src/apps/experimental/components/library/SortButton.tsx index 4c8dc65cc6..25f290b250 100644 --- a/src/apps/experimental/components/library/SortButton.tsx +++ b/src/apps/experimental/components/library/SortButton.tsx @@ -1,3 +1,5 @@ +import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client/models/item-sort-by'; +import { SortOrder } from '@jellyfin/sdk/lib/generated-client/models/sort-order'; import React, { FC, useCallback } from 'react'; import IconButton from '@mui/material/IconButton'; import MenuItem from '@mui/material/MenuItem'; @@ -13,8 +15,6 @@ import SortByAlphaIcon from '@mui/icons-material/SortByAlpha'; import globalize from 'lib/globalize'; import { LibraryViewSettings } from 'types/library'; import { LibraryTab } from 'types/libraryTab'; -import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client/models/item-sort-by'; -import { SortOrder } from '@jellyfin/sdk/lib/generated-client'; type SortOption = { label: string; diff --git a/src/apps/experimental/components/library/ViewSettingsButton.tsx b/src/apps/experimental/components/library/ViewSettingsButton.tsx index 70839d4cd7..2ee46b6f1e 100644 --- a/src/apps/experimental/components/library/ViewSettingsButton.tsx +++ b/src/apps/experimental/components/library/ViewSettingsButton.tsx @@ -1,4 +1,4 @@ -import { ImageType } from '@jellyfin/sdk/lib/generated-client'; +import { ImageType } from '@jellyfin/sdk/lib/generated-client/models/image-type'; import React, { FC, useCallback } from 'react'; import IconButton from '@mui/material/IconButton'; diff --git a/src/apps/experimental/components/library/filter/FilterButton.tsx b/src/apps/experimental/components/library/filter/FilterButton.tsx index 9f207ba9e6..9442d83614 100644 --- a/src/apps/experimental/components/library/filter/FilterButton.tsx +++ b/src/apps/experimental/components/library/filter/FilterButton.tsx @@ -9,8 +9,8 @@ import MuiAccordionDetails from '@mui/material/AccordionDetails'; import MuiAccordionSummary, { AccordionSummaryProps } from '@mui/material/AccordionSummary'; +import Badge from '@mui/material/Badge'; import IconButton from '@mui/material/IconButton'; -import { Badge } from '@mui/material'; import { styled } from '@mui/material/styles'; import Typography from '@mui/material/Typography'; diff --git a/src/apps/experimental/components/library/filter/FiltersSeriesStatus.tsx b/src/apps/experimental/components/library/filter/FiltersSeriesStatus.tsx index eeb81df5e9..ee53a3a730 100644 --- a/src/apps/experimental/components/library/filter/FiltersSeriesStatus.tsx +++ b/src/apps/experimental/components/library/filter/FiltersSeriesStatus.tsx @@ -1,10 +1,11 @@ +import { SeriesStatus } from '@jellyfin/sdk/lib/generated-client/models/series-status'; import React, { FC, useCallback } from 'react'; import FormGroup from '@mui/material/FormGroup'; import FormControlLabel from '@mui/material/FormControlLabel'; import Checkbox from '@mui/material/Checkbox'; + import globalize from 'lib/globalize'; import { LibraryViewSettings } from 'types/library'; -import { SeriesStatus } from '@jellyfin/sdk/lib/generated-client'; const statusFiltersOptions = [ { label: 'Continuing', value: SeriesStatus.Continuing }, diff --git a/src/apps/experimental/components/library/filter/FiltersStatus.tsx b/src/apps/experimental/components/library/filter/FiltersStatus.tsx index 69fd22a1a1..f946cdc911 100644 --- a/src/apps/experimental/components/library/filter/FiltersStatus.tsx +++ b/src/apps/experimental/components/library/filter/FiltersStatus.tsx @@ -1,10 +1,11 @@ +import { ItemFilter } from '@jellyfin/sdk/lib/generated-client/models/item-filter'; import React, { FC, useCallback } from 'react'; import FormGroup from '@mui/material/FormGroup'; import FormControlLabel from '@mui/material/FormControlLabel'; import Checkbox from '@mui/material/Checkbox'; + import globalize from 'lib/globalize'; import { LibraryViewSettings } from 'types/library'; -import { ItemFilter } from '@jellyfin/sdk/lib/generated-client'; import { LibraryTab } from 'types/libraryTab'; const statusFiltersOptions = [ diff --git a/src/apps/experimental/components/library/filter/FiltersVideoTypes.tsx b/src/apps/experimental/components/library/filter/FiltersVideoTypes.tsx index d97d7a59a7..f4711a0c92 100644 --- a/src/apps/experimental/components/library/filter/FiltersVideoTypes.tsx +++ b/src/apps/experimental/components/library/filter/FiltersVideoTypes.tsx @@ -1,9 +1,10 @@ +import { VideoType } from '@jellyfin/sdk/lib/generated-client/models/video-type'; import React, { FC, useCallback } from 'react'; import FormGroup from '@mui/material/FormGroup'; import FormControlLabel from '@mui/material/FormControlLabel'; import Checkbox from '@mui/material/Checkbox'; + import { LibraryViewSettings, VideoBasicFilter } from 'types/library'; -import { VideoType } from '@jellyfin/sdk/lib/generated-client'; const videoBasicFilterOptions = [ { label: 'SD', value: VideoBasicFilter.IsSD }, diff --git a/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx b/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx index f042316912..ff72283148 100644 --- a/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx @@ -1,6 +1,6 @@ import React, { FC, useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import DeleteIcon from '@mui/icons-material/Delete'; import { useCancelSeriesTimer } from 'hooks/api/liveTvHooks'; diff --git a/src/apps/experimental/features/details/components/buttons/CancelTimerButton.tsx b/src/apps/experimental/features/details/components/buttons/CancelTimerButton.tsx index 0745bc204e..70c799cb8f 100644 --- a/src/apps/experimental/features/details/components/buttons/CancelTimerButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/CancelTimerButton.tsx @@ -1,7 +1,8 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import StopIcon from '@mui/icons-material/Stop'; import { useQueryClient } from '@tanstack/react-query'; + import { useCancelTimer } from 'hooks/api/liveTvHooks'; import globalize from 'lib/globalize'; import loading from 'components/loading/loading'; diff --git a/src/apps/experimental/features/details/components/buttons/DownloadButton.tsx b/src/apps/experimental/features/details/components/buttons/DownloadButton.tsx index 284984239e..06b8400497 100644 --- a/src/apps/experimental/features/details/components/buttons/DownloadButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/DownloadButton.tsx @@ -1,6 +1,7 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import FileDownloadIcon from '@mui/icons-material/FileDownload'; + import { useGetDownload } from 'hooks/api/libraryHooks'; import globalize from 'lib/globalize'; import { download } from 'scripts/fileDownloader'; diff --git a/src/apps/experimental/features/details/components/buttons/InstantMixButton.tsx b/src/apps/experimental/features/details/components/buttons/InstantMixButton.tsx index 9cb223178f..f4e753a188 100644 --- a/src/apps/experimental/features/details/components/buttons/InstantMixButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/InstantMixButton.tsx @@ -1,6 +1,7 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import ExploreIcon from '@mui/icons-material/Explore'; + import { playbackManager } from 'components/playback/playbackmanager'; import globalize from 'lib/globalize'; import type { ItemDto } from 'types/base/models/item-dto'; diff --git a/src/apps/experimental/features/details/components/buttons/MoreCommandsButton.tsx b/src/apps/experimental/features/details/components/buttons/MoreCommandsButton.tsx index 99db01378d..6d623f0d9c 100644 --- a/src/apps/experimental/features/details/components/buttons/MoreCommandsButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/MoreCommandsButton.tsx @@ -1,7 +1,8 @@ import React, { FC, useCallback, useEffect, useMemo, useState } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import MoreVertIcon from '@mui/icons-material/MoreVert'; import { useQueryClient } from '@tanstack/react-query'; + import { useApi } from 'hooks/useApi'; import { useGetItemByType } from '../../hooks/api/useGetItemByType'; import globalize from 'lib/globalize'; diff --git a/src/apps/experimental/features/details/components/buttons/PlayOrResumeButton.tsx b/src/apps/experimental/features/details/components/buttons/PlayOrResumeButton.tsx index 97298b3813..123f45c263 100644 --- a/src/apps/experimental/features/details/components/buttons/PlayOrResumeButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/PlayOrResumeButton.tsx @@ -1,8 +1,9 @@ import React, { FC, useCallback, useMemo } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import ReplayIcon from '@mui/icons-material/Replay'; import { useQueryClient } from '@tanstack/react-query'; + import { useApi } from 'hooks/useApi'; import { getChannelQuery } from 'hooks/api/liveTvHooks/useGetChannel'; import globalize from 'lib/globalize'; diff --git a/src/apps/experimental/features/details/components/buttons/PlayTrailerButton.tsx b/src/apps/experimental/features/details/components/buttons/PlayTrailerButton.tsx index 0c82c06690..669de02aa0 100644 --- a/src/apps/experimental/features/details/components/buttons/PlayTrailerButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/PlayTrailerButton.tsx @@ -1,6 +1,7 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import TheatersIcon from '@mui/icons-material/Theaters'; + import { playbackManager } from 'components/playback/playbackmanager'; import globalize from 'lib/globalize'; import type { ItemDto } from 'types/base/models/item-dto'; diff --git a/src/apps/experimental/features/details/components/buttons/ShuffleButton.tsx b/src/apps/experimental/features/details/components/buttons/ShuffleButton.tsx index ddf1ea5bef..3d261d6c60 100644 --- a/src/apps/experimental/features/details/components/buttons/ShuffleButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/ShuffleButton.tsx @@ -1,5 +1,5 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import ShuffleIcon from '@mui/icons-material/Shuffle'; import { playbackManager } from 'components/playback/playbackmanager'; diff --git a/src/apps/experimental/features/details/components/buttons/SplitVersionsButton.tsx b/src/apps/experimental/features/details/components/buttons/SplitVersionsButton.tsx index 6754281be0..103e892958 100644 --- a/src/apps/experimental/features/details/components/buttons/SplitVersionsButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/SplitVersionsButton.tsx @@ -1,7 +1,8 @@ import React, { FC, useCallback } from 'react'; -import { IconButton } from '@mui/material'; +import IconButton from '@mui/material/IconButton'; import CallSplitIcon from '@mui/icons-material/CallSplit'; import { useQueryClient } from '@tanstack/react-query'; + import { useDeleteAlternateSources } from 'hooks/api/videosHooks'; import globalize from 'lib/globalize'; import confirm from 'components/confirm/confirm'; diff --git a/src/apps/stable/features/search/api/useSearchSuggestions.ts b/src/apps/stable/features/search/api/useSearchSuggestions.ts index af079fab11..5e1a0a70ad 100644 --- a/src/apps/stable/features/search/api/useSearchSuggestions.ts +++ b/src/apps/stable/features/search/api/useSearchSuggestions.ts @@ -1,9 +1,10 @@ import type { AxiosRequestConfig } from 'axios'; import type { Api } from '@jellyfin/sdk'; -import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client'; import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; +import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client/models/item-sort-by'; import { getItemsApi } from '@jellyfin/sdk/lib/utils/api/items-api'; import { useQuery } from '@tanstack/react-query'; + import { useApi } from 'hooks/useApi'; const fetchGetItems = async ( diff --git a/src/components/common/Media.tsx b/src/components/common/Media.tsx index 99858356c0..10e1255f9e 100644 --- a/src/components/common/Media.tsx +++ b/src/components/common/Media.tsx @@ -1,5 +1,7 @@ -import { BaseItemKind, ImageType } from '@jellyfin/sdk/lib/generated-client'; +import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; +import { ImageType } from '@jellyfin/sdk/lib/generated-client/models/image-type'; import React, { type FC } from 'react'; + import Image from './Image'; import DefaultIconText from './DefaultIconText'; import type { ItemDto } from 'types/base/models/item-dto'; diff --git a/src/components/listview/List/ListViewUserDataButtons.tsx b/src/components/listview/List/ListViewUserDataButtons.tsx index 8a8b4ce901..482e09b42f 100644 --- a/src/components/listview/List/ListViewUserDataButtons.tsx +++ b/src/components/listview/List/ListViewUserDataButtons.tsx @@ -1,5 +1,6 @@ import React, { type FC } from 'react'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; + import itemHelper from '../../itemHelper'; import PlayedButton from 'elements/emby-playstatebutton/PlayedButton'; import FavoriteButton from 'elements/emby-ratingbutton/FavoriteButton'; diff --git a/src/components/listview/List/listHelper.ts b/src/components/listview/List/listHelper.ts index e9c05f6648..dcb632079f 100644 --- a/src/components/listview/List/listHelper.ts +++ b/src/components/listview/List/listHelper.ts @@ -1,8 +1,9 @@ import { Api } from '@jellyfin/sdk'; -import { BaseItemKind, ImageType } from '@jellyfin/sdk/lib/generated-client'; +import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; +import { ImageType } from '@jellyfin/sdk/lib/generated-client/models/image-type'; import { getImageApi } from '@jellyfin/sdk/lib/utils/api/image-api'; -import globalize from 'lib/globalize'; +import globalize from 'lib/globalize'; import type { ItemDto } from 'types/base/models/item-dto'; import type { ListOptions } from 'types/listOptions'; diff --git a/src/components/metadataEditor/personEditor.js b/src/components/metadataEditor/personEditor.js index 84431c7f84..ff0ea5845a 100644 --- a/src/components/metadataEditor/personEditor.js +++ b/src/components/metadataEditor/personEditor.js @@ -1,8 +1,8 @@ +import { PersonKind } from '@jellyfin/sdk/lib/generated-client/models/person-kind'; import dialogHelper from '../dialogHelper/dialogHelper'; import layoutManager from '../layoutManager'; import globalize from '../../lib/globalize'; -import { PersonKind } from '@jellyfin/sdk/lib/generated-client'; import '../../elements/emby-button/paper-icon-button-light'; import '../../elements/emby-input/emby-input'; import '../../elements/emby-select/emby-select'; diff --git a/src/components/themeMediaPlayer.js b/src/components/themeMediaPlayer.js index cda0ddc97b..fe25704ced 100644 --- a/src/components/themeMediaPlayer.js +++ b/src/components/themeMediaPlayer.js @@ -1,3 +1,4 @@ +import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client/models/item-sort-by'; import { MediaType } from '@jellyfin/sdk/lib/generated-client/models/media-type'; import { getLibraryApi } from '@jellyfin/sdk/lib/utils/api/library-api'; @@ -10,7 +11,6 @@ import { queryClient } from 'utils/query/queryClient'; import { playbackManager } from './playback/playbackmanager'; import ServerConnections from './ServerConnections'; -import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client'; let currentOwnerId; let currentThemeIds = []; diff --git a/src/elements/emby-itemscontainer/ItemsContainer.tsx b/src/elements/emby-itemscontainer/ItemsContainer.tsx index 04a90a06a5..22a5658296 100644 --- a/src/elements/emby-itemscontainer/ItemsContainer.tsx +++ b/src/elements/emby-itemscontainer/ItemsContainer.tsx @@ -1,13 +1,12 @@ -import { - MediaType, - type LibraryUpdateInfo -} from '@jellyfin/sdk/lib/generated-client'; +import type { LibraryUpdateInfo } from '@jellyfin/sdk/lib/generated-client/models/library-update-info'; +import { MediaType } from '@jellyfin/sdk/lib/generated-client/models/media-type'; import { ApiClient } from 'jellyfin-apiclient'; import React, { type FC, type PropsWithChildren, useCallback, useEffect, useRef } from 'react'; import classNames from 'classnames'; import Box from '@mui/material/Box'; import Sortable from 'sortablejs'; import { useQueryClient } from '@tanstack/react-query'; + import { usePlaylistsMoveItemMutation } from 'hooks/useFetchItems'; import Events, { type Event } from 'utils/events'; import serverNotifications from 'scripts/serverNotifications'; diff --git a/src/elements/emby-playstatebutton/PlayedButton.tsx b/src/elements/emby-playstatebutton/PlayedButton.tsx index f1e496af39..5c08a7201d 100644 --- a/src/elements/emby-playstatebutton/PlayedButton.tsx +++ b/src/elements/emby-playstatebutton/PlayedButton.tsx @@ -1,9 +1,10 @@ import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; import { useQueryClient } from '@tanstack/react-query'; import React, { type FC, useCallback } from 'react'; +import IconButton from '@mui/material/IconButton'; import CheckIcon from '@mui/icons-material/Check'; -import { IconButton } from '@mui/material'; import classNames from 'classnames'; + import globalize from 'lib/globalize'; import { useTogglePlayedMutation } from 'hooks/useFetchItems'; diff --git a/src/elements/emby-ratingbutton/FavoriteButton.tsx b/src/elements/emby-ratingbutton/FavoriteButton.tsx index 02a9ca7824..a831a25086 100644 --- a/src/elements/emby-ratingbutton/FavoriteButton.tsx +++ b/src/elements/emby-ratingbutton/FavoriteButton.tsx @@ -1,7 +1,8 @@ import React, { type FC, useCallback } from 'react'; import { useQueryClient } from '@tanstack/react-query'; +import IconButton from '@mui/material/IconButton'; import FavoriteIcon from '@mui/icons-material/Favorite'; -import { IconButton } from '@mui/material'; + import classNames from 'classnames'; import { useToggleFavoriteMutation } from 'hooks/useFetchItems'; import globalize from 'lib/globalize'; diff --git a/src/themes/UserThemeProvider.tsx b/src/themes/UserThemeProvider.tsx index 528e5e233d..bdffd2748e 100644 --- a/src/themes/UserThemeProvider.tsx +++ b/src/themes/UserThemeProvider.tsx @@ -1,4 +1,4 @@ -import { ThemeProvider } from '@mui/material'; +import { ThemeProvider } from '@mui/material/styles'; import React, { type FC, type PropsWithChildren, useState, useEffect } from 'react'; import { useLocation } from 'react-router-dom'; diff --git a/src/types/sections.ts b/src/types/sections.ts index c5355d943c..4f5d072336 100644 --- a/src/types/sections.ts +++ b/src/types/sections.ts @@ -1,5 +1,7 @@ -import { BaseItemKind, SortOrder } from '@jellyfin/sdk/lib/generated-client'; -import { ItemSortBy } from '@jellyfin/sdk/lib/generated-client/models/item-sort-by'; +import type { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; +import type { ItemSortBy } from '@jellyfin/sdk/lib/generated-client/models/item-sort-by'; +import type { SortOrder } from '@jellyfin/sdk/lib/generated-client/models/sort-order'; + import { CardOptions } from './cardOptions'; import { SectionsView } from './libraryTabContent';