diff --git a/src/components/Common/StatusBadgeMini/index.tsx b/src/components/Common/StatusBadgeMini/index.tsx new file mode 100644 index 00000000..0653c7d8 --- /dev/null +++ b/src/components/Common/StatusBadgeMini/index.tsx @@ -0,0 +1,45 @@ +import { + BellIcon, + CheckIcon, + ClockIcon, + MinusSmIcon, +} from '@heroicons/react/solid'; +import { MediaStatus } from '@server/constants/media'; + +interface StatusBadgeMiniProps { + status: MediaStatus; + is4k?: boolean; +} + +const StatusBadgeMini = ({ status, is4k = false }: StatusBadgeMiniProps) => { + const badgeStyle = ['w-5 rounded-full p-0.5 text-white ring-1']; + let indicatorIcon: React.ReactNode; + + switch (status) { + case MediaStatus.PROCESSING: + badgeStyle.push('bg-indigo-500 ring-indigo-400'); + indicatorIcon = ; + break; + case MediaStatus.AVAILABLE: + badgeStyle.push('bg-green-500 ring-green-400'); + indicatorIcon = ; + break; + case MediaStatus.PENDING: + badgeStyle.push('bg-yellow-500 ring-yellow-400'); + indicatorIcon = ; + break; + case MediaStatus.PARTIALLY_AVAILABLE: + badgeStyle.push('bg-green-500 ring-green-400'); + indicatorIcon = ; + break; + } + + return ( +
+
{indicatorIcon}
+ {is4k && 4K} +
+ ); +}; + +export default StatusBadgeMini; diff --git a/src/components/TvDetails/index.tsx b/src/components/TvDetails/index.tsx index 0c95a752..50643aa1 100644 --- a/src/components/TvDetails/index.tsx +++ b/src/components/TvDetails/index.tsx @@ -10,6 +10,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner'; import PageTitle from '@app/components/Common/PageTitle'; import type { PlayButtonLink } from '@app/components/Common/PlayButton'; import PlayButton from '@app/components/Common/PlayButton'; +import StatusBadgeMini from '@app/components/Common/StatusBadgeMini'; import Tooltip from '@app/components/Common/Tooltip'; import ExternalLinkBlock from '@app/components/ExternalLinkBlock'; import IssueModal from '@app/components/IssueModal'; @@ -561,75 +562,149 @@ const TvDetails = ({ tv }: TvDetailsProps) => { {((!mSeason && request?.status === MediaRequestStatus.APPROVED) || mSeason?.status === MediaStatus.PROCESSING) && ( - - {intl.formatMessage(globalMessages.requested)} - + <> +
+ + {intl.formatMessage(globalMessages.requested)} + +
+
+ +
+ )} {((!mSeason && request?.status === MediaRequestStatus.PENDING) || mSeason?.status === MediaStatus.PENDING) && ( - - {intl.formatMessage(globalMessages.pending)} - + <> +
+ + {intl.formatMessage(globalMessages.pending)} + +
+
+ +
+ )} {mSeason?.status === MediaStatus.PARTIALLY_AVAILABLE && ( - - {intl.formatMessage( - globalMessages.partiallyavailable - )} - + <> +
+ + {intl.formatMessage( + globalMessages.partiallyavailable + )} + +
+
+ +
+ )} {mSeason?.status === MediaStatus.AVAILABLE && ( - - {intl.formatMessage(globalMessages.available)} - + <> +
+ + {intl.formatMessage(globalMessages.available)} + +
+
+ +
+ )} {((!mSeason4k && request4k?.status === MediaRequestStatus.APPROVED) || mSeason4k?.status4k === MediaStatus.PROCESSING) && show4k && ( - - {intl.formatMessage(messages.status4k, { - status: intl.formatMessage( - globalMessages.requested - ), - })} - + <> +
+ + {intl.formatMessage(messages.status4k, { + status: intl.formatMessage( + globalMessages.requested + ), + })} + +
+
+ +
+ )} {((!mSeason4k && request4k?.status === MediaRequestStatus.PENDING) || mSeason?.status4k === MediaStatus.PENDING) && show4k && ( - - {intl.formatMessage(messages.status4k, { - status: intl.formatMessage( - globalMessages.pending - ), - })} - + <> +
+ + {intl.formatMessage(messages.status4k, { + status: intl.formatMessage( + globalMessages.pending + ), + })} + +
+
+ +
+ )} {mSeason4k?.status4k === MediaStatus.PARTIALLY_AVAILABLE && show4k && ( - - {intl.formatMessage(messages.status4k, { - status: intl.formatMessage( - globalMessages.partiallyavailable - ), - })} - + <> +
+ + {intl.formatMessage(messages.status4k, { + status: intl.formatMessage( + globalMessages.partiallyavailable + ), + })} + +
+
+ +
+ )} {mSeason4k?.status4k === MediaStatus.AVAILABLE && show4k && ( - - {intl.formatMessage(messages.status4k, { - status: intl.formatMessage( - globalMessages.available - ), - })} - + <> +
+ + {intl.formatMessage(messages.status4k, { + status: intl.formatMessage( + globalMessages.available + ), + })} + +
+
+ +
+ )}