chore(deps): upgrade prettier, and tailwind (#2351)

This commit is contained in:
fallenbagel
2026-01-29 11:48:34 +05:00
committed by GitHub
parent 5bd31040c0
commit 8b41685b31
159 changed files with 1022 additions and 910 deletions

View File

@@ -385,7 +385,7 @@ const BlacklistedItem = ({ item, revalidateList }: BlacklistedItemProps) => {
</div>
</div>
<div className="z-10 mt-4 ml-4 flex w-full flex-col justify-center overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="z-10 ml-4 mt-4 flex w-full flex-col justify-center overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="card-field">
<span className="card-field-name">Status</span>
<Badge badgeType="danger">

View File

@@ -329,7 +329,7 @@ const BlacklistedTagImportForm = forwardRef<
const VerifyClearIndicator = <
Option,
IsMuti extends boolean,
Group extends GroupBase<Option>
Group extends GroupBase<Option>,
>(
props: ClearIndicatorProps<Option, IsMuti, Group>
) => {

View File

@@ -13,7 +13,7 @@ export type ButtonType =
// Helper type to override types (overrides onClick)
type MergeElementProps<
T extends React.ElementType,
P extends Record<string, unknown>
P extends Record<string, unknown>,
> = Omit<React.ComponentProps<T>, keyof P> & P;
type ElementTypes = 'button' | 'a';

View File

@@ -57,7 +57,7 @@ const DropdownItems = ({
>
<Menu.Items
className={[
'absolute right-0 z-40 mt-2 -mr-1 w-56 origin-top-right rounded-md p-1 shadow-lg',
'absolute right-0 z-40 -mr-1 mt-2 w-56 origin-top-right rounded-md p-1 shadow-lg',
dropdownType === 'ghost'
? 'border border-gray-700 bg-gray-800 bg-opacity-80 backdrop-blur'
: 'bg-indigo-600',

View File

@@ -91,7 +91,7 @@ const Modal = React.forwardRef<HTMLDivElement, ModalProps>(
<Transition.Child
appear
as="div"
className="fixed top-0 bottom-0 left-0 right-0 z-50 flex h-full w-full items-center justify-center bg-gray-800 bg-opacity-70"
className="fixed bottom-0 left-0 right-0 top-0 z-50 flex h-full w-full items-center justify-center bg-gray-800 bg-opacity-70"
enter="transition-opacity duration-300"
enterFrom="opacity-0"
enterTo="opacity-100"
@@ -116,7 +116,7 @@ const Modal = React.forwardRef<HTMLDivElement, ModalProps>(
</div>
</Transition>
<Transition
className={`hide-scrollbar relative inline-block w-full overflow-auto bg-gray-800 px-4 pt-4 pb-4 text-left align-bottom shadow-xl ring-1 ring-gray-700 transition-all sm:my-8 sm:max-w-3xl sm:rounded-lg sm:align-middle ${dialogClass}`}
className={`hide-scrollbar relative inline-block w-full overflow-auto bg-gray-800 px-4 pb-4 pt-4 text-left align-bottom shadow-xl ring-1 ring-gray-700 transition-all sm:my-8 sm:max-w-3xl sm:rounded-lg sm:align-middle ${dialogClass}`}
role="dialog"
aria-modal="true"
aria-labelledby="modal-headline"
@@ -135,7 +135,7 @@ const Modal = React.forwardRef<HTMLDivElement, ModalProps>(
ref={modalRef}
>
{backdrop && (
<div className="absolute top-0 left-0 right-0 z-0 h-64 max-h-full w-full">
<div className="absolute left-0 right-0 top-0 z-0 h-64 max-h-full w-full">
<CachedImage
type="tmdb"
alt=""

View File

@@ -83,7 +83,7 @@ const MultiRangeSlider = ({
max={max}
value={valueMax}
step="1"
className={`pointer-events-none absolute top-0 left-0 right-0 z-20 h-2 w-full cursor-pointer appearance-none rounded-lg bg-transparent`}
className={`pointer-events-none absolute left-0 right-0 top-0 z-20 h-2 w-full cursor-pointer appearance-none rounded-lg bg-transparent`}
onChange={(e) => {
const value = Number(e.target.value);

View File

@@ -35,8 +35,8 @@ const SensitiveInput = ({ as = 'input', ...props }: SensitiveInputProps) => {
isHidden
? 'password'
: props.type !== 'password'
? props.type ?? 'text'
: 'text'
? (props.type ?? 'text')
: 'text'
}
/>
<button

View File

@@ -72,7 +72,7 @@ const SlideOver = ({
onClick={(e) => e.stopPropagation()}
>
<div className="flex h-full flex-col rounded-lg bg-gray-800 bg-opacity-80 shadow-xl ring-1 ring-gray-700 backdrop-blur">
<header className="space-y-1 border-b border-gray-700 py-4 px-4">
<header className="space-y-1 border-b border-gray-700 px-4 py-4">
<div className="flex items-center justify-between space-x-3">
<h2 className="text-overseerr text-2xl font-bold leading-7">
{title}

View File

@@ -78,7 +78,7 @@ type TableProps = {
const Table = ({ children }: TableProps) => {
return (
<div className="flex flex-col">
<div className="my-2 -mx-4 overflow-x-auto md:mx-0 lg:mx-0">
<div className="-mx-4 my-2 overflow-x-auto md:mx-0 lg:mx-0">
<div className="inline-block min-w-full py-2 align-middle">
<div className="overflow-hidden rounded-lg shadow md:mx-0 lg:mx-0">
<table className="min-w-full">{children}</table>

View File

@@ -43,7 +43,7 @@ const DiscoverMovieGenre = () => {
return (
<>
<PageTitle title={title} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{title}</Header>
</div>
<ListView

View File

@@ -49,7 +49,7 @@ const DiscoverMovieKeyword = () => {
return (
<>
<PageTitle title={title} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{title}</Header>
</div>
<ListView

View File

@@ -52,7 +52,7 @@ const DiscoverMovieLanguage = () => {
return (
<>
<PageTitle title={title} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{title}</Header>
</div>
<ListView

View File

@@ -45,7 +45,7 @@ const DiscoverTvNetwork = () => {
return (
<>
<PageTitle title={title} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>
{firstResultData?.network.logoPath ? (
<div className="relative mb-6 flex h-24 justify-center sm:h-32">

View File

@@ -195,7 +195,7 @@ const DiscoverSliderEdit = ({
className={`absolute -bottom-2 left-0 w-full border-t-4 border-indigo-500`}
/>
)}
<div className="flex w-full flex-col rounded-t-lg border-t border-l border-r border-gray-800 bg-gray-900 p-4 text-gray-400 md:flex-row md:items-center md:space-x-2">
<div className="flex w-full flex-col rounded-t-lg border-l border-r border-t border-gray-800 bg-gray-900 p-4 text-gray-400 md:flex-row md:items-center md:space-x-2">
<div
className={`${slider.data ? 'mb-4' : 'mb-0'} flex space-x-2 md:mb-0`}
>
@@ -285,7 +285,7 @@ const DiscoverSliderEdit = ({
</Button>
</>
)}
<div className="absolute right-14 top-4 flex px-2 md:relative md:top-0 md:right-0">
<div className="absolute right-14 top-4 flex px-2 md:relative md:right-0 md:top-0">
<button
className={'hover:text-white disabled:text-gray-800'}
onClick={() =>
@@ -305,7 +305,7 @@ const DiscoverSliderEdit = ({
<ChevronDownIcon className="h-7 w-7 md:h-6 md:w-6" />
</button>
</div>
<div className="absolute top-4 right-4 flex-1 text-right md:relative md:top-0 md:right-0">
<div className="absolute right-4 top-4 flex-1 text-right md:relative md:right-0 md:top-0">
<Tooltip content={intl.formatMessage(messages.enable)}>
<div>
<SlideCheckbox

View File

@@ -45,7 +45,7 @@ const DiscoverMovieStudio = () => {
return (
<>
<PageTitle title={title} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>
{firstResultData?.studio.logoPath ? (
<div className="relative mb-6 flex h-24 justify-center sm:h-32">

View File

@@ -43,7 +43,7 @@ const DiscoverTvGenre = () => {
return (
<>
<PageTitle title={title} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{title}</Header>
</div>
<ListView

View File

@@ -49,7 +49,7 @@ const DiscoverTvKeyword = () => {
return (
<>
<PageTitle title={title} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{title}</Header>
</div>
<ListView

View File

@@ -52,7 +52,7 @@ const DiscoverTvLanguage = () => {
return (
<>
<PageTitle title={title} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{title}</Header>
</div>
<ListView

View File

@@ -31,7 +31,7 @@ const DiscoverTvUpcoming = () => {
return (
<>
<PageTitle title={intl.formatMessage(messages.upcomingtv)} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{intl.formatMessage(messages.upcomingtv)}</Header>
</div>
<ListView

View File

@@ -37,8 +37,8 @@ const DiscoverWatchlist = () => {
router.pathname.startsWith('/profile')
? `user/${currentUser?.id}`
: router.query.userId
? `user/${router.query.userId}`
: 'discover'
? `user/${router.query.userId}`
: 'discover'
}/watchlist`
);
@@ -55,7 +55,7 @@ const DiscoverWatchlist = () => {
<PageTitle
title={[title, router.query.userId ? user?.displayName : '']}
/>
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
router.query.userId ? (

View File

@@ -30,7 +30,7 @@ const MovieGenreList = () => {
return (
<>
<PageTitle title={intl.formatMessage(messages.moviegenres)} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{intl.formatMessage(messages.moviegenres)}</Header>
</div>
<ul className="cards-horizontal">

View File

@@ -36,7 +36,7 @@ const Trending = () => {
return (
<>
<PageTitle title={intl.formatMessage(messages.trending)} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{intl.formatMessage(messages.trending)}</Header>
</div>
<ListView

View File

@@ -30,7 +30,7 @@ const TvGenreList = () => {
return (
<>
<PageTitle title={intl.formatMessage(messages.seriesgenres)} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{intl.formatMessage(messages.seriesgenres)}</Header>
</div>
<ul className="cards-horizontal">

View File

@@ -31,7 +31,7 @@ const UpcomingMovies = () => {
return (
<>
<PageTitle title={intl.formatMessage(messages.upcomingmovies)} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{intl.formatMessage(messages.upcomingmovies)}</Header>
</div>
<ListView

View File

@@ -127,7 +127,7 @@ const Discover = () => {
<>
{isEditing && (
<div className="my-6 rounded-lg bg-gray-800">
<div className="flex items-center space-x-2 rounded-t-lg border-t border-l border-r border-gray-800 bg-gray-900 p-4 text-lg font-semibold text-gray-400">
<div className="flex items-center space-x-2 rounded-t-lg border-l border-r border-t border-gray-800 bg-gray-900 p-4 text-lg font-semibold text-gray-400">
<PlusIcon className="w-6" />
<span data-testid="create-slider-header">
{intl.formatMessage(messages.createnewslider)}
@@ -172,7 +172,7 @@ const Discover = () => {
leave="transition duration-300"
leaveFrom="opacity-100 translate-y-0"
leaveTo="opacity-0 translate-y-6"
className="safe-shift-edit-menu fixed right-0 left-0 z-50 flex flex-col items-center justify-end space-x-0 space-y-2 border-t border-gray-700 bg-gray-800 bg-opacity-80 p-4 backdrop-blur sm:bottom-0 sm:flex-row sm:space-y-0 sm:space-x-3"
className="safe-shift-edit-menu fixed left-0 right-0 z-50 flex flex-col items-center justify-end space-x-0 space-y-2 border-t border-gray-700 bg-gray-800 bg-opacity-80 p-4 backdrop-blur sm:bottom-0 sm:flex-row sm:space-x-3 sm:space-y-0"
>
<Button
buttonType="default"

View File

@@ -29,12 +29,12 @@ const DownloadBlock = ({
{hasPermission(Permission.ADMIN)
? downloadItem.title
: downloadItem.episode
? intl.formatMessage(messages.formattedTitle, {
title,
seasonNumber: downloadItem?.episode?.seasonNumber,
episodeNumber: downloadItem?.episode?.episodeNumber,
})
: title}
? intl.formatMessage(messages.formattedTitle, {
title,
seasonNumber: downloadItem?.episode?.seasonNumber,
episodeNumber: downloadItem?.episode?.episodeNumber,
})
: title}
</div>
<div className="relative mb-2 h-6 min-w-0 overflow-hidden rounded-full bg-gray-700">
<div

View File

@@ -101,7 +101,7 @@ const IssueComment = ({
{(isActiveUser || hasPermission(Permission.MANAGE_ISSUES)) && (
<Menu
as="div"
className="absolute top-2 right-1 z-40 inline-block text-left"
className="absolute right-1 top-2 z-40 inline-block text-left"
>
{({ open }) => (
<>

View File

@@ -370,7 +370,7 @@ const IssueDetails = () => {
</span>
</div>
</div>
<div className="mt-4 mb-6 flex flex-col space-y-2">
<div className="mb-6 mt-4 flex flex-col space-y-2">
{issueData?.media.mediaUrl && (
<Button
as="a"
@@ -388,13 +388,13 @@ const IssueDetails = () => {
mediaServerName: 'Emby',
})
: settings.currentSettings.mediaServerType ===
MediaServerType.PLEX
? intl.formatMessage(messages.playonplex, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.playonplex, {
mediaServerName: 'Jellyfin',
})}
MediaServerType.PLEX
? intl.formatMessage(messages.playonplex, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.playonplex, {
mediaServerName: 'Jellyfin',
})}
</span>
</Button>
)}
@@ -436,13 +436,13 @@ const IssueDetails = () => {
mediaServerName: 'Emby',
})
: settings.currentSettings.mediaServerType ===
MediaServerType.PLEX
? intl.formatMessage(messages.play4konplex, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.play4konplex, {
mediaServerName: 'Jellyfin',
})}
MediaServerType.PLEX
? intl.formatMessage(messages.play4konplex, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.play4konplex, {
mediaServerName: 'Jellyfin',
})}
</span>
</Button>
)}
@@ -483,7 +483,7 @@ const IssueDetails = () => {
/>
))}
{otherComments.length === 0 && (
<div className="mt-4 mb-10 text-gray-400">
<div className="mb-10 mt-4 text-gray-400">
<span>{intl.formatMessage(messages.nocomments)}</span>
</div>
)}
@@ -636,7 +636,7 @@ const IssueDetails = () => {
</span>
</div>
</div>
<div className="mt-4 mb-6 flex flex-col space-y-2">
<div className="mb-6 mt-4 flex flex-col space-y-2">
{issueData?.media.mediaUrl && (
<Button
as="a"
@@ -654,13 +654,13 @@ const IssueDetails = () => {
mediaServerName: 'Emby',
})
: settings.currentSettings.mediaServerType ===
MediaServerType.PLEX
? intl.formatMessage(messages.playonplex, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.playonplex, {
mediaServerName: 'Jellyfin',
})}
MediaServerType.PLEX
? intl.formatMessage(messages.playonplex, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.playonplex, {
mediaServerName: 'Jellyfin',
})}
</span>
</Button>
)}
@@ -701,13 +701,13 @@ const IssueDetails = () => {
mediaServerName: 'Emby',
})
: settings.currentSettings.mediaServerType ===
MediaServerType.PLEX
? intl.formatMessage(messages.play4konplex, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.play4konplex, {
mediaServerName: 'Jellyfin',
})}
MediaServerType.PLEX
? intl.formatMessage(messages.play4konplex, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.play4konplex, {
mediaServerName: 'Jellyfin',
})}
</span>
</Button>
)}

View File

@@ -216,7 +216,7 @@ const IssueItem = ({ issue }: IssueItemProps) => {
)}
</div>
</div>
<div className="z-10 mt-4 ml-4 flex w-full flex-col justify-center overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="z-10 ml-4 mt-4 flex w-full flex-col justify-center overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="card-field">
<span className="card-field-name">
{intl.formatMessage(messages.issuestatus)}

View File

@@ -109,40 +109,40 @@ const LanguageSelector = ({
isFixed: true,
}
: (value === '' || !value || value === 'server') && isUserSettings
? {
value: 'server',
label: intl.formatMessage(messages.languageServerDefault, {
language: serverValue
? serverValue
.split('|')
.map((value) => languageName(value))
.reduce((prev, curr) =>
intl.formatMessage(globalMessages.delimitedlist, {
a: prev,
b: curr,
})
)
: intl.formatMessage(messages.originalLanguageDefault),
}),
isFixed: true,
}
: (value
?.split('|')
.map((code) => {
const matchedLanguage = sortedLanguages?.find(
(lang) => lang.iso_639_1 === code
);
? {
value: 'server',
label: intl.formatMessage(messages.languageServerDefault, {
language: serverValue
? serverValue
.split('|')
.map((value) => languageName(value))
.reduce((prev, curr) =>
intl.formatMessage(globalMessages.delimitedlist, {
a: prev,
b: curr,
})
)
: intl.formatMessage(messages.originalLanguageDefault),
}),
isFixed: true,
}
: (value
?.split('|')
.map((code) => {
const matchedLanguage = sortedLanguages?.find(
(lang) => lang.iso_639_1 === code
);
if (!matchedLanguage) {
return undefined;
}
if (!matchedLanguage) {
return undefined;
}
return {
label: matchedLanguage.name,
value: matchedLanguage.iso_639_1,
};
})
.filter((option) => option !== undefined) as OptionType[])
return {
label: matchedLanguage.name,
value: matchedLanguage.iso_639_1,
};
})
.filter((option) => option !== undefined) as OptionType[])
}
onChange={(value, options) => {
if (

View File

@@ -179,7 +179,7 @@ const MobileMenu = ({
leave="transition duration-500"
leaveFrom="opacity-100 -translate-y-full"
leaveTo="opacity-0 translate-y-0"
className="absolute top-0 left-0 right-0 flex w-full -translate-y-full flex-col space-y-6 border-t border-gray-600 bg-gray-900 bg-opacity-90 px-6 py-6 font-semibold text-gray-100 backdrop-blur"
className="absolute left-0 right-0 top-0 flex w-full -translate-y-full flex-col space-y-6 border-t border-gray-600 bg-gray-900 bg-opacity-90 px-6 py-6 font-semibold text-gray-100 backdrop-blur"
>
{filteredLinks.map((link) => {
const isActive = router.pathname.match(link.activeRegExp);
@@ -249,7 +249,7 @@ const MobileMenu = ({
{link.href === '/requests' &&
pendingRequestsCount > 0 &&
hasPermission(Permission.MANAGE_REQUESTS) && (
<div className="absolute left-3 bottom-3">
<div className="absolute bottom-3 left-3">
<Badge
className={`bg-gradient-to-br ${
router.pathname.match(link.activeRegExp)
@@ -257,7 +257,7 @@ const MobileMenu = ({
: 'border-indigo-500 from-indigo-600 to-purple-600'
} flex ${
pendingRequestsCount > 99 ? 'w-6' : 'w-4'
} h-4 items-center justify-center !px-[5px] !py-[7px] text-[8px]`}
} h-4 items-center justify-center !px-[5px] !py-[7px] text-[8px]`}
>
{pendingRequestsCount > 99
? '99+'

View File

@@ -110,8 +110,8 @@ const PullToRefresh = () => {
pullDownIconLocation < pullDownStopThreshold && pullDownInitThreshold
? pullDownIconLocation
: pullDownInitThreshold
? pullDownStopThreshold
: '',
? pullDownStopThreshold
: '',
}}
>
<div

View File

@@ -188,7 +188,7 @@ const Sidebar = ({
</div>
<div
ref={navRef}
className="flex flex-1 flex-col overflow-y-auto pt-4 pb-8 sm:pb-4"
className="flex flex-1 flex-col overflow-y-auto pb-8 pt-4 sm:pb-4"
>
<div className="flex flex-shrink-0 items-center px-2">
<span className="w-full px-4 text-xl text-gray-50">
@@ -218,13 +218,11 @@ const Sidebar = ({
}}
role="button"
tabIndex={0}
className={`flex items-center rounded-md px-2 py-2 text-base font-medium leading-6 text-white transition duration-150 ease-in-out focus:outline-none
${
className={`flex items-center rounded-md px-2 py-2 text-base font-medium leading-6 text-white transition duration-150 ease-in-out focus:outline-none ${
router.pathname.match(sidebarLink.activeRegExp)
? 'bg-gradient-to-br from-indigo-600 to-purple-600 hover:from-indigo-500 hover:to-purple-500'
: 'hover:bg-gray-700 focus:bg-gray-700'
}
`}
} `}
data-testid={`${sidebarLink.dataTestId}-mobile`}
>
{sidebarLink.svgIcon}
@@ -255,7 +253,7 @@ const Sidebar = ({
</Transition>
</div>
<div className="fixed top-0 bottom-0 left-0 z-30 hidden lg:flex lg:flex-shrink-0">
<div className="fixed bottom-0 left-0 top-0 z-30 hidden lg:flex lg:flex-shrink-0">
<div className="sidebar flex w-64 flex-col">
<div className="flex h-0 flex-1 flex-col">
<div className="flex flex-1 flex-col overflow-y-auto pb-4">
@@ -279,13 +277,11 @@ const Sidebar = ({
key={`desktop-${sidebarLink.messagesKey}`}
href={sidebarLink.href}
as={sidebarLink.as}
className={`group flex items-center rounded-md px-2 py-2 text-lg font-medium leading-6 text-white transition duration-150 ease-in-out focus:outline-none
${
router.pathname.match(sidebarLink.activeRegExp)
? 'bg-gradient-to-br from-indigo-600 to-purple-600 hover:from-indigo-500 hover:to-purple-500'
: 'hover:bg-gray-700 focus:bg-gray-700'
}
`}
className={`group flex items-center rounded-md px-2 py-2 text-lg font-medium leading-6 text-white transition duration-150 ease-in-out focus:outline-none ${
router.pathname.match(sidebarLink.activeRegExp)
? 'bg-gradient-to-br from-indigo-600 to-purple-600 hover:from-indigo-500 hover:to-purple-500'
: 'hover:bg-gray-700 focus:bg-gray-700'
} `}
data-testid={sidebarLink.dataTestId}
>
{sidebarLink.svgIcon}

View File

@@ -39,7 +39,7 @@ const MiniQuotaDisplay = ({ userId }: MiniQuotaDisplayProps) => {
{intl.formatMessage(messages.movierequests)}
</div>
<div className="flex h-full items-center space-x-2 text-gray-200">
{data?.movie.limit ?? 0 > 0 ? (
{(data?.movie.limit ?? 0) > 0 ? (
<>
<ProgressCircle
className="h-8 w-8"
@@ -67,7 +67,7 @@ const MiniQuotaDisplay = ({ userId }: MiniQuotaDisplayProps) => {
{intl.formatMessage(messages.seriesrequests)}
</div>
<div className="flex h-full items-center space-x-2 text-gray-200">
{data?.tv.limit ?? 0 > 0 ? (
{(data?.tv.limit ?? 0) > 0 ? (
<>
<ProgressCircle
className="h-8 w-8"

View File

@@ -36,8 +36,8 @@ const VersionStatus = ({ onClick }: VersionStatusProps) => {
data.commitTag === 'local'
? 'Keep it up! 👍'
: data.version.startsWith('develop-')
? intl.formatMessage(messages.streamdevelop)
: intl.formatMessage(messages.streamstable);
? intl.formatMessage(messages.streamdevelop)
: intl.formatMessage(messages.streamstable);
return (
<Link

View File

@@ -96,7 +96,7 @@ const Layout = ({ children }: LayoutProps) => {
WebkitBackdropFilter: isScrolled ? 'blur(5px)' : undefined,
}}
>
<div className="flex flex-1 items-center justify-between px-4 md:pr-4 md:pl-4">
<div className="flex flex-1 items-center justify-between px-4 md:pl-4 md:pr-4">
<button
className={`mr-2 hidden text-white sm:block ${
isScrolled ? 'opacity-90' : 'opacity-70'

View File

@@ -11,7 +11,7 @@ interface BarProps {
const Bar = ({ progress, isFinished }: BarProps) => {
return (
<div
className={`duration-400 fixed top-0 left-0 z-50 w-full transition-opacity ease-out ${
className={`duration-400 fixed left-0 top-0 z-50 w-full transition-opacity ease-out ${
isFinished ? 'opacity-0' : 'opacity-100'
}`}
>

View File

@@ -95,7 +95,7 @@ const AddEmailModal: React.FC<AddEmailModalProps> = ({
<label htmlFor="email" className="text-label">
{intl.formatMessage(messages.email)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="flex rounded-md shadow-sm">
<Field
id="email"

View File

@@ -45,8 +45,8 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
serverType === MediaServerType.JELLYFIN
? ServerType.JELLYFIN
: serverType === MediaServerType.EMBY
? ServerType.EMBY
: 'Media Server',
? ServerType.EMBY
: 'Media Server',
};
const LoginSchema = Yup.object().shape({
@@ -113,13 +113,13 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
<>
<Form data-form-type="login">
<div>
<h2 className="mb-6 -mt-1 text-center text-lg font-bold text-neutral-200">
<h2 className="-mt-1 mb-6 text-center text-lg font-bold text-neutral-200">
{intl.formatMessage(messages.loginwithapp, {
appName: mediaServerFormatValues.mediaServerName,
})}
</h2>
<div className="mt-1 mb-4">
<div className="mb-4 mt-1">
<div className="form-input-field">
<Field
id="username"
@@ -135,7 +135,7 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
)}
</div>
<div className="mt-1 mb-2">
<div className="mb-2 mt-1">
<div className="form-input-field">
<SensitiveInput
as="field"

View File

@@ -71,13 +71,13 @@ const LocalLogin = ({ revalidate }: LocalLoginProps) => {
<>
<Form data-form-type="login">
<div>
<h2 className="mb-6 -mt-1 text-center text-lg font-bold text-neutral-200">
<h2 className="-mt-1 mb-6 text-center text-lg font-bold text-neutral-200">
{intl.formatMessage(messages.loginwithapp, {
appName: settings.currentSettings.applicationTitle,
})}
</h2>
<div className="mt-1 mb-4">
<div className="mb-4 mt-1">
<div className="form-input-field">
<Field
id="email"
@@ -98,7 +98,7 @@ const LocalLogin = ({ revalidate }: LocalLoginProps) => {
<div className="error">{errors.email}</div>
)}
</div>
<div className="mt-1 mb-2">
<div className="mb-2 mt-1">
<div className="form-input-field">
<SensitiveInput
as="field"
@@ -132,7 +132,7 @@ const LocalLogin = ({ revalidate }: LocalLoginProps) => {
</div>
</div>
{loginError && (
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="error">{loginError}</div>
</div>
)}

View File

@@ -42,7 +42,7 @@ const PlexLoginButton = ({
<FormattedMessage
{...messages.loginwithapp}
values={{
appName: <PlexIcon className="mt-[2px] ml-[0.35em] w-8" />,
appName: <PlexIcon className="ml-[0.35em] mt-[2px] w-8" />,
}}
>
{(chunks) => (

View File

@@ -85,19 +85,19 @@ const Login = () => {
settings.currentSettings.mediaServerType === MediaServerType.PLEX
? 'Plex'
: settings.currentSettings.mediaServerType === MediaServerType.JELLYFIN
? 'Jellyfin'
: settings.currentSettings.mediaServerType === MediaServerType.EMBY
? 'Emby'
: undefined;
? 'Jellyfin'
: settings.currentSettings.mediaServerType === MediaServerType.EMBY
? 'Emby'
: undefined;
const MediaServerLogo =
settings.currentSettings.mediaServerType === MediaServerType.PLEX
? PlexLogo
: settings.currentSettings.mediaServerType === MediaServerType.JELLYFIN
? JellyfinLogo
: settings.currentSettings.mediaServerType === MediaServerType.EMBY
? EmbyLogo
: undefined;
? JellyfinLogo
: settings.currentSettings.mediaServerType === MediaServerType.EMBY
? EmbyLogo
: undefined;
const isJellyfin =
settings.currentSettings.mediaServerType === MediaServerType.JELLYFIN ||
@@ -159,7 +159,7 @@ const Login = () => {
) ?? []
}
/>
<div className="absolute top-4 right-4 z-50">
<div className="absolute right-4 top-4 z-50">
<LanguagePicker />
</div>
<div className="relative z-40 mt-10 flex flex-col items-center px-4 sm:mx-auto sm:w-full sm:max-w-md">

View File

@@ -378,7 +378,7 @@ const ManageSlideOver = ({
</div>
</div>
{!!watchData.data.users.length && (
<div className="flex flex-row space-x-2 px-4 pt-3 pb-2">
<div className="flex flex-row space-x-2 px-4 pb-2 pt-3">
<span className="shrink-0 font-bold leading-8">
{intl.formatMessage(messages.playedby)}
</span>
@@ -391,7 +391,7 @@ const ManageSlideOver = ({
: `/users/${user.id}`
}
key={`watch-user-${user.id}`}
className="z-0 mb-1 -mr-2 shrink-0 hover:z-50"
className="z-0 -mr-2 mb-1 shrink-0 hover:z-50"
>
<Tooltip
key={`watch-user-${user.id}`}
@@ -540,7 +540,7 @@ const ManageSlideOver = ({
</div>
</div>
{!!watchData.data4k.users.length && (
<div className="flex flex-row space-x-2 px-4 pt-3 pb-2">
<div className="flex flex-row space-x-2 px-4 pb-2 pt-3">
<span className="shrink-0 font-bold leading-8">
{intl.formatMessage(messages.playedby)}
</span>
@@ -553,7 +553,7 @@ const ManageSlideOver = ({
: `/users/${user.id}`
}
key={`watch-user-${user.id}`}
className="z-0 mb-1 -mr-2 shrink-0 hover:z-50"
className="z-0 -mr-2 mb-1 shrink-0 hover:z-50"
>
<Tooltip
key={`watch-user-${user.id}`}
@@ -711,9 +711,9 @@ const ManageSlideOver = ({
MediaServerType.EMBY
? 'Emby'
: settings.currentSettings.mediaServerType ===
MediaServerType.PLEX
? 'Plex'
: 'Jellyfin',
MediaServerType.PLEX
? 'Plex'
: 'Jellyfin',
})}
</div>
</div>

View File

@@ -48,12 +48,11 @@ const ShowMoreCard = ({ url, posters }: ShowMoreCardProps) => {
tabIndex={0}
>
<div
className={`relative w-36 transform-gpu cursor-pointer
overflow-hidden rounded-xl text-white shadow-lg ring-1 transition duration-150 ease-in-out sm:w-36 md:w-44 ${
isHovered
? 'scale-105 bg-gray-600 ring-gray-500'
: 'scale-100 bg-gray-800 ring-gray-700'
}`}
className={`relative w-36 transform-gpu cursor-pointer overflow-hidden rounded-xl text-white shadow-lg ring-1 transition duration-150 ease-in-out sm:w-36 md:w-44 ${
isHovered
? 'scale-105 bg-gray-600 ring-gray-500'
: 'scale-100 bg-gray-800 ring-gray-700'
}`}
>
<div style={{ paddingBottom: '150%' }}>
<div className="absolute inset-0 flex h-full w-full flex-col items-center p-2">

View File

@@ -32,7 +32,7 @@ const MovieCast = () => {
return (
<>
<PageTitle title={[intl.formatMessage(messages.fullcast), data.title]} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
<Link href={`/movie/${data.id}`} className="hover:underline">

View File

@@ -32,7 +32,7 @@ const MovieCrew = () => {
return (
<>
<PageTitle title={[intl.formatMessage(messages.fullcrew), data.title]} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
<Link href={`/movie/${data.id}`} className="hover:underline">

View File

@@ -42,7 +42,7 @@ const MovieRecommendations = () => {
<PageTitle
title={[intl.formatMessage(messages.recommendations), movieData?.title]}
/>
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
<Link href={`/movie/${movieData?.id}`} className="hover:underline">

View File

@@ -40,7 +40,7 @@ const MovieSimilar = () => {
<PageTitle
title={[intl.formatMessage(messages.similar), movieData?.title]}
/>
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
<Link href={`/movie/${movieData?.id}`} className="hover:underline">

View File

@@ -232,8 +232,8 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
const discoverRegion = user?.settings?.discoverRegion
? user.settings.discoverRegion
: settings.currentSettings.discoverRegion
? settings.currentSettings.discoverRegion
: 'US';
? settings.currentSettings.discoverRegion
: 'US';
const releases = data.releases.results.find(
(r) => r.iso_3166_1 === discoverRegion
@@ -292,8 +292,8 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
const streamingRegion = user?.settings?.streamingRegion
? user.settings.streamingRegion
: settings.currentSettings.streamingRegion
? settings.currentSettings.streamingRegion
: 'US';
? settings.currentSettings.streamingRegion
: 'US';
const streamingProviders =
data?.watchProviders?.find(
(provider) => provider.iso_3166_1 === streamingRegion

View File

@@ -147,18 +147,18 @@ export const PermissionEdit = ({
settings.currentSettings.mediaServerType === MediaServerType.PLEX
? 'Plex'
: settings.currentSettings.mediaServerType ===
MediaServerType.JELLYFIN
? 'Jellyfin'
: 'Emby',
MediaServerType.JELLYFIN
? 'Jellyfin'
: 'Emby',
}),
description: intl.formatMessage(messages.viewwatchlistsDescription, {
mediaServerName:
settings.currentSettings.mediaServerType === MediaServerType.PLEX
? 'Plex'
: settings.currentSettings.mediaServerType ===
MediaServerType.JELLYFIN
? 'Jellyfin'
: 'Emby',
MediaServerType.JELLYFIN
? 'Jellyfin'
: 'Emby',
}),
permission: Permission.WATCHLIST_VIEW,
},

View File

@@ -47,7 +47,7 @@ const PersonCard = ({
>
<div style={{ paddingBottom: '150%' }}>
<div className="absolute inset-0 flex h-full w-full flex-col items-center p-2">
<div className="relative mt-2 mb-4 flex h-1/2 w-full justify-center">
<div className="relative mb-4 mt-2 flex h-1/2 w-full justify-center">
{profilePath ? (
<div className="relative h-full w-3/4 overflow-hidden rounded-full ring-1 ring-gray-700">
<CachedImage

View File

@@ -241,7 +241,7 @@ const PersonDetails = () => {
<>
<PageTitle title={data.name} />
{(sortedCrew || sortedCast) && (
<div className="absolute top-0 left-0 right-0 z-0 h-96">
<div className="absolute left-0 right-0 top-0 z-0 h-96">
<ImageFader
isDarker
backgroundImages={[...(sortedCast ?? []), ...(sortedCrew ?? [])]
@@ -255,7 +255,7 @@ const PersonDetails = () => {
</div>
)}
<div
className={`relative z-10 mt-4 mb-8 flex flex-col items-center lg:flex-row ${
className={`relative z-10 mb-8 mt-4 flex flex-col items-center lg:flex-row ${
data.biography ? 'lg:items-start' : ''
}`}
>
@@ -277,7 +277,7 @@ const PersonDetails = () => {
{mediaTypePicker}
</div>
</div>
<div className="mt-1 mb-2 space-y-1 text-xs text-white sm:text-sm lg:text-base">
<div className="mb-2 mt-1 space-y-1 text-xs text-white sm:text-sm lg:text-base">
<div>{personAttributes.join(' | ')}</div>
{(data.alsoKnownAs ?? []).length > 0 && (
<div>

View File

@@ -118,12 +118,12 @@ const RegionSelector = ({
{selectedRegion && selectedRegion.iso_3166_1 !== 'all'
? regionName(selectedRegion.iso_3166_1)
: isUserSetting && selectedRegion?.iso_3166_1 !== 'all'
? intl.formatMessage(messages.regionServerDefault, {
region: regionValue
? regionName(regionValue)
: intl.formatMessage(messages.regionDefault),
})
: intl.formatMessage(messages.regionDefault)}
? intl.formatMessage(messages.regionServerDefault, {
region: regionValue
? regionName(regionValue)
: intl.formatMessage(messages.regionDefault),
})
: intl.formatMessage(messages.regionDefault)}
</span>
<span className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2 text-gray-500">
<ChevronDownIcon className="h-5 w-5" />

View File

@@ -285,7 +285,7 @@ const RequestBlock = ({ request, onUpdate }: RequestBlockProps) => {
)}
{(server || profile || rootFolder || languageProfile) && (
<>
<div className="mt-4 mb-1 text-sm">
<div className="mb-1 mt-4 text-sm">
{intl.formatMessage(messages.requestoverrides)}
</div>
<ul className="divide-y divide-gray-700 rounded-md bg-gray-800 px-2 text-xs">

View File

@@ -79,15 +79,16 @@ const RequestButton = ({
// Current user's pending request, or the first pending request
const activeRequest = useMemo(() => {
return activeRequests && activeRequests.length > 0
? activeRequests.find((request) => request.requestedBy.id === user?.id) ??
activeRequests[0]
? (activeRequests.find(
(request) => request.requestedBy.id === user?.id
) ?? activeRequests[0])
: undefined;
}, [activeRequests, user]);
const active4kRequest = useMemo(() => {
return active4kRequests && active4kRequests.length > 0
? active4kRequests.find(
? (active4kRequests.find(
(request) => request.requestedBy.id === user?.id
) ?? active4kRequests[0]
) ?? active4kRequests[0])
: undefined;
}, [active4kRequests, user]);

View File

@@ -398,7 +398,7 @@ const RequestCard = ({ request, onTitleData }: RequestCardProps) => {
)}
{!isMovie(title) && request.seasons.length > 0 && (
<div className="my-0.5 hidden items-center text-sm sm:my-1 sm:flex">
<span className="mr-2 font-bold ">
<span className="mr-2 font-bold">
{intl.formatMessage(messages.seasons, {
seasonCount: request.seasons.length,
})}

View File

@@ -115,7 +115,7 @@ const RequestItemError = ({
</>
)}
</div>
<div className="mt-4 ml-4 flex w-full flex-col justify-center overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="ml-4 mt-4 flex w-full flex-col justify-center overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
{requestData && (
<>
<div className="card-field">
@@ -486,7 +486,7 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => {
)}
</div>
</div>
<div className="z-10 mt-4 ml-4 flex w-full flex-col justify-center gap-1 overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="z-10 ml-4 mt-4 flex w-full flex-col justify-center gap-1 overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="card-field">
<span className="card-field-name">
{intl.formatMessage(globalMessages.status)}

View File

@@ -79,8 +79,8 @@ const RequestList = () => {
router.pathname.startsWith('/profile')
? `&requestedBy=${currentUser?.id}`
: router.query.userId
? `&requestedBy=${router.query.userId}`
: ''
? `&requestedBy=${router.query.userId}`
: ''
}`
);

View File

@@ -308,7 +308,7 @@ const AdvancedRequester = ({
return (
<>
<div className="mt-4 mb-2 flex items-center text-lg font-semibold">
<div className="mb-2 mt-4 flex items-center text-lg font-semibold">
{intl.formatMessage(messages.advancedoptions)}
</div>
<div className="rounded-md">
@@ -378,11 +378,11 @@ const AdvancedRequester = ({
name: profile.name,
})
: !isAnime &&
serverData.server.activeProfileId === profile.id
? intl.formatMessage(messages.default, {
name: profile.name,
})
: profile.name}
serverData.server.activeProfileId === profile.id
? intl.formatMessage(messages.default, {
name: profile.name,
})
: profile.name}
</option>
))}
</select>
@@ -425,17 +425,17 @@ const AdvancedRequester = ({
}),
})
: !isAnime &&
serverData.server.activeDirectory === folder.path
? intl.formatMessage(messages.default, {
name: intl.formatMessage(messages.folder, {
serverData.server.activeDirectory === folder.path
? intl.formatMessage(messages.default, {
name: intl.formatMessage(messages.folder, {
path: folder.path,
space: formatBytes(folder.freeSpace ?? 0),
}),
})
: intl.formatMessage(messages.folder, {
path: folder.path,
space: formatBytes(folder.freeSpace ?? 0),
}),
})
: intl.formatMessage(messages.folder, {
path: folder.path,
space: formatBytes(folder.freeSpace ?? 0),
})}
})}
</option>
))}
</select>
@@ -481,12 +481,12 @@ const AdvancedRequester = ({
name: language.name,
})
: !isAnime &&
serverData.server.activeLanguageProfileId ===
language.id
? intl.formatMessage(messages.default, {
name: language.name,
})
: language.name}
serverData.server.activeLanguageProfileId ===
language.id
? intl.formatMessage(messages.default, {
name: language.name,
})
: language.name}
</option>
))}
</select>

View File

@@ -278,13 +278,13 @@ const CollectionRequestModal = ({
isUpdating
? intl.formatMessage(globalMessages.requesting)
: selectedParts.length === 0
? intl.formatMessage(messages.selectmovies)
: intl.formatMessage(
is4k ? messages.requestmovies4k : messages.requestmovies,
{
count: selectedParts.length,
}
)
? intl.formatMessage(messages.selectmovies)
: intl.formatMessage(
is4k ? messages.requestmovies4k : messages.requestmovies,
{
count: selectedParts.length,
}
)
}
okDisabled={selectedParts.length === 0}
okButtonType={'primary'}

View File

@@ -238,23 +238,23 @@ const MovieRequestModal = ({
hasPermission(Permission.MANAGE_REQUESTS)
? updateRequest(true)
: hasPermission(Permission.REQUEST_ADVANCED)
? updateRequest()
: cancelRequest()
? updateRequest()
: cancelRequest()
}
okDisabled={isUpdating}
okText={
hasPermission(Permission.MANAGE_REQUESTS)
? intl.formatMessage(messages.approve)
: hasPermission(Permission.REQUEST_ADVANCED)
? intl.formatMessage(messages.edit)
: intl.formatMessage(messages.cancel)
? intl.formatMessage(messages.edit)
: intl.formatMessage(messages.cancel)
}
okButtonType={
hasPermission(Permission.MANAGE_REQUESTS)
? 'success'
: hasPermission(Permission.REQUEST_ADVANCED)
? 'primary'
: 'danger'
? 'primary'
: 'danger'
}
onSecondary={
isOwner &&

View File

@@ -408,8 +408,8 @@ const TvRequestModal = ({
? messages.pending4krequest
: messages.pendingrequest
: is4k
? messages.requestseries4ktitle
: messages.requestseriestitle
? messages.requestseries4ktitle
: messages.requestseriestitle
)}
subTitle={data?.name}
okText={
@@ -417,33 +417,33 @@ const TvRequestModal = ({
? selectedSeasons.length === 0
? intl.formatMessage(messages.cancel)
: hasPermission(Permission.MANAGE_REQUESTS)
? intl.formatMessage(messages.approve)
: intl.formatMessage(messages.edit)
? intl.formatMessage(messages.approve)
: intl.formatMessage(messages.edit)
: getAllRequestedSeasons().length >= getAllSeasons().length
? intl.formatMessage(messages.alreadyrequested)
: !settings.currentSettings.partialRequestsEnabled
? intl.formatMessage(
is4k ? globalMessages.request4k : globalMessages.request
)
: selectedSeasons.length === 0
? intl.formatMessage(messages.selectseason)
: intl.formatMessage(
is4k ? messages.requestseasons4k : messages.requestseasons,
{
seasonCount: selectedSeasons.length,
}
)
? intl.formatMessage(messages.alreadyrequested)
: !settings.currentSettings.partialRequestsEnabled
? intl.formatMessage(
is4k ? globalMessages.request4k : globalMessages.request
)
: selectedSeasons.length === 0
? intl.formatMessage(messages.selectseason)
: intl.formatMessage(
is4k ? messages.requestseasons4k : messages.requestseasons,
{
seasonCount: selectedSeasons.length,
}
)
}
okDisabled={
editRequest
? false
: !settings.currentSettings.partialRequestsEnabled &&
quota?.tv.limit &&
unrequestedSeasons.length > quota.tv.limit
? true
: getAllRequestedSeasons().length >= getAllSeasons().length ||
(settings.currentSettings.partialRequestsEnabled &&
selectedSeasons.length === 0)
quota?.tv.limit &&
unrequestedSeasons.length > quota.tv.limit
? true
: getAllRequestedSeasons().length >= getAllSeasons().length ||
(settings.currentSettings.partialRequestsEnabled &&
selectedSeasons.length === 0)
}
okButtonType={
editRequest
@@ -451,16 +451,16 @@ const TvRequestModal = ({
selectedSeasons.length === 0
? 'danger'
: hasPermission(Permission.MANAGE_REQUESTS)
? 'success'
: 'primary'
? 'success'
: 'primary'
: 'primary'
}
cancelText={
editRequest
? intl.formatMessage(globalMessages.close)
: tvdbId
? intl.formatMessage(globalMessages.back)
: intl.formatMessage(globalMessages.cancel)
? intl.formatMessage(globalMessages.back)
: intl.formatMessage(globalMessages.cancel)
}
backdrop={`https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/${data?.backdropPath}`}
>

View File

@@ -52,7 +52,7 @@ const ResetPassword = () => {
'/images/rotate6.jpg',
]}
/>
<div className="absolute top-4 right-4 z-50">
<div className="absolute right-4 top-4 z-50">
<LanguagePicker />
</div>
<div className="relative z-40 mt-10 flex flex-col items-center px-4 sm:mx-auto sm:w-full sm:max-w-md">
@@ -112,7 +112,7 @@ const ResetPassword = () => {
>
{intl.formatMessage(messages.email)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="form-input-field">
<Field
id="email"

View File

@@ -62,7 +62,7 @@ const ResetPassword = () => {
'/images/rotate6.jpg',
]}
/>
<div className="absolute top-4 right-4 z-50">
<div className="absolute right-4 top-4 z-50">
<LanguagePicker />
</div>
<div className="relative z-40 mt-10 flex flex-col items-center px-4 sm:mx-auto sm:w-full sm:max-w-md">
@@ -122,7 +122,7 @@ const ResetPassword = () => {
>
{intl.formatMessage(messages.password)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="form-input-field">
<SensitiveInput
as="field"
@@ -145,7 +145,7 @@ const ResetPassword = () => {
>
{intl.formatMessage(messages.confirmpassword)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="form-input-field">
<SensitiveInput
as="field"

View File

@@ -44,7 +44,7 @@ const Search = () => {
return (
<>
<PageTitle title={intl.formatMessage(messages.search)} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header>{intl.formatMessage(messages.searchresults)}</Header>
</div>
<ListView

View File

@@ -388,8 +388,8 @@ export const WatchProviderSelector = ({
region
? region
: currentSettings.discoverRegion
? currentSettings.discoverRegion
: 'US'
? currentSettings.discoverRegion
: 'US'
);
const [activeProvider, setActiveProvider] = useState<number[]>(
activeProviders ?? []
@@ -476,7 +476,7 @@ export const WatchProviderSelector = ({
/>
</div>
{isActive && (
<div className="pointer-events-none absolute -top-1 -left-1 flex items-center justify-center text-indigo-100 opacity-90">
<div className="pointer-events-none absolute -left-1 -top-1 flex items-center justify-center text-indigo-100 opacity-90">
<CheckCircleIcon className="h-6 w-6" />
</div>
)}
@@ -519,7 +519,7 @@ export const WatchProviderSelector = ({
/>
</div>
{isActive && (
<div className="pointer-events-none absolute -top-1 -left-1 flex items-center justify-center text-indigo-100 opacity-90">
<div className="pointer-events-none absolute -left-1 -top-1 flex items-center justify-center text-indigo-100 opacity-90">
<CheckCircleIcon className="h-6 w-6" />
</div>
)}

View File

@@ -9,7 +9,7 @@ interface LibraryItemProps {
const LibraryItem = ({ isEnabled, name, onToggle }: LibraryItemProps) => {
return (
<li className="col-span-1 flex rounded-md shadow-sm">
<div className="flex flex-1 items-center justify-between truncate rounded-md border-t border-b border-r border-gray-700 bg-gray-600">
<div className="flex flex-1 items-center justify-between truncate rounded-md border-b border-r border-t border-gray-700 bg-gray-600">
<div className="flex-1 cursor-default truncate px-4 py-6 text-sm leading-5">
{name}
</div>

View File

@@ -136,10 +136,10 @@ const NotificationsEmail = () => {
encryption: data.options.secure
? 'implicit'
: data.options.requireTls
? 'opportunistic'
: data.options.ignoreTls
? 'none'
: 'default',
? 'opportunistic'
: data.options.ignoreTls
? 'none'
: 'default',
authUser: data.options.authUser,
authPass: data.options.authPass,
allowSelfSigned: data.options.allowSelfSigned,

View File

@@ -256,7 +256,7 @@ const NotificationsNtfy = () => {
</div>
</div>
{values.authMethodUsernamePassword && (
<div className="mr-2 ml-4">
<div className="ml-4 mr-2">
<div className="form-row">
<label htmlFor="username" className="text-label">
{intl.formatMessage(messages.username)}
@@ -302,7 +302,7 @@ const NotificationsNtfy = () => {
</div>
</div>
{values.authMethodToken && (
<div className="form-row mr-2 ml-4">
<div className="form-row ml-4 mr-2">
<label htmlFor="token" className="text-label">
{intl.formatMessage(messages.token)}
</label>

View File

@@ -210,8 +210,8 @@ const OverrideRuleModal = ({
isSubmitting
? intl.formatMessage(globalMessages.saving)
: rule
? intl.formatMessage(globalMessages.save)
: intl.formatMessage(messages.create)
? intl.formatMessage(globalMessages.save)
: intl.formatMessage(messages.create)
}
okDisabled={
isSubmitting ||
@@ -341,8 +341,8 @@ const OverrideRuleModal = ({
values.radarrServiceId != null
? 'movie'
: values.sonarrServiceId != null
? 'tv'
: 'tv'
? 'tv'
: 'tv'
}
defaultValue={values.genre}
isMulti

View File

@@ -290,8 +290,8 @@ const RadarrModal = ({ onClose, radarr, onSave }: RadarrModalProps) => {
isSubmitting
? intl.formatMessage(globalMessages.saving)
: radarr
? intl.formatMessage(globalMessages.save)
: intl.formatMessage(messages.add)
? intl.formatMessage(globalMessages.save)
: intl.formatMessage(messages.add)
}
secondaryButtonType="warning"
secondaryText={
@@ -518,10 +518,12 @@ const RadarrModal = ({ onClose, radarr, onSave }: RadarrModalProps) => {
{isTesting
? intl.formatMessage(messages.loadingprofiles)
: !isValidated
? intl.formatMessage(
messages.testFirstQualityProfiles
)
: intl.formatMessage(messages.selectQualityProfile)}
? intl.formatMessage(
messages.testFirstQualityProfiles
)
: intl.formatMessage(
messages.selectQualityProfile
)}
</option>
{testResponse.profiles.length > 0 &&
testResponse.profiles.map((profile) => (
@@ -558,8 +560,10 @@ const RadarrModal = ({ onClose, radarr, onSave }: RadarrModalProps) => {
{isTesting
? intl.formatMessage(messages.loadingrootfolders)
: !isValidated
? intl.formatMessage(messages.testFirstRootFolders)
: intl.formatMessage(messages.selectRootFolder)}
? intl.formatMessage(
messages.testFirstRootFolders
)
: intl.formatMessage(messages.selectRootFolder)}
</option>
{testResponse.rootFolders.length > 0 &&
testResponse.rootFolders.map((folder) => (
@@ -630,8 +634,8 @@ const RadarrModal = ({ onClose, radarr, onSave }: RadarrModalProps) => {
!isValidated
? intl.formatMessage(messages.testFirstTags)
: isTesting
? intl.formatMessage(messages.loadingTags)
: intl.formatMessage(messages.selecttags)
? intl.formatMessage(messages.loadingTags)
: intl.formatMessage(messages.selecttags)
}
className="react-select-container"
classNamePrefix="react-select"

View File

@@ -61,7 +61,7 @@ const Release = ({ currentVersion, release, isLatest }: ReleaseProps) => {
const [isModalOpen, setModalOpen] = useState(false);
return (
<div className="flex w-full flex-col space-y-3 rounded-md bg-gray-800 px-4 py-2 shadow-md ring-1 ring-gray-700 sm:flex-row sm:space-y-0 sm:space-x-3">
<div className="flex w-full flex-col space-y-3 rounded-md bg-gray-800 px-4 py-2 shadow-md ring-1 ring-gray-700 sm:flex-row sm:space-x-3 sm:space-y-0">
<Transition
as={Fragment}
enter="transition-opacity duration-300"

View File

@@ -69,7 +69,7 @@ const SettingsAbout = () => {
<p className="text-sm leading-5 text-gray-100">
{intl.formatMessage(messages.betawarning)}
</p>
<p className="mt-3 text-sm leading-5 md:mt-0 md:ml-6">
<p className="mt-3 text-sm leading-5 md:ml-6 md:mt-0">
<a
href="http://github.com/seerr-team/seerr"
className="whitespace-nowrap font-medium text-gray-100 transition duration-150 ease-in-out hover:text-white"

View File

@@ -259,8 +259,8 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
settings.currentSettings.mediaServerType === MediaServerType.JELLYFIN
? 'Jellyfin'
: settings.currentSettings.mediaServerType === MediaServerType.EMBY
? 'Emby'
: undefined,
? 'Emby'
: undefined,
};
return (
@@ -308,7 +308,7 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
))}
</ul>
</div>
<div className="mt-10 mb-6">
<div className="mb-6 mt-10">
<h3 className="heading">
<FormattedMessage {...messages.manualscanJellyfin} />
</h3>
@@ -424,7 +424,7 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
{intl.formatMessage(messages.scanbackground)}
</div>
)}
<div className="mt-10 mb-6">
<div className="mb-6 mt-10">
<h3 className="heading">
{intl.formatMessage(
messages.jellyfinSettings,

View File

@@ -364,7 +364,7 @@ const SettingsJobs = () => {
<label className="text-label">
{intl.formatMessage(messages.editJobScheduleCurrent)}
</label>
<div className="form-input-area mt-2 mb-1">
<div className="form-input-area mb-1 mt-2">
<div>
{jobModalState.job &&
cronstrue.toString(jobModalState.job.cronSchedule, {

View File

@@ -102,8 +102,8 @@ const SettingsLayout = ({ children }: SettingsLayoutProps) => {
settings.currentSettings.mediaServerType === MediaServerType.JELLYFIN
? 'Jellyfin'
: settings.currentSettings.mediaServerType === MediaServerType.EMBY
? 'Emby'
: undefined,
? 'Emby'
: undefined,
});
}
};

View File

@@ -193,10 +193,10 @@ const SettingsLogs = () => {
activeLog.log?.level === 'error'
? 'danger'
: activeLog.log?.level === 'warn'
? 'warning'
: activeLog.log?.level === 'info'
? 'success'
: 'default'
? 'warning'
: activeLog.log?.level === 'info'
? 'success'
: 'default'
}
>
{activeLog.log?.level.toUpperCase()}
@@ -344,10 +344,10 @@ const SettingsLogs = () => {
row.level === 'error'
? 'danger'
: row.level === 'warn'
? 'warning'
: row.level === 'info'
? 'success'
: 'default'
? 'warning'
: row.level === 'info'
? 'success'
: 'default'
}
>
{row.level.toUpperCase()}
@@ -426,7 +426,7 @@ const SettingsLogs = () => {
intl.formatMessage(globalMessages.showingresults, {
from: pageIndex * currentPageSize + 1,
to:
data?.results.length ?? 0 < currentPageSize
(data?.results.length ?? 0 < currentPageSize)
? pageIndex * currentPageSize +
(data?.results.length ?? 0)
: (pageIndex + 1) * currentPageSize,

View File

@@ -284,7 +284,7 @@ const SettingsNetwork = () => {
</div>
{values.dnsCacheEnabled && (
<>
<div className="mr-2 ml-4">
<div className="ml-4 mr-2">
<div className="form-row">
<label
htmlFor="dnsCacheForceMinTtl"
@@ -357,7 +357,7 @@ const SettingsNetwork = () => {
</div>
{values.proxyEnabled && (
<>
<div className="mr-2 ml-4">
<div className="ml-4 mr-2">
<div className="form-row">
<label
htmlFor="proxyHostname"

View File

@@ -480,12 +480,12 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
? intl.formatMessage(messages.serverLocal)
: intl.formatMessage(messages.serverRemote)
}]${
server.ssl
? ` [${intl.formatMessage(
messages.serverSecure
)}]`
: ''
}
server.ssl
? ` [${intl.formatMessage(
messages.serverSecure
)}]`
: ''
}
${server.status ? '' : '(' + server.message + ')'}
`}
</option>
@@ -623,7 +623,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
);
}}
</Formik>
<div className="mt-10 mb-6">
<div className="mb-6 mt-10">
<h3 className="heading">
{intl.formatMessage(messages.plexlibraries)}
</h3>
@@ -657,7 +657,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
))}
</ul>
</div>
<div className="mt-10 mb-6">
<div className="mb-6 mt-10">
<h3 className="heading">{intl.formatMessage(messages.manualscan)}</h3>
<p className="description">
{intl.formatMessage(messages.manualscanDescription)}
@@ -734,7 +734,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
</div>
{!onComplete && (
<>
<div className="mt-10 mb-6">
<div className="mb-6 mt-10">
<h3 className="heading">
{intl.formatMessage(messages.tautulliSettings)}
</h3>

View File

@@ -397,7 +397,7 @@ const SettingsServices = () => {
<div className="flex h-full w-full items-center justify-center">
<Button
buttonType="ghost"
className="mt-3 mb-3"
className="mb-3 mt-3"
onClick={() =>
setEditRadarrModal({ open: true, radarr: null })
}
@@ -411,7 +411,7 @@ const SettingsServices = () => {
</>
)}
</div>
<div className="mt-10 mb-6">
<div className="mb-6 mt-10">
<h3 className="heading">
{intl.formatMessage(messages.sonarrsettings)}
</h3>
@@ -499,7 +499,7 @@ const SettingsServices = () => {
</>
)}
</div>
<div className="mt-10 mb-6">
<div className="mb-6 mt-10">
<h3 className="heading">
{intl.formatMessage(messages.overrideRules)}
</h3>

View File

@@ -81,10 +81,10 @@ const SettingsUsers = () => {
settings.currentSettings.mediaServerType === MediaServerType.JELLYFIN
? 'Jellyfin'
: settings.currentSettings.mediaServerType === MediaServerType.EMBY
? 'Emby'
: settings.currentSettings.mediaServerType === MediaServerType.PLEX
? 'Plex'
: undefined,
? 'Emby'
: settings.currentSettings.mediaServerType === MediaServerType.PLEX
? 'Plex'
: undefined,
};
return (

View File

@@ -323,8 +323,8 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
isSubmitting
? intl.formatMessage(globalMessages.saving)
: sonarr
? intl.formatMessage(globalMessages.save)
: intl.formatMessage(messages.add)
? intl.formatMessage(globalMessages.save)
: intl.formatMessage(messages.add)
}
secondaryButtonType="warning"
secondaryText={
@@ -572,10 +572,12 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
{isTesting
? intl.formatMessage(messages.loadingprofiles)
: !isValidated
? intl.formatMessage(
messages.testFirstQualityProfiles
)
: intl.formatMessage(messages.selectQualityProfile)}
? intl.formatMessage(
messages.testFirstQualityProfiles
)
: intl.formatMessage(
messages.selectQualityProfile
)}
</option>
{testResponse.profiles.length > 0 &&
testResponse.profiles.map((profile) => (
@@ -612,8 +614,10 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
{isTesting
? intl.formatMessage(messages.loadingrootfolders)
: !isValidated
? intl.formatMessage(messages.testFirstRootFolders)
: intl.formatMessage(messages.selectRootFolder)}
? intl.formatMessage(
messages.testFirstRootFolders
)
: intl.formatMessage(messages.selectRootFolder)}
</option>
{testResponse.rootFolders.length > 0 &&
testResponse.rootFolders.map((folder) => (
@@ -656,12 +660,12 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
messages.loadinglanguageprofiles
)
: !isValidated
? intl.formatMessage(
messages.testFirstLanguageProfiles
)
: intl.formatMessage(
messages.selectLanguageProfile
)}
? intl.formatMessage(
messages.testFirstLanguageProfiles
)
: intl.formatMessage(
messages.selectLanguageProfile
)}
</option>
{testResponse.languageProfiles.length > 0 &&
testResponse.languageProfiles.map((language) => (
@@ -703,8 +707,8 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
!isValidated
? intl.formatMessage(messages.testFirstTags)
: isTesting
? intl.formatMessage(messages.loadingTags)
: intl.formatMessage(messages.selecttags)
? intl.formatMessage(messages.loadingTags)
: intl.formatMessage(messages.selecttags)
}
isLoading={isTesting}
className="react-select-container"
@@ -780,10 +784,12 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
{isTesting
? intl.formatMessage(messages.loadingprofiles)
: !isValidated
? intl.formatMessage(
messages.testFirstQualityProfiles
)
: intl.formatMessage(messages.selectQualityProfile)}
? intl.formatMessage(
messages.testFirstQualityProfiles
)
: intl.formatMessage(
messages.selectQualityProfile
)}
</option>
{testResponse.profiles.length > 0 &&
testResponse.profiles.map((profile) => (
@@ -820,8 +826,10 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
{isTesting
? intl.formatMessage(messages.loadingrootfolders)
: !isValidated
? intl.formatMessage(messages.testFirstRootFolders)
: intl.formatMessage(messages.selectRootFolder)}
? intl.formatMessage(
messages.testFirstRootFolders
)
: intl.formatMessage(messages.selectRootFolder)}
</option>
{testResponse.rootFolders.length > 0 &&
testResponse.rootFolders.map((folder) => (
@@ -862,12 +870,12 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
messages.loadinglanguageprofiles
)
: !isValidated
? intl.formatMessage(
messages.testFirstLanguageProfiles
)
: intl.formatMessage(
messages.selectLanguageProfile
)}
? intl.formatMessage(
messages.testFirstLanguageProfiles
)
: intl.formatMessage(
messages.selectLanguageProfile
)}
</option>
{testResponse.languageProfiles.length > 0 &&
testResponse.languageProfiles.map((language) => (
@@ -909,8 +917,8 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
!isValidated
? intl.formatMessage(messages.testFirstTags)
: isTesting
? intl.formatMessage(messages.loadingTags)
: intl.formatMessage(messages.selecttags)
? intl.formatMessage(messages.loadingTags)
: intl.formatMessage(messages.selecttags)
}
isLoading={isTesting}
className="react-select-container"

View File

@@ -65,8 +65,8 @@ function JellyfinSetup({
serverType === MediaServerType.JELLYFIN
? ServerType.JELLYFIN
: serverType === MediaServerType.EMBY
? ServerType.EMBY
: 'Media Server',
? ServerType.EMBY
: 'Media Server',
};
const LoginSchema = Yup.object().shape({
@@ -170,7 +170,7 @@ function JellyfinSetup({
mediaServerFormatValues
)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mb-0 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mb-0 sm:mt-0">
<div className="flex rounded-md shadow-sm">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-gray-100 sm:text-sm">
{values.useSsl ? 'https://' : 'http://'}
@@ -218,7 +218,7 @@ function JellyfinSetup({
<label htmlFor="useSsl" className="text-label mt-2">
{intl.formatMessage(messages.enablessl)}
</label>
<div className="mt-1 mb-2 sm:col-span-2">
<div className="mb-2 mt-1 sm:col-span-2">
<div className="flex rounded-md shadow-sm">
<Field
id="useSsl"
@@ -234,7 +234,7 @@ function JellyfinSetup({
<label htmlFor="urlBase" className="text-label mt-1">
{intl.formatMessage(messages.urlBase)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="flex rounded-md shadow-sm">
<Field
type="text"
@@ -287,7 +287,7 @@ function JellyfinSetup({
<label htmlFor="username" className="text-label">
{intl.formatMessage(messages.username)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="flex rounded-md shadow-sm">
<Field
id="username"
@@ -308,7 +308,7 @@ function JellyfinSetup({
<label htmlFor="password" className="text-label">
{intl.formatMessage(messages.password)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="flexrounded-md shadow-sm">
<Field
id="password"

View File

@@ -19,9 +19,7 @@ const SetupSteps = ({
<li className="relative md:flex md:flex-1">
<div className="flex items-center space-x-4 px-6 py-4 text-sm font-medium leading-5">
<div
className={`flex h-10 w-10 flex-shrink-0 items-center justify-center border-2
${active ? 'border-indigo-600 ' : 'border-white '}
${completed ? 'border-indigo-600 bg-indigo-600 ' : ''} rounded-full`}
className={`flex h-10 w-10 flex-shrink-0 items-center justify-center border-2 ${active ? 'border-indigo-600' : 'border-white'} ${completed ? 'border-indigo-600 bg-indigo-600' : ''} rounded-full`}
>
{completed && <CheckIcon className="h-6 w-6 text-white" />}
{!completed && (
@@ -40,7 +38,7 @@ const SetupSteps = ({
</div>
{!isLastStep && (
<div className="absolute top-0 right-0 hidden h-full w-5 md:block">
<div className="absolute right-0 top-0 hidden h-full w-5 md:block">
<svg
className="h-full w-full text-gray-600"
viewBox="0 0 22 80"

View File

@@ -154,7 +154,7 @@ const Setup = () => {
) ?? []
}
/>
<div className="absolute top-4 right-4 z-50">
<div className="absolute right-4 top-4 z-50">
<LanguagePicker />
</div>
<div className="relative z-40 px-4 sm:mx-auto sm:w-full sm:max-w-4xl">
@@ -204,7 +204,7 @@ const Setup = () => {
</div>
<div className="grid grid-cols-3">
<div className="flex flex-col divide-y divide-gray-600 rounded-l border border-gray-600 py-2">
<div className="mb-2 flex flex-1 items-center justify-center py-2 px-2">
<div className="mb-2 flex flex-1 items-center justify-center px-2 py-2">
<JellyfinLogo className="h-10" />
</div>
<div className="px-2 pt-2">
@@ -220,7 +220,7 @@ const Setup = () => {
</div>
</div>
<div className="flex flex-col divide-y divide-gray-600 border-y border-gray-600 py-2">
<div className="mb-2 flex flex-1 items-center justify-center py-2 px-2">
<div className="mb-2 flex flex-1 items-center justify-center px-2 py-2">
<PlexLogo className="h-8" />
</div>
<div className="px-2 pt-2">
@@ -236,7 +236,7 @@ const Setup = () => {
</div>
</div>
<div className="flex flex-col divide-y divide-gray-600 rounded-r border border-gray-600 py-2">
<div className="mb-2 flex flex-1 items-center justify-center py-2 px-2">
<div className="mb-2 flex flex-1 items-center justify-center px-2 py-2">
<EmbyLogo className="h-9" />
</div>
<div className="px-2 pt-2">

View File

@@ -194,7 +194,7 @@ const Slider = ({
</div>
))}
{isEmpty && (
<div className="mt-16 mb-16 text-center font-medium text-gray-400">
<div className="mb-16 mt-16 text-center font-medium text-gray-400">
{emptyMessage
? emptyMessage
: intl.formatMessage(globalMessages.noresults)}

View File

@@ -87,8 +87,8 @@ const StatusBadge = ({
settings.currentSettings.mediaServerType === MediaServerType.EMBY
? 'Emby'
: settings.currentSettings.mediaServerType === MediaServerType.PLEX
? 'Plex'
: 'Jellyfin',
? 'Plex'
: 'Jellyfin',
});
} else if (hasPermission(Permission.MANAGE_REQUESTS)) {
if (mediaType && tmdbId) {
@@ -137,15 +137,13 @@ const StatusBadge = ({
const badgeDownloadProgress = (
<div
className={`
absolute top-0 left-0 z-10 flex h-full bg-opacity-80 ${
className={`absolute left-0 top-0 z-10 flex h-full bg-opacity-80 ${
status === MediaStatus.DELETED
? 'bg-red-600'
: status === MediaStatus.PROCESSING
? 'bg-indigo-500'
: 'bg-green-500'
} transition-all duration-200 ease-in-out
`}
? 'bg-indigo-500'
: 'bg-green-500'
} transition-all duration-200 ease-in-out`}
style={{
width: `${
downloadItem ? calculateDownloadProgress(downloadItem[0]) : 0

View File

@@ -36,7 +36,7 @@ const ErrorCard = ({ id, tmdbId, tvdbId, type, canExpand }: ErrorCardProps) => {
data-testid="title-card"
>
<div
className="relative transform-gpu cursor-default overflow-hidden rounded-xl bg-gray-800 bg-cover shadow outline-none ring-1 ring-gray-700 transition duration-300"
className="relative transform-gpu cursor-default overflow-hidden rounded-xl bg-gray-800 bg-cover shadow outline-none ring-1 ring-gray-700 transition duration-300"
style={{
paddingBottom: '150%',
}}

View File

@@ -76,9 +76,8 @@ const TitleCard = ({
const [showDetail, setShowDetail] = useState(false);
const [showRequestModal, setShowRequestModal] = useState(false);
const { addToast } = useToasts();
const [toggleWatchlist, setToggleWatchlist] = useState<boolean>(
!isAddedToWatchlist
);
const [toggleWatchlist, setToggleWatchlist] =
useState<boolean>(!isAddedToWatchlist);
const [showBlacklistModal, setShowBlacklistModal] = useState(false);
const cardRef = useRef<HTMLDivElement>(null);
@@ -282,8 +281,8 @@ const TitleCard = ({
mediaType === 'movie'
? 'movie'
: mediaType === 'collection'
? 'collection'
: 'tv'
? 'collection'
: 'tv'
}
onComplete={requestComplete}
onUpdating={requestUpdating}
@@ -295,8 +294,8 @@ const TitleCard = ({
mediaType === 'movie'
? 'movie'
: mediaType === 'collection'
? 'collection'
: 'tv'
? 'collection'
: 'tv'
}
show={showBlacklistModal}
onCancel={closeBlacklistModal}
@@ -352,8 +351,8 @@ const TitleCard = ({
{mediaType === 'movie'
? intl.formatMessage(globalMessages.movie)
: mediaType === 'collection'
? intl.formatMessage(globalMessages.collection)
: intl.formatMessage(globalMessages.tvshow)}
? intl.formatMessage(globalMessages.collection)
: intl.formatMessage(globalMessages.tvshow)}
</div>
</div>
{showDetail && currentStatus !== MediaStatus.BLACKLISTED && (
@@ -454,8 +453,8 @@ const TitleCard = ({
mediaType === 'movie'
? `/movie/${id}`
: mediaType === 'collection'
? `/collection/${id}`
: `/tv/${id}`
? `/collection/${id}`
: `/tv/${id}`
}
className="absolute inset-0 h-full w-full cursor-pointer overflow-hidden text-left"
style={{

View File

@@ -41,11 +41,11 @@ const Season = ({ seasonNumber, tvId }: SeasonProps) => {
.map((episode) => {
return (
<div
className="flex flex-col space-y-4 py-4 xl:flex-row xl:space-y-4 xl:space-x-4"
className="flex flex-col space-y-4 py-4 xl:flex-row xl:space-x-4 xl:space-y-4"
key={`season-${seasonNumber}-episode-${episode.episodeNumber}`}
>
<div className="flex-1">
<div className="flex flex-col space-y-2 xl:flex-row xl:items-center xl:space-y-0 xl:space-x-2">
<div className="flex flex-col space-y-2 xl:flex-row xl:items-center xl:space-x-2 xl:space-y-0">
<h3 className="text-lg">
{episode.episodeNumber} - {episode.name}
</h3>

View File

@@ -32,7 +32,7 @@ const TvCast = () => {
<PageTitle
title={[intl.formatMessage(messages.fullseriescast), data.name]}
/>
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
<Link href={`/tv/${data.id}`} className="hover:underline">

View File

@@ -32,7 +32,7 @@ const TvCrew = () => {
<PageTitle
title={[intl.formatMessage(messages.fullseriescrew), data.name]}
/>
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
<Link href={`/tv/${data.id}`} className="hover:underline">

View File

@@ -38,7 +38,7 @@ const TvRecommendations = () => {
<PageTitle
title={[intl.formatMessage(messages.recommendations), tvData?.name]}
/>
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
<Link href={`/tv/${tvData?.id}`} className="hover:underline">

View File

@@ -36,7 +36,7 @@ const TvSimilar = () => {
return (
<>
<PageTitle title={[intl.formatMessage(messages.similar), tvData?.name]} />
<div className="mt-1 mb-5">
<div className="mb-5 mt-1">
<Header
subtext={
<Link href={`/tv/${tvData?.id}`} className="hover:underline">

View File

@@ -227,8 +227,8 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
const discoverRegion = user?.settings?.discoverRegion
? user.settings.discoverRegion
: settings.currentSettings.discoverRegion
? settings.currentSettings.discoverRegion
: 'US';
? settings.currentSettings.discoverRegion
: 'US';
const seriesAttributes: React.ReactNode[] = [];
const contentRating = data.contentRatings.results.find(
@@ -320,8 +320,8 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
const streamingRegion = user?.settings?.streamingRegion
? user.settings.streamingRegion
: settings.currentSettings.streamingRegion
? settings.currentSettings.streamingRegion
: 'US';
? settings.currentSettings.streamingRegion
: 'US';
const streamingProviders =
data?.watchProviders?.find(
(provider) => provider.iso_3166_1 === streamingRegion
@@ -849,7 +849,7 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
<Disclosure.Button
className={`mt-2 flex w-full items-center justify-between space-x-2 border-gray-700 bg-gray-800 px-4 py-2 text-gray-200 ${
open
? 'rounded-t-md border-t border-l border-r'
? 'rounded-t-md border-l border-r border-t'
: 'rounded-md border'
}`}
>

View File

@@ -536,13 +536,13 @@ const UserList = () => {
mediaServerName: 'Emby',
})
: settings.currentSettings.mediaServerType ===
MediaServerType.PLEX
? intl.formatMessage(messages.importfrommediaserver, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.importfrommediaserver, {
mediaServerName: 'Jellyfin',
})}
MediaServerType.PLEX
? intl.formatMessage(messages.importfrommediaserver, {
mediaServerName: 'Plex',
})
: intl.formatMessage(messages.importfrommediaserver, {
mediaServerName: 'Jellyfin',
})}
</span>
</Button>
</div>
@@ -705,8 +705,8 @@ const UserList = () => {
{user.id === 1
? intl.formatMessage(messages.owner)
: hasPermission(Permission.ADMIN, user.permissions)
? intl.formatMessage(messages.admin)
: intl.formatMessage(messages.user)}
? intl.formatMessage(messages.admin)
: intl.formatMessage(messages.user)}
</Table.TD>
<Table.TD>
{intl.formatDate(user.createdAt, {

View File

@@ -38,7 +38,7 @@ const ProfileHeader = ({ user, isSettingsPage }: ProfileHeaderProps) => {
}
return (
<div className="relative z-40 mt-6 mb-12 lg:flex lg:items-end lg:justify-between lg:space-x-5">
<div className="relative z-40 mb-12 mt-6 lg:flex lg:items-end lg:justify-between lg:space-x-5">
<div className="flex items-end justify-items-end space-x-5">
<div className="flex-shrink-0">
<div className="relative">
@@ -81,7 +81,7 @@ const ProfileHeader = ({ user, isSettingsPage }: ProfileHeaderProps) => {
</p>
</div>
</div>
<div className="justify-stretch mt-6 flex flex-col-reverse space-y-4 space-y-reverse lg:flex-row lg:justify-end lg:space-y-0 lg:space-x-3 lg:space-x-reverse">
<div className="mt-6 flex flex-col-reverse justify-stretch space-y-4 space-y-reverse lg:flex-row lg:justify-end lg:space-x-3 lg:space-y-0 lg:space-x-reverse">
{(loggedInUser?.id === user.id ||
(user.id !== 1 && hasPermission(Permission.MANAGE_USERS))) &&
!isSettingsPage ? (

View File

@@ -285,8 +285,8 @@ const UserGeneralSettings = () => {
{user?.id === 1
? intl.formatMessage(messages.owner)
: hasPermission(Permission.ADMIN)
? intl.formatMessage(messages.admin)
: intl.formatMessage(messages.user)}
? intl.formatMessage(messages.admin)
: intl.formatMessage(messages.user)}
</div>
</div>
</div>

View File

@@ -138,7 +138,7 @@ const LinkJellyfinModal: React.FC<LinkJellyfinModalProps> = ({
<label htmlFor="username" className="text-label">
{intl.formatMessage(messages.username)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="flex rounded-md shadow-sm">
<Field
id="username"
@@ -154,7 +154,7 @@ const LinkJellyfinModal: React.FC<LinkJellyfinModalProps> = ({
<label htmlFor="password" className="text-label">
{intl.formatMessage(messages.password)}
</label>
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
<div className="mb-2 mt-1 sm:col-span-2 sm:mt-0">
<div className="flex rounded-md shadow-sm">
<Field
id="password"

View File

@@ -71,7 +71,7 @@ const DeviceItem = ({
</div>
</div>
</div>
<div className="z-10 mt-4 ml-4 flex w-full flex-col justify-center overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="z-10 ml-4 mt-4 flex w-full flex-col justify-center overflow-hidden pr-4 text-sm sm:ml-2 sm:mt-0 xl:flex-1 xl:pr-0">
<div className="card-field">
<span className="card-field-name">
{intl.formatMessage(messages.operatingsystem)}

Some files were not shown because too many files have changed in this diff Show More