fix(deps): update dependency @heroicons/react to v2 (#2970)

* fix(deps): update dependency @heroicons/react to v2

* fix: update imports and fix icon name changes for heroicons

* fix: also update MiniStatusBadge to use new check icon

* fix: update last place with old import

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: sct <ryan@sct.dev>
pull/3197/head
renovate[bot] 2 years ago committed by GitHub
parent c4b16abc62
commit dd48d59b20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -34,7 +34,7 @@
"@formatjs/intl-pluralrules": "5.1.8", "@formatjs/intl-pluralrules": "5.1.8",
"@formatjs/intl-utils": "3.8.4", "@formatjs/intl-utils": "3.8.4",
"@headlessui/react": "1.7.7", "@headlessui/react": "1.7.7",
"@heroicons/react": "1.0.6", "@heroicons/react": "2.0.13",
"@supercharge/request-ip": "1.2.0", "@supercharge/request-ip": "1.2.0",
"@svgr/webpack": "6.5.1", "@svgr/webpack": "6.5.1",
"@tanem/react-nprogress": "5.0.22", "@tanem/react-nprogress": "5.0.22",

@ -10,7 +10,7 @@ import useSettings from '@app/hooks/useSettings';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { DownloadIcon } from '@heroicons/react/outline'; import { ArrowDownTrayIcon } from '@heroicons/react/24/outline';
import { MediaStatus } from '@server/constants/media'; import { MediaStatus } from '@server/constants/media';
import type { Collection } from '@server/models/Collection'; import type { Collection } from '@server/models/Collection';
import { uniq } from 'lodash'; import { uniq } from 'lodash';
@ -276,7 +276,7 @@ const CollectionDetails = ({ collection }: CollectionDetailsProps) => {
}} }}
text={ text={
<> <>
<DownloadIcon /> <ArrowDownTrayIcon />
<span> <span>
{intl.formatMessage( {intl.formatMessage(
hasRequestable hasRequestable
@ -295,7 +295,7 @@ const CollectionDetails = ({ collection }: CollectionDetailsProps) => {
setIs4k(true); setIs4k(true);
}} }}
> >
<DownloadIcon /> <ArrowDownTrayIcon />
<span> <span>
{intl.formatMessage(messages.requestcollection4k)} {intl.formatMessage(messages.requestcollection4k)}
</span> </span>

@ -1,8 +1,8 @@
import { import {
ExclamationIcon, ExclamationTriangleIcon,
InformationCircleIcon, InformationCircleIcon,
XCircleIcon, XCircleIcon,
} from '@heroicons/react/solid'; } from '@heroicons/react/24/solid';
interface AlertProps { interface AlertProps {
title?: React.ReactNode; title?: React.ReactNode;
@ -16,7 +16,7 @@ const Alert = ({ title, children, type }: AlertProps) => {
'border border-yellow-500 backdrop-blur bg-yellow-400 bg-opacity-20', 'border border-yellow-500 backdrop-blur bg-yellow-400 bg-opacity-20',
titleColor: 'text-yellow-100', titleColor: 'text-yellow-100',
textColor: 'text-yellow-300', textColor: 'text-yellow-300',
svg: <ExclamationIcon className="h-5 w-5" />, svg: <ExclamationTriangleIcon className="h-5 w-5" />,
}; };
switch (type) { switch (type) {

@ -1,7 +1,7 @@
import useClickOutside from '@app/hooks/useClickOutside'; import useClickOutside from '@app/hooks/useClickOutside';
import { withProperties } from '@app/utils/typeHelpers'; import { withProperties } from '@app/utils/typeHelpers';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { ChevronDownIcon } from '@heroicons/react/solid'; import { ChevronDownIcon } from '@heroicons/react/24/solid';
import type { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'react'; import type { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'react';
import { Fragment, useRef, useState } from 'react'; import { Fragment, useRef, useState } from 'react';

@ -1,4 +1,4 @@
import { EyeIcon, EyeOffIcon } from '@heroicons/react/solid'; import { EyeIcon, EyeSlashIcon } from '@heroicons/react/24/solid';
import { Field } from 'formik'; import { Field } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -43,7 +43,7 @@ const SensitiveInput = ({ as = 'input', ...props }: SensitiveInputProps) => {
type="button" type="button"
className="input-action" className="input-action"
> >
{isHidden ? <EyeOffIcon /> : <EyeIcon />} {isHidden ? <EyeSlashIcon /> : <EyeIcon />}
</button> </button>
</> </>
); );

@ -1,7 +1,7 @@
/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable jsx-a11y/click-events-have-key-events */
import { useLockBodyScroll } from '@app/hooks/useLockBodyScroll'; import { useLockBodyScroll } from '@app/hooks/useLockBodyScroll';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { XIcon } from '@heroicons/react/outline'; import { XMarkIcon } from '@heroicons/react/24/outline';
import { Fragment, useEffect, useRef, useState } from 'react'; import { Fragment, useEffect, useRef, useState } from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
@ -83,7 +83,7 @@ const SlideOver = ({
className="text-gray-200 transition duration-150 ease-in-out hover:text-white" className="text-gray-200 transition duration-150 ease-in-out hover:text-white"
onClick={() => onClose()} onClick={() => onClose()}
> >
<XIcon className="h-6 w-6" /> <XMarkIcon className="h-6 w-6" />
</button> </button>
</div> </div>
</div> </div>

@ -1,9 +1,5 @@
import { import { CheckCircleIcon } from '@heroicons/react/20/solid';
BellIcon, import { BellIcon, ClockIcon, MinusSmallIcon } from '@heroicons/react/24/solid';
CheckIcon,
ClockIcon,
MinusSmIcon,
} from '@heroicons/react/solid';
import { MediaStatus } from '@server/constants/media'; import { MediaStatus } from '@server/constants/media';
interface StatusBadgeMiniProps { interface StatusBadgeMiniProps {
@ -22,7 +18,7 @@ const StatusBadgeMini = ({ status, is4k = false }: StatusBadgeMiniProps) => {
break; break;
case MediaStatus.AVAILABLE: case MediaStatus.AVAILABLE:
badgeStyle.push('bg-green-500 ring-green-400'); badgeStyle.push('bg-green-500 ring-green-400');
indicatorIcon = <CheckIcon />; indicatorIcon = <CheckCircleIcon />;
break; break;
case MediaStatus.PENDING: case MediaStatus.PENDING:
badgeStyle.push('bg-yellow-500 ring-yellow-400'); badgeStyle.push('bg-yellow-500 ring-yellow-400');
@ -30,7 +26,7 @@ const StatusBadgeMini = ({ status, is4k = false }: StatusBadgeMiniProps) => {
break; break;
case MediaStatus.PARTIALLY_AVAILABLE: case MediaStatus.PARTIALLY_AVAILABLE:
badgeStyle.push('bg-green-500 ring-green-400'); badgeStyle.push('bg-green-500 ring-green-400');
indicatorIcon = <MinusSmIcon />; indicatorIcon = <MinusSmallIcon />;
break; break;
} }

@ -1,7 +1,7 @@
import { genreColorMap } from '@app/components/Discover/constants'; import { genreColorMap } from '@app/components/Discover/constants';
import GenreCard from '@app/components/GenreCard'; import GenreCard from '@app/components/GenreCard';
import Slider from '@app/components/Slider'; import Slider from '@app/components/Slider';
import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline';
import type { GenreSliderItem } from '@server/interfaces/api/discoverInterfaces'; import type { GenreSliderItem } from '@server/interfaces/api/discoverInterfaces';
import Link from 'next/link'; import Link from 'next/link';
import React from 'react'; import React from 'react';
@ -28,7 +28,7 @@ const MovieGenreSlider = () => {
<Link href="/discover/movies/genres"> <Link href="/discover/movies/genres">
<a className="slider-title"> <a className="slider-title">
<span>{intl.formatMessage(messages.moviegenres)}</span> <span>{intl.formatMessage(messages.moviegenres)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
</div> </div>

@ -1,7 +1,7 @@
import Slider from '@app/components/Slider'; import Slider from '@app/components/Slider';
import TmdbTitleCard from '@app/components/TitleCard/TmdbTitleCard'; import TmdbTitleCard from '@app/components/TitleCard/TmdbTitleCard';
import { UserType, useUser } from '@app/hooks/useUser'; import { UserType, useUser } from '@app/hooks/useUser';
import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline';
import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces'; import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces';
import Link from 'next/link'; import Link from 'next/link';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
@ -43,7 +43,7 @@ const PlexWatchlistSlider = () => {
<Link href="/discover/watchlist"> <Link href="/discover/watchlist">
<a className="slider-title"> <a className="slider-title">
<span>{intl.formatMessage(messages.plexwatchlist)}</span> <span>{intl.formatMessage(messages.plexwatchlist)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
</div> </div>

@ -1,7 +1,7 @@
import { sliderTitles } from '@app/components/Discover/constants'; import { sliderTitles } from '@app/components/Discover/constants';
import RequestCard from '@app/components/RequestCard'; import RequestCard from '@app/components/RequestCard';
import Slider from '@app/components/Slider'; import Slider from '@app/components/Slider';
import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline';
import type { RequestResultsResponse } from '@server/interfaces/api/requestInterfaces'; import type { RequestResultsResponse } from '@server/interfaces/api/requestInterfaces';
import Link from 'next/link'; import Link from 'next/link';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
@ -27,7 +27,7 @@ const RecentRequestsSlider = () => {
<Link href="/requests?filter=all"> <Link href="/requests?filter=all">
<a className="slider-title"> <a className="slider-title">
<span>{intl.formatMessage(sliderTitles.recentrequests)}</span> <span>{intl.formatMessage(sliderTitles.recentrequests)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
</div> </div>

@ -1,7 +1,7 @@
import { genreColorMap } from '@app/components/Discover/constants'; import { genreColorMap } from '@app/components/Discover/constants';
import GenreCard from '@app/components/GenreCard'; import GenreCard from '@app/components/GenreCard';
import Slider from '@app/components/Slider'; import Slider from '@app/components/Slider';
import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline';
import type { GenreSliderItem } from '@server/interfaces/api/discoverInterfaces'; import type { GenreSliderItem } from '@server/interfaces/api/discoverInterfaces';
import Link from 'next/link'; import Link from 'next/link';
import React from 'react'; import React from 'react';
@ -28,7 +28,7 @@ const TvGenreSlider = () => {
<Link href="/discover/tv/genres"> <Link href="/discover/tv/genres">
<a className="slider-title"> <a className="slider-title">
<span>{intl.formatMessage(messages.tvgenres)}</span> <span>{intl.formatMessage(messages.tvgenres)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
</div> </div>

@ -3,10 +3,10 @@ import { issueOptions } from '@app/components/IssueModal/constants';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import { import {
CalendarIcon, CalendarIcon,
ExclamationIcon, ExclamationTriangleIcon,
EyeIcon, EyeIcon,
UserIcon, UserIcon,
} from '@heroicons/react/solid'; } from '@heroicons/react/24/solid';
import type Issue from '@server/entity/Issue'; import type Issue from '@server/entity/Issue';
import Link from 'next/link'; import Link from 'next/link';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
@ -31,7 +31,7 @@ const IssueBlock = ({ issue }: IssueBlockProps) => {
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div className="mr-6 min-w-0 flex-1 flex-col items-center text-sm leading-5"> <div className="mr-6 min-w-0 flex-1 flex-col items-center text-sm leading-5">
<div className="flex flex-nowrap"> <div className="flex flex-nowrap">
<ExclamationIcon className="mr-1.5 h-5 w-5 flex-shrink-0" /> <ExclamationTriangleIcon className="mr-1.5 h-5 w-5 flex-shrink-0" />
<span className="w-40 truncate md:w-auto"> <span className="w-40 truncate md:w-auto">
{intl.formatMessage(issueOption.name)} {intl.formatMessage(issueOption.name)}
</span> </span>

@ -2,7 +2,7 @@ import Button from '@app/components/Common/Button';
import Modal from '@app/components/Common/Modal'; import Modal from '@app/components/Common/Modal';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import { Menu, Transition } from '@headlessui/react'; import { Menu, Transition } from '@headlessui/react';
import { DotsVerticalIcon } from '@heroicons/react/solid'; import { EllipsisVerticalIcon } from '@heroicons/react/24/solid';
import type { default as IssueCommentType } from '@server/entity/IssueComment'; import type { default as IssueCommentType } from '@server/entity/IssueComment';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
@ -104,7 +104,7 @@ const IssueComment = ({
<div> <div>
<Menu.Button className="flex items-center rounded-full text-gray-400 hover:text-gray-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:ring-offset-gray-100"> <Menu.Button className="flex items-center rounded-full text-gray-400 hover:text-gray-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:ring-offset-gray-100">
<span className="sr-only">Open options</span> <span className="sr-only">Open options</span>
<DotsVerticalIcon <EllipsisVerticalIcon
className="h-5 w-5" className="h-5 w-5"
aria-hidden="true" aria-hidden="true"
/> />

@ -2,7 +2,7 @@ import Button from '@app/components/Common/Button';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { Menu, Transition } from '@headlessui/react'; import { Menu, Transition } from '@headlessui/react';
import { DotsVerticalIcon } from '@heroicons/react/solid'; import { EllipsisVerticalIcon } from '@heroicons/react/24/solid';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
@ -46,7 +46,10 @@ const IssueDescription = ({
<div> <div>
<Menu.Button className="flex items-center rounded-full text-gray-400 hover:text-gray-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:ring-offset-gray-100"> <Menu.Button className="flex items-center rounded-full text-gray-400 hover:text-gray-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:ring-offset-gray-100">
<span className="sr-only">Open options</span> <span className="sr-only">Open options</span>
<DotsVerticalIcon className="h-5 w-5" aria-hidden="true" /> <EllipsisVerticalIcon
className="h-5 w-5"
aria-hidden="true"
/>
</Menu.Button> </Menu.Button>
</div> </div>

@ -13,12 +13,12 @@ import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { import {
ChatIcon, ChatBubbleOvalLeftEllipsisIcon,
CheckCircleIcon, CheckCircleIcon,
PlayIcon, PlayIcon,
ServerIcon, ServerIcon,
} from '@heroicons/react/outline'; } from '@heroicons/react/24/outline';
import { RefreshIcon } from '@heroicons/react/solid'; import { ArrowPathIcon } from '@heroicons/react/24/solid';
import { IssueStatus } from '@server/constants/issue'; import { IssueStatus } from '@server/constants/issue';
import { MediaType } from '@server/constants/media'; import { MediaType } from '@server/constants/media';
import type Issue from '@server/entity/Issue'; import type Issue from '@server/entity/Issue';
@ -510,7 +510,7 @@ const IssueDetails = () => {
} }
}} }}
> >
<RefreshIcon /> <ArrowPathIcon />
<span> <span>
{intl.formatMessage( {intl.formatMessage(
values.message values.message
@ -529,7 +529,7 @@ const IssueDetails = () => {
!isValid || isSubmitting || !values.message !isValid || isSubmitting || !values.message
} }
> >
<ChatIcon /> <ChatBubbleOvalLeftEllipsisIcon />
<span> <span>
{intl.formatMessage(messages.leavecomment)} {intl.formatMessage(messages.leavecomment)}
</span> </span>

@ -4,7 +4,7 @@ import CachedImage from '@app/components/Common/CachedImage';
import { issueOptions } from '@app/components/IssueModal/constants'; import { issueOptions } from '@app/components/IssueModal/constants';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { EyeIcon } from '@heroicons/react/solid'; import { EyeIcon } from '@heroicons/react/24/solid';
import { IssueStatus } from '@server/constants/issue'; import { IssueStatus } from '@server/constants/issue';
import { MediaType } from '@server/constants/media'; import { MediaType } from '@server/constants/media';
import type Issue from '@server/entity/Issue'; import type Issue from '@server/entity/Issue';

@ -6,11 +6,11 @@ import IssueItem from '@app/components/IssueList/IssueItem';
import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams'; import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { import {
BarsArrowDownIcon,
ChevronLeftIcon, ChevronLeftIcon,
ChevronRightIcon, ChevronRightIcon,
FilterIcon, FunnelIcon,
SortDescendingIcon, } from '@heroicons/react/24/solid';
} from '@heroicons/react/solid';
import type { IssueResultsResponse } from '@server/interfaces/api/issueInterfaces'; import type { IssueResultsResponse } from '@server/interfaces/api/issueInterfaces';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
@ -98,7 +98,7 @@ const IssueList = () => {
<div className="mt-2 flex flex-grow flex-col sm:flex-row lg:flex-grow-0"> <div className="mt-2 flex flex-grow flex-col sm:flex-row lg:flex-grow-0">
<div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 lg:flex-grow-0"> <div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 lg:flex-grow-0">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100"> <span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100">
<FilterIcon className="h-6 w-6" /> <FunnelIcon className="h-6 w-6" />
</span> </span>
<select <select
id="filter" id="filter"
@ -128,7 +128,7 @@ const IssueList = () => {
</div> </div>
<div className="mb-2 flex flex-grow sm:mb-0 lg:flex-grow-0"> <div className="mb-2 flex flex-grow sm:mb-0 lg:flex-grow-0">
<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"> <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">
<SortDescendingIcon className="h-6 w-6" /> <BarsArrowDownIcon className="h-6 w-6" />
</span> </span>
<select <select
id="sort" id="sort"

@ -5,7 +5,7 @@ import useSettings from '@app/hooks/useSettings';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { RadioGroup } from '@headlessui/react'; import { RadioGroup } from '@headlessui/react';
import { ArrowCircleRightIcon } from '@heroicons/react/solid'; import { ArrowRightCircleIcon } from '@heroicons/react/24/solid';
import { MediaStatus } from '@server/constants/media'; import { MediaStatus } from '@server/constants/media';
import type Issue from '@server/entity/Issue'; import type Issue from '@server/entity/Issue';
import type { MovieDetails } from '@server/models/Movie'; import type { MovieDetails } from '@server/models/Movie';
@ -121,7 +121,7 @@ const CreateIssueModal = ({
<Link href={`/issues/${newIssue.data.id}`}> <Link href={`/issues/${newIssue.data.id}`}>
<Button as="a" className="mt-4"> <Button as="a" className="mt-4">
<span>{intl.formatMessage(messages.toastviewissue)}</span> <span>{intl.formatMessage(messages.toastviewissue)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</Button> </Button>
</Link> </Link>
</>, </>,

@ -3,7 +3,7 @@ import { availableLanguages } from '@app/context/LanguageContext';
import useClickOutside from '@app/hooks/useClickOutside'; import useClickOutside from '@app/hooks/useClickOutside';
import useLocale from '@app/hooks/useLocale'; import useLocale from '@app/hooks/useLocale';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { TranslateIcon } from '@heroicons/react/solid'; import { LanguageIcon } from '@heroicons/react/24/solid';
import { useRef, useState } from 'react'; import { useRef, useState } from 'react';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
@ -28,7 +28,7 @@ const LanguagePicker = () => {
aria-label="Language Picker" aria-label="Language Picker"
onClick={() => setDropdownOpen(true)} onClick={() => setDropdownOpen(true)}
> >
<TranslateIcon className="h-6 w-6" /> <LanguageIcon className="h-6 w-6" />
</button> </button>
</div> </div>
<Transition <Transition

@ -1,4 +1,4 @@
import { BellIcon } from '@heroicons/react/outline'; import { BellIcon } from '@heroicons/react/24/outline';
const Notifications = () => { const Notifications = () => {
return ( return (

@ -1,6 +1,6 @@
import useSearchInput from '@app/hooks/useSearchInput'; import useSearchInput from '@app/hooks/useSearchInput';
import { XCircleIcon } from '@heroicons/react/outline'; import { XCircleIcon } from '@heroicons/react/24/outline';
import { SearchIcon } from '@heroicons/react/solid'; import { MagnifyingGlassIcon } from '@heroicons/react/24/solid';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
const messages = defineMessages({ const messages = defineMessages({
@ -18,7 +18,7 @@ const SearchInput = () => {
</label> </label>
<div className="relative flex w-full items-center text-white focus-within:text-gray-200"> <div className="relative flex w-full items-center text-white focus-within:text-gray-200">
<div className="pointer-events-none absolute inset-y-0 left-4 flex items-center"> <div className="pointer-events-none absolute inset-y-0 left-4 flex items-center">
<SearchIcon className="h-5 w-5" /> <MagnifyingGlassIcon className="h-5 w-5" />
</div> </div>
<input <input
id="search_field" id="search_field"

@ -5,11 +5,11 @@ import { Transition } from '@headlessui/react';
import { import {
ClockIcon, ClockIcon,
CogIcon, CogIcon,
ExclamationIcon, ExclamationTriangleIcon,
SparklesIcon, SparklesIcon,
UsersIcon, UsersIcon,
XIcon, XMarkIcon,
} from '@heroicons/react/outline'; } from '@heroicons/react/24/outline';
import Link from 'next/link'; import Link from 'next/link';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { Fragment, useRef } from 'react'; import { Fragment, useRef } from 'react';
@ -56,7 +56,7 @@ const SidebarLinks: SidebarLinkProps[] = [
href: '/issues', href: '/issues',
messagesKey: 'issues', messagesKey: 'issues',
svgIcon: ( svgIcon: (
<ExclamationIcon className="mr-3 h-6 w-6 text-gray-300 transition duration-150 ease-in-out group-hover:text-gray-100 group-focus:text-gray-300" /> <ExclamationTriangleIcon className="mr-3 h-6 w-6 text-gray-300 transition duration-150 ease-in-out group-hover:text-gray-100 group-focus:text-gray-300" />
), ),
activeRegExp: /^\/issues/, activeRegExp: /^\/issues/,
requiredPermission: [ requiredPermission: [
@ -126,7 +126,7 @@ const Sidebar = ({ open, setClosed }: SidebarProps) => {
aria-label="Close sidebar" aria-label="Close sidebar"
onClick={() => setClosed()} onClick={() => setClosed()}
> >
<XIcon className="h-6 w-6 text-white" /> <XMarkIcon className="h-6 w-6 text-white" />
</button> </button>
</div> </div>
<div <div

@ -1,8 +1,11 @@
import MiniQuotaDisplay from '@app/components/Layout/UserDropdown/MiniQuotaDisplay'; import MiniQuotaDisplay from '@app/components/Layout/UserDropdown/MiniQuotaDisplay';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import { Menu, Transition } from '@headlessui/react'; import { Menu, Transition } from '@headlessui/react';
import { ClockIcon, LogoutIcon } from '@heroicons/react/outline'; import {
import { CogIcon, UserIcon } from '@heroicons/react/solid'; ArrowRightOnRectangleIcon,
ClockIcon,
} from '@heroicons/react/24/outline';
import { CogIcon, UserIcon } from '@heroicons/react/24/solid';
import axios from 'axios'; import axios from 'axios';
import type { LinkProps } from 'next/link'; import type { LinkProps } from 'next/link';
import Link from 'next/link'; import Link from 'next/link';
@ -147,7 +150,7 @@ const UserDropdown = () => {
}`} }`}
onClick={() => logout()} onClick={() => logout()}
> >
<LogoutIcon className="mr-2 inline h-5 w-5" /> <ArrowRightOnRectangleIcon className="mr-2 inline h-5 w-5" />
<span>{intl.formatMessage(messages.signout)}</span> <span>{intl.formatMessage(messages.signout)}</span>
</a> </a>
)} )}

@ -1,9 +1,9 @@
import { import {
ArrowCircleUpIcon, ArrowUpCircleIcon,
BeakerIcon, BeakerIcon,
CodeIcon, CodeBracketIcon,
ServerIcon, ServerIcon,
} from '@heroicons/react/outline'; } from '@heroicons/react/24/outline';
import type { StatusResponse } from '@server/interfaces/api/settingsInterfaces'; import type { StatusResponse } from '@server/interfaces/api/settingsInterfaces';
import Link from 'next/link'; import Link from 'next/link';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
@ -56,7 +56,7 @@ const VersionStatus = ({ onClick }: VersionStatusProps) => {
}`} }`}
> >
{data.commitTag === 'local' ? ( {data.commitTag === 'local' ? (
<CodeIcon className="h-6 w-6" /> <CodeBracketIcon className="h-6 w-6" />
) : data.version.startsWith('develop-') ? ( ) : data.version.startsWith('develop-') ? (
<BeakerIcon className="h-6 w-6" /> <BeakerIcon className="h-6 w-6" />
) : ( ) : (
@ -80,7 +80,7 @@ const VersionStatus = ({ onClick }: VersionStatusProps) => {
)} )}
</span> </span>
</div> </div>
{data.updateAvailable && <ArrowCircleUpIcon className="h-6 w-6" />} {data.updateAvailable && <ArrowUpCircleIcon className="h-6 w-6" />}
</a> </a>
</Link> </Link>
); );

@ -6,8 +6,8 @@ import type { AvailableLocale } from '@app/context/LanguageContext';
import useLocale from '@app/hooks/useLocale'; import useLocale from '@app/hooks/useLocale';
import useSettings from '@app/hooks/useSettings'; import useSettings from '@app/hooks/useSettings';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import { MenuAlt2Icon } from '@heroicons/react/outline'; import { Bars3BottomLeftIcon } from '@heroicons/react/24/outline';
import { ArrowLeftIcon } from '@heroicons/react/solid'; import { ArrowLeftIcon } from '@heroicons/react/24/solid';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
@ -76,7 +76,7 @@ const Layout = ({ children }: LayoutProps) => {
onClick={() => setSidebarOpen(true)} onClick={() => setSidebarOpen(true)}
data-testid="sidebar-toggle" data-testid="sidebar-toggle"
> >
<MenuAlt2Icon className="h-6 w-6" /> <Bars3BottomLeftIcon className="h-6 w-6" />
</button> </button>
<div className="flex flex-1 items-center justify-between pr-4 md:pr-4 md:pl-4"> <div className="flex flex-1 items-center justify-between pr-4 md:pr-4 md:pl-4">
<button <button

@ -1,7 +1,10 @@
import Button from '@app/components/Common/Button'; import Button from '@app/components/Common/Button';
import SensitiveInput from '@app/components/Common/SensitiveInput'; import SensitiveInput from '@app/components/Common/SensitiveInput';
import useSettings from '@app/hooks/useSettings'; import useSettings from '@app/hooks/useSettings';
import { LoginIcon, SupportIcon } from '@heroicons/react/outline'; import {
ArrowLeftOnRectangleIcon,
LifebuoyIcon,
} from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import Link from 'next/link'; import Link from 'next/link';
@ -121,7 +124,7 @@ const LocalLogin = ({ revalidate }: LocalLoginProps) => {
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
data-testid="local-signin-button" data-testid="local-signin-button"
> >
<LoginIcon /> <ArrowLeftOnRectangleIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(messages.signingin) ? intl.formatMessage(messages.signingin)
@ -133,7 +136,7 @@ const LocalLogin = ({ revalidate }: LocalLoginProps) => {
<span className="inline-flex rounded-md shadow-sm"> <span className="inline-flex rounded-md shadow-sm">
<Link href="/resetpassword" passHref> <Link href="/resetpassword" passHref>
<Button as="a" buttonType="ghost"> <Button as="a" buttonType="ghost">
<SupportIcon /> <LifebuoyIcon />
<span> <span>
{intl.formatMessage(messages.forgotpassword)} {intl.formatMessage(messages.forgotpassword)}
</span> </span>

@ -7,7 +7,7 @@ import PlexLoginButton from '@app/components/PlexLoginButton';
import useSettings from '@app/hooks/useSettings'; import useSettings from '@app/hooks/useSettings';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { XCircleIcon } from '@heroicons/react/solid'; import { XCircleIcon } from '@heroicons/react/24/solid';
import axios from 'axios'; import axios from 'axios';
import { useRouter } from 'next/dist/client/router'; import { useRouter } from 'next/dist/client/router';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';

@ -7,8 +7,8 @@ import RequestBlock from '@app/components/RequestBlock';
import useSettings from '@app/hooks/useSettings'; import useSettings from '@app/hooks/useSettings';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { ServerIcon, ViewListIcon } from '@heroicons/react/outline'; import { Bars4Icon, ServerIcon } from '@heroicons/react/24/outline';
import { CheckCircleIcon, DocumentRemoveIcon } from '@heroicons/react/solid'; import { CheckCircleIcon, DocumentMinusIcon } from '@heroicons/react/24/solid';
import { IssueStatus } from '@server/constants/issue'; import { IssueStatus } from '@server/constants/issue';
import { MediaRequestStatus, MediaStatus } from '@server/constants/media'; import { MediaRequestStatus, MediaStatus } from '@server/constants/media';
import type { MediaWatchDataResponse } from '@server/interfaces/api/mediaInterfaces'; import type { MediaWatchDataResponse } from '@server/interfaces/api/mediaInterfaces';
@ -297,7 +297,7 @@ const ManageSlideOver = ({
watchData?.data ? 'rounded-t-none' : '' watchData?.data ? 'rounded-t-none' : ''
}`} }`}
> >
<ViewListIcon /> <Bars4Icon />
<span> <span>
{intl.formatMessage(messages.opentautulli)} {intl.formatMessage(messages.opentautulli)}
</span> </span>
@ -418,7 +418,7 @@ const ManageSlideOver = ({
watchData?.data4k ? 'rounded-t-none' : '' watchData?.data4k ? 'rounded-t-none' : ''
}`} }`}
> >
<ViewListIcon /> <Bars4Icon />
<span> <span>
{intl.formatMessage(messages.opentautulli)} {intl.formatMessage(messages.opentautulli)}
</span> </span>
@ -492,7 +492,7 @@ const ManageSlideOver = ({
confirmText={intl.formatMessage(globalMessages.areyousure)} confirmText={intl.formatMessage(globalMessages.areyousure)}
className="w-full" className="w-full"
> >
<DocumentRemoveIcon /> <DocumentMinusIcon />
<span> <span>
{intl.formatMessage(messages.manageModalClearMedia)} {intl.formatMessage(messages.manageModalClearMedia)}
</span> </span>

@ -1,5 +1,5 @@
import TitleCard from '@app/components/TitleCard'; import TitleCard from '@app/components/TitleCard';
import { ArrowCircleRightIcon } from '@heroicons/react/solid'; import { ArrowRightCircleIcon } from '@heroicons/react/24/solid';
import Link from 'next/link'; import Link from 'next/link';
import { useState } from 'react'; import { useState } from 'react';
import { useInView } from 'react-intersection-observer'; import { useInView } from 'react-intersection-observer';
@ -94,7 +94,7 @@ const ShowMoreCard = ({ url, posters }: ShowMoreCardProps) => {
)} )}
</div> </div>
<div className="absolute inset-0 z-20 flex flex-col items-center justify-center text-white"> <div className="absolute inset-0 z-20 flex flex-col items-center justify-center text-white">
<ArrowCircleRightIcon className="w-14" /> <ArrowRightCircleIcon className="w-14" />
<div className="mt-2 font-extrabold"> <div className="mt-2 font-extrabold">
{intl.formatMessage(messages.seemore)} {intl.formatMessage(messages.seemore)}
</div> </div>

@ -3,7 +3,7 @@ import PersonCard from '@app/components/PersonCard';
import Slider from '@app/components/Slider'; import Slider from '@app/components/Slider';
import TitleCard from '@app/components/TitleCard'; import TitleCard from '@app/components/TitleCard';
import useSettings from '@app/hooks/useSettings'; import useSettings from '@app/hooks/useSettings';
import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline';
import { MediaStatus } from '@server/constants/media'; import { MediaStatus } from '@server/constants/media';
import type { import type {
MovieResult, MovieResult,
@ -151,7 +151,7 @@ const MediaSlider = ({
<Link href={linkUrl}> <Link href={linkUrl}>
<a className="slider-title"> <a className="slider-title">
<span>{title}</span> <span>{title}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
) : ( ) : (

@ -26,18 +26,18 @@ import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { sortCrewPriority } from '@app/utils/creditHelpers'; import { sortCrewPriority } from '@app/utils/creditHelpers';
import { import {
ArrowCircleRightIcon, ArrowRightCircleIcon,
CloudIcon, CloudIcon,
CogIcon, CogIcon,
ExclamationIcon, ExclamationTriangleIcon,
FilmIcon, FilmIcon,
PlayIcon, PlayIcon,
TicketIcon, TicketIcon,
} from '@heroicons/react/outline'; } from '@heroicons/react/24/outline';
import { import {
ChevronDoubleDownIcon, ChevronDoubleDownIcon,
ChevronDoubleUpIcon, ChevronDoubleUpIcon,
} from '@heroicons/react/solid'; } from '@heroicons/react/24/solid';
import type { RTRating } from '@server/api/rottentomatoes'; import type { RTRating } from '@server/api/rottentomatoes';
import { IssueStatus } from '@server/constants/issue'; import { IssueStatus } from '@server/constants/issue';
import { MediaStatus } from '@server/constants/media'; import { MediaStatus } from '@server/constants/media';
@ -389,7 +389,7 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
onClick={() => setShowIssueModal(true)} onClick={() => setShowIssueModal(true)}
className="ml-2 first:ml-0" className="ml-2 first:ml-0"
> >
<ExclamationIcon /> <ExclamationTriangleIcon />
</Button> </Button>
</Tooltip> </Tooltip>
)} )}
@ -447,7 +447,7 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
<Link href={`/movie/${data.id}/crew`}> <Link href={`/movie/${data.id}/crew`}>
<a className="flex items-center text-gray-400 transition duration-300 hover:text-gray-100"> <a className="flex items-center text-gray-400 transition duration-300 hover:text-gray-100">
<span>{intl.formatMessage(messages.viewfullcrew)}</span> <span>{intl.formatMessage(messages.viewfullcrew)}</span>
<ArrowCircleRightIcon className="ml-1.5 inline-block h-5 w-5" /> <ArrowRightCircleIcon className="ml-1.5 inline-block h-5 w-5" />
</a> </a>
</Link> </Link>
</div> </div>
@ -785,7 +785,7 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
<Link href="/movie/[movieId]/cast" as={`/movie/${data.id}/cast`}> <Link href="/movie/[movieId]/cast" as={`/movie/${data.id}/cast`}>
<a className="slider-title"> <a className="slider-title">
<span>{intl.formatMessage(messages.cast)}</span> <span>{intl.formatMessage(messages.cast)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
</div> </div>

@ -1,5 +1,5 @@
import CachedImage from '@app/components/Common/CachedImage'; import CachedImage from '@app/components/Common/CachedImage';
import { UserCircleIcon } from '@heroicons/react/solid'; import { UserCircleIcon } from '@heroicons/react/24/solid';
import Link from 'next/link'; import Link from 'next/link';
import { useState } from 'react'; import { useState } from 'react';

@ -1,6 +1,6 @@
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import PlexOAuth from '@app/utils/plex'; import PlexOAuth from '@app/utils/plex';
import { LoginIcon } from '@heroicons/react/outline'; import { ArrowLeftOnRectangleIcon } from '@heroicons/react/24/outline';
import { useState } from 'react'; import { useState } from 'react';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
@ -49,7 +49,7 @@ const PlexLoginButton = ({
disabled={loading || isProcessing} disabled={loading || isProcessing}
className="plex-button" className="plex-button"
> >
<LoginIcon /> <ArrowLeftOnRectangleIcon />
<span> <span>
{loading {loading
? intl.formatMessage(globalMessages.loading) ? intl.formatMessage(globalMessages.loading)

@ -1,4 +1,4 @@
import { RefreshIcon } from '@heroicons/react/outline'; import { ArrowPathIcon } from '@heroicons/react/24/outline';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import PR from 'pulltorefreshjs'; import PR from 'pulltorefreshjs';
import { useEffect } from 'react'; import { useEffect } from 'react';
@ -15,7 +15,7 @@ const PullToRefresh = () => {
}, },
iconArrow: ReactDOMServer.renderToString( iconArrow: ReactDOMServer.renderToString(
<div className="p-2"> <div className="p-2">
<RefreshIcon className="z-50 m-auto h-9 w-9 rounded-full border-4 border-gray-800 bg-gray-800 text-indigo-500 ring-1 ring-gray-700" /> <ArrowPathIcon className="z-50 m-auto h-9 w-9 rounded-full border-4 border-gray-800 bg-gray-800 text-indigo-500 ring-1 ring-gray-700" />
</div> </div>
), ),
iconRefreshing: ReactDOMServer.renderToString( iconRefreshing: ReactDOMServer.renderToString(
@ -23,7 +23,7 @@ const PullToRefresh = () => {
className="animate-spin p-2" className="animate-spin p-2"
style={{ animationDirection: 'reverse' }} style={{ animationDirection: 'reverse' }}
> >
<RefreshIcon className="z-50 m-auto h-9 w-9 rounded-full border-4 border-gray-800 bg-gray-800 text-indigo-500 ring-1 ring-gray-700" /> <ArrowPathIcon className="z-50 m-auto h-9 w-9 rounded-full border-4 border-gray-800 bg-gray-800 text-indigo-500 ring-1 ring-gray-700" />
</div> </div>
), ),
instructionsPullToRefresh: ReactDOMServer.renderToString(<div />), instructionsPullToRefresh: ReactDOMServer.renderToString(<div />),

@ -1,6 +1,6 @@
import useSettings from '@app/hooks/useSettings'; import useSettings from '@app/hooks/useSettings';
import { Listbox, Transition } from '@headlessui/react'; import { Listbox, Transition } from '@headlessui/react';
import { CheckIcon, ChevronDownIcon } from '@heroicons/react/solid'; import { CheckIcon, ChevronDownIcon } from '@heroicons/react/24/solid';
import type { Region } from '@server/lib/settings'; import type { Region } from '@server/lib/settings';
import { hasFlag } from 'country-flag-icons'; import { hasFlag } from 'country-flag-icons';
import 'country-flag-icons/3x2/flags.css'; import 'country-flag-icons/3x2/flags.css';

@ -12,8 +12,8 @@ import {
PencilIcon, PencilIcon,
TrashIcon, TrashIcon,
UserIcon, UserIcon,
XIcon, XMarkIcon,
} from '@heroicons/react/solid'; } from '@heroicons/react/24/solid';
import { MediaRequestStatus } from '@server/constants/media'; import { MediaRequestStatus } from '@server/constants/media';
import type { MediaRequest } from '@server/entity/MediaRequest'; import type { MediaRequest } from '@server/entity/MediaRequest';
import axios from 'axios'; import axios from 'axios';
@ -149,7 +149,7 @@ const RequestBlock = ({ request, onUpdate }: RequestBlockProps) => {
onClick={() => updateRequest('decline')} onClick={() => updateRequest('decline')}
disabled={isUpdating} disabled={isUpdating}
> >
<XIcon /> <XMarkIcon />
</Button> </Button>
</Tooltip> </Tooltip>
<Tooltip content={intl.formatMessage(messages.edit)}> <Tooltip content={intl.formatMessage(messages.edit)}>

@ -3,12 +3,12 @@ import RequestModal from '@app/components/RequestModal';
import useSettings from '@app/hooks/useSettings'; import useSettings from '@app/hooks/useSettings';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { DownloadIcon } from '@heroicons/react/outline'; import { ArrowDownTrayIcon } from '@heroicons/react/24/outline';
import { import {
CheckIcon, CheckIcon,
InformationCircleIcon, InformationCircleIcon,
XIcon, XMarkIcon,
} from '@heroicons/react/solid'; } from '@heroicons/react/24/solid';
import { MediaRequestStatus, MediaStatus } from '@server/constants/media'; import { MediaRequestStatus, MediaStatus } from '@server/constants/media';
import type Media from '@server/entity/Media'; import type Media from '@server/entity/Media';
import type { MediaRequest } from '@server/entity/MediaRequest'; import type { MediaRequest } from '@server/entity/MediaRequest';
@ -158,7 +158,7 @@ const RequestButton = ({
action: () => { action: () => {
modifyRequest(activeRequest, 'decline'); modifyRequest(activeRequest, 'decline');
}, },
svg: <XIcon />, svg: <XMarkIcon />,
} }
); );
} else if ( } else if (
@ -186,7 +186,7 @@ const RequestButton = ({
action: () => { action: () => {
modifyRequests(activeRequests, 'decline'); modifyRequests(activeRequests, 'decline');
}, },
svg: <XIcon />, svg: <XMarkIcon />,
} }
); );
} }
@ -228,7 +228,7 @@ const RequestButton = ({
action: () => { action: () => {
modifyRequest(active4kRequest, 'decline'); modifyRequest(active4kRequest, 'decline');
}, },
svg: <XIcon />, svg: <XMarkIcon />,
} }
); );
} else if ( } else if (
@ -256,7 +256,7 @@ const RequestButton = ({
action: () => { action: () => {
modifyRequests(active4kRequests, 'decline'); modifyRequests(active4kRequests, 'decline');
}, },
svg: <XIcon />, svg: <XMarkIcon />,
} }
); );
} }
@ -282,7 +282,7 @@ const RequestButton = ({
setEditRequest(false); setEditRequest(false);
setShowRequestModal(true); setShowRequestModal(true);
}, },
svg: <DownloadIcon />, svg: <ArrowDownTrayIcon />,
}); });
} else if ( } else if (
mediaType === 'tv' && mediaType === 'tv' &&
@ -301,7 +301,7 @@ const RequestButton = ({
setEditRequest(false); setEditRequest(false);
setShowRequestModal(true); setShowRequestModal(true);
}, },
svg: <DownloadIcon />, svg: <ArrowDownTrayIcon />,
}); });
} }
@ -327,7 +327,7 @@ const RequestButton = ({
setEditRequest(false); setEditRequest(false);
setShowRequest4kModal(true); setShowRequest4kModal(true);
}, },
svg: <DownloadIcon />, svg: <ArrowDownTrayIcon />,
}); });
} else if ( } else if (
mediaType === 'tv' && mediaType === 'tv' &&
@ -347,7 +347,7 @@ const RequestButton = ({
setEditRequest(false); setEditRequest(false);
setShowRequest4kModal(true); setShowRequest4kModal(true);
}, },
svg: <DownloadIcon />, svg: <ArrowDownTrayIcon />,
}); });
} }

@ -9,12 +9,12 @@ import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { withProperties } from '@app/utils/typeHelpers'; import { withProperties } from '@app/utils/typeHelpers';
import { import {
ArrowPathIcon,
CheckIcon, CheckIcon,
PencilIcon, PencilIcon,
RefreshIcon,
TrashIcon, TrashIcon,
XIcon, XMarkIcon,
} from '@heroicons/react/solid'; } from '@heroicons/react/24/solid';
import { MediaRequestStatus } from '@server/constants/media'; import { MediaRequestStatus } from '@server/constants/media';
import type { MediaRequest } from '@server/entity/MediaRequest'; import type { MediaRequest } from '@server/entity/MediaRequest';
import type { MovieDetails } from '@server/models/Movie'; import type { MovieDetails } from '@server/models/Movie';
@ -441,7 +441,7 @@ const RequestCard = ({ request, onTitleData }: RequestCardProps) => {
disabled={isRetrying} disabled={isRetrying}
onClick={() => retryRequest()} onClick={() => retryRequest()}
> >
<RefreshIcon <ArrowPathIcon
className={isRetrying ? 'animate-spin' : ''} className={isRetrying ? 'animate-spin' : ''}
style={{ marginRight: '0', animationDirection: 'reverse' }} style={{ marginRight: '0', animationDirection: 'reverse' }}
/> />
@ -483,7 +483,7 @@ const RequestCard = ({ request, onTitleData }: RequestCardProps) => {
className="hidden sm:block" className="hidden sm:block"
onClick={() => modifyRequest('decline')} onClick={() => modifyRequest('decline')}
> >
<XIcon /> <XMarkIcon />
<span>{intl.formatMessage(globalMessages.decline)}</span> <span>{intl.formatMessage(globalMessages.decline)}</span>
</Button> </Button>
<Tooltip <Tooltip
@ -495,7 +495,7 @@ const RequestCard = ({ request, onTitleData }: RequestCardProps) => {
className="sm:hidden" className="sm:hidden"
onClick={() => modifyRequest('decline')} onClick={() => modifyRequest('decline')}
> >
<XIcon /> <XMarkIcon />
</Button> </Button>
</Tooltip> </Tooltip>
</div> </div>
@ -540,7 +540,7 @@ const RequestCard = ({ request, onTitleData }: RequestCardProps) => {
className="hidden sm:block" className="hidden sm:block"
onClick={() => deleteRequest()} onClick={() => deleteRequest()}
> >
<XIcon /> <XMarkIcon />
<span>{intl.formatMessage(globalMessages.cancel)}</span> <span>{intl.formatMessage(globalMessages.cancel)}</span>
</Button> </Button>
<Tooltip content={intl.formatMessage(messages.cancelrequest)}> <Tooltip content={intl.formatMessage(messages.cancelrequest)}>
@ -550,7 +550,7 @@ const RequestCard = ({ request, onTitleData }: RequestCardProps) => {
className="sm:hidden" className="sm:hidden"
onClick={() => deleteRequest()} onClick={() => deleteRequest()}
> >
<XIcon /> <XMarkIcon />
</Button> </Button>
</Tooltip> </Tooltip>
</div> </div>

@ -8,12 +8,12 @@ import useDeepLinks from '@app/hooks/useDeepLinks';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { import {
ArrowPathIcon,
CheckIcon, CheckIcon,
PencilIcon, PencilIcon,
RefreshIcon,
TrashIcon, TrashIcon,
XIcon, XMarkIcon,
} from '@heroicons/react/solid'; } from '@heroicons/react/24/solid';
import { MediaRequestStatus } from '@server/constants/media'; import { MediaRequestStatus } from '@server/constants/media';
import type { MediaRequest } from '@server/entity/MediaRequest'; import type { MediaRequest } from '@server/entity/MediaRequest';
import type { MovieDetails } from '@server/models/Movie'; import type { MovieDetails } from '@server/models/Movie';
@ -601,7 +601,7 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => {
disabled={isRetrying} disabled={isRetrying}
onClick={() => retryRequest()} onClick={() => retryRequest()}
> >
<RefreshIcon <ArrowPathIcon
className={isRetrying ? 'animate-spin' : ''} className={isRetrying ? 'animate-spin' : ''}
style={{ animationDirection: 'reverse' }} style={{ animationDirection: 'reverse' }}
/> />
@ -642,7 +642,7 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => {
buttonType="danger" buttonType="danger"
onClick={() => modifyRequest('decline')} onClick={() => modifyRequest('decline')}
> >
<XIcon /> <XMarkIcon />
<span>{intl.formatMessage(globalMessages.decline)}</span> <span>{intl.formatMessage(globalMessages.decline)}</span>
</Button> </Button>
</span> </span>
@ -672,7 +672,7 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => {
confirmText={intl.formatMessage(globalMessages.areyousure)} confirmText={intl.formatMessage(globalMessages.areyousure)}
className="w-full" className="w-full"
> >
<XIcon /> <XMarkIcon />
<span>{intl.formatMessage(messages.cancelRequest)}</span> <span>{intl.formatMessage(messages.cancelRequest)}</span>
</ConfirmButton> </ConfirmButton>
)} )}

@ -7,11 +7,11 @@ import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { import {
BarsArrowDownIcon,
ChevronLeftIcon, ChevronLeftIcon,
ChevronRightIcon, ChevronRightIcon,
FilterIcon, FunnelIcon,
SortDescendingIcon, } from '@heroicons/react/24/solid';
} from '@heroicons/react/solid';
import type { RequestResultsResponse } from '@server/interfaces/api/requestInterfaces'; import type { RequestResultsResponse } from '@server/interfaces/api/requestInterfaces';
import Link from 'next/link'; import Link from 'next/link';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
@ -139,7 +139,7 @@ const RequestList = () => {
<div className="mt-2 flex flex-grow flex-col sm:flex-row lg:flex-grow-0"> <div className="mt-2 flex flex-grow flex-col sm:flex-row lg:flex-grow-0">
<div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 lg:flex-grow-0"> <div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 lg:flex-grow-0">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100"> <span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100">
<FilterIcon className="h-6 w-6" /> <FunnelIcon className="h-6 w-6" />
</span> </span>
<select <select
id="filter" id="filter"
@ -181,7 +181,7 @@ const RequestList = () => {
</div> </div>
<div className="mb-2 flex flex-grow sm:mb-0 lg:flex-grow-0"> <div className="mb-2 flex flex-grow sm:mb-0 lg:flex-grow-0">
<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"> <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">
<SortDescendingIcon className="h-6 w-6" /> <BarsArrowDownIcon className="h-6 w-6" />
</span> </span>
<select <select
id="sort" id="sort"

@ -5,7 +5,7 @@ import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { formatBytes } from '@app/utils/numberHelpers'; import { formatBytes } from '@app/utils/numberHelpers';
import { Listbox, Transition } from '@headlessui/react'; import { Listbox, Transition } from '@headlessui/react';
import { CheckIcon, ChevronDownIcon } from '@heroicons/react/solid'; import { CheckIcon, ChevronDownIcon } from '@heroicons/react/24/solid';
import type { import type {
ServiceCommonServer, ServiceCommonServer,
ServiceCommonServerWithDetails, ServiceCommonServerWithDetails,

@ -1,5 +1,5 @@
import ProgressCircle from '@app/components/Common/ProgressCircle'; import ProgressCircle from '@app/components/Common/ProgressCircle';
import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/solid'; import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/solid';
import type { QuotaStatus } from '@server/interfaces/api/userInterfaces'; import type { QuotaStatus } from '@server/interfaces/api/userInterfaces';
import Link from 'next/link'; import Link from 'next/link';
import { useState } from 'react'; import { useState } from 'react';

@ -2,7 +2,7 @@ import Button from '@app/components/Common/Button';
import ImageFader from '@app/components/Common/ImageFader'; import ImageFader from '@app/components/Common/ImageFader';
import PageTitle from '@app/components/Common/PageTitle'; import PageTitle from '@app/components/Common/PageTitle';
import LanguagePicker from '@app/components/Layout/LanguagePicker'; import LanguagePicker from '@app/components/Layout/LanguagePicker';
import { ArrowLeftIcon, MailIcon } from '@heroicons/react/solid'; import { ArrowLeftIcon, EnvelopeIcon } from '@heroicons/react/24/solid';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import Link from 'next/link'; import Link from 'next/link';
@ -128,7 +128,7 @@ const ResetPassword = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<MailIcon /> <EnvelopeIcon />
<span> <span>
{intl.formatMessage(messages.emailresetlink)} {intl.formatMessage(messages.emailresetlink)}
</span> </span>

@ -3,7 +3,7 @@ import ImageFader from '@app/components/Common/ImageFader';
import SensitiveInput from '@app/components/Common/SensitiveInput'; import SensitiveInput from '@app/components/Common/SensitiveInput';
import LanguagePicker from '@app/components/Layout/LanguagePicker'; import LanguagePicker from '@app/components/Layout/LanguagePicker';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { SupportIcon } from '@heroicons/react/outline'; import { LifebuoyIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Form, Formik } from 'formik'; import { Form, Formik } from 'formik';
import Link from 'next/link'; import Link from 'next/link';
@ -168,7 +168,7 @@ const ResetPassword = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SupportIcon /> <LifebuoyIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -1,4 +1,4 @@
import { ClipboardCopyIcon } from '@heroicons/react/solid'; import { ClipboardDocumentIcon } from '@heroicons/react/24/solid';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
import { useToasts } from 'react-toast-notifications'; import { useToasts } from 'react-toast-notifications';
@ -32,7 +32,7 @@ const CopyButton = ({ textToCopy }: { textToCopy: string }) => {
}} }}
className="input-action" className="input-action"
> >
<ClipboardCopyIcon /> <ClipboardDocumentIcon />
</button> </button>
); );
}; };

@ -1,4 +1,4 @@
import { CheckIcon, XIcon } from '@heroicons/react/solid'; import { CheckIcon, XMarkIcon } from '@heroicons/react/24/solid';
interface LibraryItemProps { interface LibraryItemProps {
isEnabled?: boolean; isEnabled?: boolean;
@ -41,7 +41,7 @@ const LibraryItem = ({ isEnabled, name, onToggle }: LibraryItemProps) => {
: 'opacity-100 duration-200 ease-in' : 'opacity-100 duration-200 ease-in'
} absolute inset-0 flex h-full w-full items-center justify-center transition-opacity`} } absolute inset-0 flex h-full w-full items-center justify-center transition-opacity`}
> >
<XIcon className="h-3 w-3 text-gray-400" /> <XMarkIcon className="h-3 w-3 text-gray-400" />
</span> </span>
<span <span
className={`${ className={`${

@ -3,7 +3,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import useSettings from '@app/hooks/useSettings'; import useSettings from '@app/hooks/useSettings';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -295,7 +295,7 @@ const NotificationsDiscord = () => {
(values.enabled && !values.types) (values.enabled && !values.types)
} }
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -3,7 +3,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import SensitiveInput from '@app/components/Common/SensitiveInput'; import SensitiveInput from '@app/components/Common/SensitiveInput';
import SettingsBadge from '@app/components/Settings/SettingsBadge'; import SettingsBadge from '@app/components/Settings/SettingsBadge';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -460,7 +460,7 @@ const NotificationsEmail = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid || isTesting} disabled={isSubmitting || !isValid || isTesting}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -2,7 +2,7 @@ import Button from '@app/components/Common/Button';
import LoadingSpinner from '@app/components/Common/LoadingSpinner'; import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/solid'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/solid';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -242,7 +242,7 @@ const NotificationsGotify = () => {
(values.enabled && !values.types) (values.enabled && !values.types)
} }
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -2,7 +2,7 @@ import Button from '@app/components/Common/Button';
import LoadingSpinner from '@app/components/Common/LoadingSpinner'; import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -247,7 +247,7 @@ const NotificationsLunaSea = () => {
(values.enabled && !values.types) (values.enabled && !values.types)
} }
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -3,7 +3,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import SensitiveInput from '@app/components/Common/SensitiveInput'; import SensitiveInput from '@app/components/Common/SensitiveInput';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -239,7 +239,7 @@ const NotificationsPushbullet = () => {
(values.enabled && !values.types) (values.enabled && !values.types)
} }
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -2,7 +2,7 @@ import Button from '@app/components/Common/Button';
import LoadingSpinner from '@app/components/Common/LoadingSpinner'; import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -272,7 +272,7 @@ const NotificationsPushover = () => {
(values.enabled && !values.types) (values.enabled && !values.types)
} }
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -2,7 +2,7 @@ import Button from '@app/components/Common/Button';
import LoadingSpinner from '@app/components/Common/LoadingSpinner'; import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -225,7 +225,7 @@ const NotificationsSlack = () => {
(values.enabled && !values.types) (values.enabled && !values.types)
} }
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -3,7 +3,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import SensitiveInput from '@app/components/Common/SensitiveInput'; import SensitiveInput from '@app/components/Common/SensitiveInput';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useState } from 'react'; import { useState } from 'react';
@ -321,7 +321,7 @@ const NotificationsTelegram = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid || isTesting} disabled={isSubmitting || !isValid || isTesting}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -2,7 +2,7 @@ import Alert from '@app/components/Common/Alert';
import Button from '@app/components/Common/Button'; import Button from '@app/components/Common/Button';
import LoadingSpinner from '@app/components/Common/LoadingSpinner'; import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
@ -149,7 +149,7 @@ const NotificationsWebPush = () => {
type="submit" type="submit"
disabled={isSubmitting || isTesting} disabled={isSubmitting || isTesting}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -2,8 +2,11 @@ import Button from '@app/components/Common/Button';
import LoadingSpinner from '@app/components/Common/LoadingSpinner'; import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
import { QuestionMarkCircleIcon, RefreshIcon } from '@heroicons/react/solid'; import {
ArrowPathIcon,
QuestionMarkCircleIcon,
} from '@heroicons/react/24/solid';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import dynamic from 'next/dynamic'; import dynamic from 'next/dynamic';
@ -291,7 +294,7 @@ const NotificationsWebhook = () => {
}} }}
className="mr-2" className="mr-2"
> >
<RefreshIcon /> <ArrowPathIcon />
<span>{intl.formatMessage(messages.resetPayload)}</span> <span>{intl.formatMessage(messages.resetPayload)}</span>
</Button> </Button>
<Link <Link
@ -359,7 +362,7 @@ const NotificationsWebhook = () => {
(values.enabled && !values.types) (values.enabled && !values.types)
} }
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -4,7 +4,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import Modal from '@app/components/Common/Modal'; import Modal from '@app/components/Common/Modal';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { DocumentTextIcon } from '@heroicons/react/outline'; import { DocumentTextIcon } from '@heroicons/react/24/outline';
import dynamic from 'next/dynamic'; import dynamic from 'next/dynamic';
import { Fragment, useState } from 'react'; import { Fragment, useState } from 'react';
import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl'; import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl';

@ -6,7 +6,7 @@ import PageTitle from '@app/components/Common/PageTitle';
import Releases from '@app/components/Settings/SettingsAbout/Releases'; import Releases from '@app/components/Settings/SettingsAbout/Releases';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { InformationCircleIcon } from '@heroicons/react/solid'; import { InformationCircleIcon } from '@heroicons/react/24/solid';
import type { import type {
SettingsAboutResponse, SettingsAboutResponse,
StatusResponse, StatusResponse,

@ -9,8 +9,8 @@ import useLocale from '@app/hooks/useLocale';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { formatBytes } from '@app/utils/numberHelpers'; import { formatBytes } from '@app/utils/numberHelpers';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { PlayIcon, StopIcon, TrashIcon } from '@heroicons/react/outline'; import { PlayIcon, StopIcon, TrashIcon } from '@heroicons/react/24/outline';
import { PencilIcon } from '@heroicons/react/solid'; import { PencilIcon } from '@heroicons/react/24/solid';
import type { import type {
CacheItem, CacheItem,
CacheResponse, CacheResponse,

@ -13,13 +13,13 @@ import { Transition } from '@headlessui/react';
import { import {
ChevronLeftIcon, ChevronLeftIcon,
ChevronRightIcon, ChevronRightIcon,
ClipboardCopyIcon, ClipboardDocumentIcon,
DocumentSearchIcon, DocumentMagnifyingGlassIcon,
FilterIcon, FunnelIcon,
MagnifyingGlassIcon,
PauseIcon, PauseIcon,
PlayIcon, PlayIcon,
SearchIcon, } from '@heroicons/react/24/solid';
} from '@heroicons/react/solid';
import type { import type {
LogMessage, LogMessage,
LogsResultsResponse, LogsResultsResponse,
@ -252,7 +252,7 @@ const SettingsLogs = () => {
<div className="mt-2 flex flex-grow flex-col sm:flex-grow-0 sm:flex-row sm:justify-end"> <div className="mt-2 flex flex-grow flex-col sm:flex-grow-0 sm:flex-row sm:justify-end">
<div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 md:flex-grow-0"> <div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 md:flex-grow-0">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100"> <span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100">
<SearchIcon className="h-6 w-6" /> <MagnifyingGlassIcon className="h-6 w-6" />
</span> </span>
<input <input
type="text" type="text"
@ -276,7 +276,7 @@ const SettingsLogs = () => {
</Button> </Button>
<div className="flex flex-grow"> <div className="flex flex-grow">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100"> <span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100">
<FilterIcon className="h-6 w-6" /> <FunnelIcon className="h-6 w-6" />
</span> </span>
<select <select
id="filter" id="filter"
@ -367,7 +367,7 @@ const SettingsLogs = () => {
} }
className="m-1" className="m-1"
> >
<DocumentSearchIcon className="icon-md" /> <DocumentMagnifyingGlassIcon className="icon-md" />
</Button> </Button>
</Tooltip> </Tooltip>
)} )}
@ -380,7 +380,7 @@ const SettingsLogs = () => {
onClick={() => copyLogString(row)} onClick={() => copyLogString(row)}
className="m-1" className="m-1"
> >
<ClipboardCopyIcon className="icon-md" /> <ClipboardDocumentIcon className="icon-md" />
</Button> </Button>
</Tooltip> </Tooltip>
</Table.TD> </Table.TD>

@ -2,7 +2,7 @@ import Badge from '@app/components/Common/Badge';
import Button from '@app/components/Common/Button'; import Button from '@app/components/Common/Button';
import SlideCheckbox from '@app/components/Common/SlideCheckbox'; import SlideCheckbox from '@app/components/Common/SlideCheckbox';
import Tooltip from '@app/components/Common/Tooltip'; import Tooltip from '@app/components/Common/Tooltip';
import { MenuIcon, XIcon } from '@heroicons/react/solid'; import { Bars3Icon, XMarkIcon } from '@heroicons/react/24/solid';
import axios from 'axios'; import axios from 'axios';
import { useRef, useState } from 'react'; import { useRef, useState } from 'react';
import { useDrag, useDrop } from 'react-aria'; import { useDrag, useDrop } from 'react-aria';
@ -135,7 +135,7 @@ const DiscoverOption = ({
isDragging ? 'opacity-0' : 'opacity-100' isDragging ? 'opacity-0' : 'opacity-100'
}`} }`}
> >
<MenuIcon className="h-6 w-6" /> <Bars3Icon className="h-6 w-6" />
<span className="flex-1">{title}</span> <span className="flex-1">{title}</span>
{subtitle && <Badge>{subtitle}</Badge>} {subtitle && <Badge>{subtitle}</Badge>}
@ -147,7 +147,7 @@ const DiscoverOption = ({
buttonSize="sm" buttonSize="sm"
onClick={() => deleteSlider()} onClick={() => deleteSlider()}
> >
<XIcon /> <XMarkIcon />
<span>{intl.formatMessage(messages.remove)}</span> <span>{intl.formatMessage(messages.remove)}</span>
</Button> </Button>
</div> </div>

@ -5,7 +5,10 @@ import { sliderTitles } from '@app/components/Discover/constants';
import CreateSlider from '@app/components/Settings/SettingsMain/DiscoverCustomization/CreateSlider'; import CreateSlider from '@app/components/Settings/SettingsMain/DiscoverCustomization/CreateSlider';
import DiscoverOption from '@app/components/Settings/SettingsMain/DiscoverCustomization/DiscoverOption'; import DiscoverOption from '@app/components/Settings/SettingsMain/DiscoverCustomization/DiscoverOption';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { RefreshIcon, SaveIcon } from '@heroicons/react/solid'; import {
ArrowDownOnSquareIcon,
ArrowPathIcon,
} from '@heroicons/react/24/solid';
import { DiscoverSliderType } from '@server/constants/discover'; import { DiscoverSliderType } from '@server/constants/discover';
import type DiscoverSlider from '@server/entity/DiscoverSlider'; import type DiscoverSlider from '@server/entity/DiscoverSlider';
import axios from 'axios'; import axios from 'axios';
@ -194,7 +197,7 @@ const DiscoverCustomization = () => {
<span className="ml-3 inline-flex rounded-md shadow-sm"> <span className="ml-3 inline-flex rounded-md shadow-sm">
<Tooltip content={intl.formatMessage(messages.resetwarning)}> <Tooltip content={intl.formatMessage(messages.resetwarning)}>
<Button buttonType="default" onClick={() => resetSliders()}> <Button buttonType="default" onClick={() => resetSliders()}>
<RefreshIcon /> <ArrowPathIcon />
<span>{intl.formatMessage(messages.resettodefault)}</span> <span>{intl.formatMessage(messages.resettodefault)}</span>
</Button> </Button>
</Tooltip> </Tooltip>
@ -207,7 +210,7 @@ const DiscoverCustomization = () => {
onClick={() => updateSliders()} onClick={() => updateSliders()}
data-testid="discover-customize-submit" data-testid="discover-customize-submit"
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span>{intl.formatMessage(globalMessages.save)}</span> <span>{intl.formatMessage(globalMessages.save)}</span>
</Button> </Button>
</span> </span>

@ -13,8 +13,8 @@ import { availableLanguages } from '@app/context/LanguageContext';
import useLocale from '@app/hooks/useLocale'; import useLocale from '@app/hooks/useLocale';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import { RefreshIcon } from '@heroicons/react/solid'; import { ArrowPathIcon } from '@heroicons/react/24/solid';
import type { UserSettingsGeneralResponse } from '@server/interfaces/api/userSettingsInterfaces'; import type { UserSettingsGeneralResponse } from '@server/interfaces/api/userSettingsInterfaces';
import type { MainSettings } from '@server/lib/settings'; import type { MainSettings } from '@server/lib/settings';
import axios from 'axios'; import axios from 'axios';
@ -215,7 +215,7 @@ const SettingsMain = () => {
}} }}
className="input-action" className="input-action"
> >
<RefreshIcon /> <ArrowPathIcon />
</button> </button>
</div> </div>
</div> </div>
@ -439,7 +439,7 @@ const SettingsMain = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -9,7 +9,7 @@ import PageTitle from '@app/components/Common/PageTitle';
import type { SettingsRoute } from '@app/components/Common/SettingsTabs'; import type { SettingsRoute } from '@app/components/Common/SettingsTabs';
import SettingsTabs from '@app/components/Common/SettingsTabs'; import SettingsTabs from '@app/components/Common/SettingsTabs';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { CloudIcon, LightningBoltIcon, MailIcon } from '@heroicons/react/solid'; import { BoltIcon, CloudIcon, EnvelopeIcon } from '@heroicons/react/24/solid';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
const messages = defineMessages({ const messages = defineMessages({
@ -34,7 +34,7 @@ const SettingsNotifications = ({ children }: SettingsNotificationsProps) => {
text: intl.formatMessage(messages.email), text: intl.formatMessage(messages.email),
content: ( content: (
<span className="flex items-center"> <span className="flex items-center">
<MailIcon className="mr-2 h-4" /> <EnvelopeIcon className="mr-2 h-4" />
{intl.formatMessage(messages.email)} {intl.formatMessage(messages.email)}
</span> </span>
), ),
@ -133,7 +133,7 @@ const SettingsNotifications = ({ children }: SettingsNotificationsProps) => {
text: intl.formatMessage(messages.webhook), text: intl.formatMessage(messages.webhook),
content: ( content: (
<span className="flex items-center"> <span className="flex items-center">
<LightningBoltIcon className="mr-2 h-4" /> <BoltIcon className="mr-2 h-4" />
{intl.formatMessage(messages.webhook)} {intl.formatMessage(messages.webhook)}
</span> </span>
), ),

@ -7,8 +7,12 @@ import SensitiveInput from '@app/components/Common/SensitiveInput';
import LibraryItem from '@app/components/Settings/LibraryItem'; import LibraryItem from '@app/components/Settings/LibraryItem';
import SettingsBadge from '@app/components/Settings/SettingsBadge'; import SettingsBadge from '@app/components/Settings/SettingsBadge';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import { RefreshIcon, SearchIcon, XIcon } from '@heroicons/react/solid'; import {
ArrowPathIcon,
MagnifyingGlassIcon,
XMarkIcon,
} from '@heroicons/react/24/solid';
import type { PlexDevice } from '@server/interfaces/api/plexInterfaces'; import type { PlexDevice } from '@server/interfaces/api/plexInterfaces';
import type { PlexSettings, TautulliSettings } from '@server/lib/settings'; import type { PlexSettings, TautulliSettings } from '@server/lib/settings';
import axios from 'axios'; import axios from 'axios';
@ -487,7 +491,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
}} }}
className="input-action" className="input-action"
> >
<RefreshIcon <ArrowPathIcon
className={isRefreshingPresets ? 'animate-spin' : ''} className={isRefreshingPresets ? 'animate-spin' : ''}
style={{ animationDirection: 'reverse' }} style={{ animationDirection: 'reverse' }}
/> />
@ -598,7 +602,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)
@ -625,7 +629,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
onClick={() => syncLibraries()} onClick={() => syncLibraries()}
disabled={isSyncing || !data?.ip || !data?.port} disabled={isSyncing || !data?.ip || !data?.port}
> >
<RefreshIcon <ArrowPathIcon
className={isSyncing ? 'animate-spin' : ''} className={isSyncing ? 'animate-spin' : ''}
style={{ animationDirection: 'reverse' }} style={{ animationDirection: 'reverse' }}
/> />
@ -708,12 +712,12 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
onClick={() => startScan()} onClick={() => startScan()}
disabled={isSyncing || !activeLibraries.length} disabled={isSyncing || !activeLibraries.length}
> >
<SearchIcon /> <MagnifyingGlassIcon />
<span>{intl.formatMessage(messages.startscan)}</span> <span>{intl.formatMessage(messages.startscan)}</span>
</Button> </Button>
) : ( ) : (
<Button buttonType="danger" onClick={() => cancelScan()}> <Button buttonType="danger" onClick={() => cancelScan()}>
<XIcon /> <XMarkIcon />
<span>{intl.formatMessage(messages.cancelscan)}</span> <span>{intl.formatMessage(messages.cancelscan)}</span>
</Button> </Button>
)} )}
@ -916,7 +920,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -10,7 +10,7 @@ import RadarrModal from '@app/components/Settings/RadarrModal';
import SonarrModal from '@app/components/Settings/SonarrModal'; import SonarrModal from '@app/components/Settings/SonarrModal';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { PencilIcon, PlusIcon, TrashIcon } from '@heroicons/react/solid'; import { PencilIcon, PlusIcon, TrashIcon } from '@heroicons/react/24/solid';
import type { RadarrSettings, SonarrSettings } from '@server/lib/settings'; import type { RadarrSettings, SonarrSettings } from '@server/lib/settings';
import axios from 'axios'; import axios from 'axios';
import { Fragment, useState } from 'react'; import { Fragment, useState } from 'react';

@ -4,7 +4,7 @@ import PageTitle from '@app/components/Common/PageTitle';
import PermissionEdit from '@app/components/PermissionEdit'; import PermissionEdit from '@app/components/PermissionEdit';
import QuotaSelector from '@app/components/QuotaSelector'; import QuotaSelector from '@app/components/QuotaSelector';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import type { MainSettings } from '@server/lib/settings'; import type { MainSettings } from '@server/lib/settings';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
@ -202,7 +202,7 @@ const SettingsUsers = () => {
type="submit" type="submit"
disabled={isSubmitting} disabled={isSubmitting}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -1,4 +1,4 @@
import { CheckIcon } from '@heroicons/react/solid'; import { CheckIcon } from '@heroicons/react/24/solid';
interface CurrentStep { interface CurrentStep {
stepNumber: number; stepNumber: number;

@ -1,6 +1,6 @@
import TitleCard from '@app/components/TitleCard'; import TitleCard from '@app/components/TitleCard';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/outline'; import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/outline';
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import { useCallback, useEffect, useRef, useState } from 'react'; import { useCallback, useEffect, useRef, useState } from 'react';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';

@ -1,6 +1,6 @@
import Button from '@app/components/Common/Button'; import Button from '@app/components/Common/Button';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { CheckIcon, TrashIcon } from '@heroicons/react/solid'; import { CheckIcon, TrashIcon } from '@heroicons/react/24/solid';
import axios from 'axios'; import axios from 'axios';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
import { mutate } from 'swr'; import { mutate } from 'swr';

@ -9,8 +9,9 @@ import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { withProperties } from '@app/utils/typeHelpers'; import { withProperties } from '@app/utils/typeHelpers';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { DownloadIcon } from '@heroicons/react/outline'; import { CheckCircleIcon } from '@heroicons/react/20/solid';
import { BellIcon, CheckIcon, ClockIcon } from '@heroicons/react/solid'; import { ArrowDownTrayIcon } from '@heroicons/react/24/outline';
import { BellIcon, ClockIcon } from '@heroicons/react/24/solid';
import { MediaStatus } from '@server/constants/media'; import { MediaStatus } from '@server/constants/media';
import type { MediaType } from '@server/models/Search'; import type { MediaType } from '@server/models/Search';
import Link from 'next/link'; import Link from 'next/link';
@ -145,7 +146,7 @@ const TitleCard = ({
{(currentStatus === MediaStatus.AVAILABLE || {(currentStatus === MediaStatus.AVAILABLE ||
currentStatus === MediaStatus.PARTIALLY_AVAILABLE) && ( currentStatus === MediaStatus.PARTIALLY_AVAILABLE) && (
<div className="flex h-4 w-4 items-center justify-center rounded-full border border-green-500 bg-green-500 bg-opacity-80 text-green-100 shadow sm:h-5 sm:w-5"> <div className="flex h-4 w-4 items-center justify-center rounded-full border border-green-500 bg-green-500 bg-opacity-80 text-green-100 shadow sm:h-5 sm:w-5">
<CheckIcon className="h-3 w-3 sm:h-4 sm:w-4" /> <CheckCircleIcon className="h-3 w-3 sm:h-4 sm:w-4" />
</div> </div>
)} )}
{currentStatus === MediaStatus.PENDING && ( {currentStatus === MediaStatus.PENDING && (
@ -258,7 +259,7 @@ const TitleCard = ({
}} }}
className="h-7 w-full" className="h-7 w-full"
> >
<DownloadIcon /> <ArrowDownTrayIcon />
<span>{intl.formatMessage(globalMessages.request)}</span> <span>{intl.formatMessage(globalMessages.request)}</span>
</Button> </Button>
)} )}

@ -2,10 +2,10 @@ import { Transition } from '@headlessui/react';
import { import {
CheckCircleIcon, CheckCircleIcon,
ExclamationCircleIcon, ExclamationCircleIcon,
ExclamationIcon, ExclamationTriangleIcon,
InformationCircleIcon, InformationCircleIcon,
} from '@heroicons/react/outline'; } from '@heroicons/react/24/outline';
import { XIcon } from '@heroicons/react/solid'; import { XMarkIcon } from '@heroicons/react/24/solid';
import { Fragment } from 'react'; import { Fragment } from 'react';
import type { ToastProps } from 'react-toast-notifications'; import type { ToastProps } from 'react-toast-notifications';
@ -42,7 +42,7 @@ const Toast = ({
<InformationCircleIcon className="h-6 w-6 text-indigo-500" /> <InformationCircleIcon className="h-6 w-6 text-indigo-500" />
)} )}
{appearance === 'warning' && ( {appearance === 'warning' && (
<ExclamationIcon className="h-6 w-6 text-orange-400" /> <ExclamationTriangleIcon className="h-6 w-6 text-orange-400" />
)} )}
</div> </div>
<div className="ml-3 w-0 flex-1 text-white">{children}</div> <div className="ml-3 w-0 flex-1 text-white">{children}</div>
@ -51,7 +51,7 @@ const Toast = ({
onClick={() => onDismiss()} onClick={() => onDismiss()}
className="inline-flex text-gray-400 transition duration-150 ease-in-out focus:text-gray-500 focus:outline-none" className="inline-flex text-gray-400 transition duration-150 ease-in-out focus:text-gray-500 focus:outline-none"
> >
<XIcon className="h-5 w-5" /> <XMarkIcon className="h-5 w-5" />
</button> </button>
</div> </div>
</div> </div>

@ -31,13 +31,13 @@ import Error from '@app/pages/_error';
import { sortCrewPriority } from '@app/utils/creditHelpers'; import { sortCrewPriority } from '@app/utils/creditHelpers';
import { Disclosure, Transition } from '@headlessui/react'; import { Disclosure, Transition } from '@headlessui/react';
import { import {
ArrowCircleRightIcon, ArrowRightCircleIcon,
CogIcon, CogIcon,
ExclamationIcon, ExclamationTriangleIcon,
FilmIcon, FilmIcon,
PlayIcon, PlayIcon,
} from '@heroicons/react/outline'; } from '@heroicons/react/24/outline';
import { ChevronUpIcon } from '@heroicons/react/solid'; import { ChevronUpIcon } from '@heroicons/react/24/solid';
import type { RTRating } from '@server/api/rottentomatoes'; import type { RTRating } from '@server/api/rottentomatoes';
import { ANIME_KEYWORD_ID } from '@server/api/themoviedb/constants'; import { ANIME_KEYWORD_ID } from '@server/api/themoviedb/constants';
import { IssueStatus } from '@server/constants/issue'; import { IssueStatus } from '@server/constants/issue';
@ -404,7 +404,7 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
onClick={() => setShowIssueModal(true)} onClick={() => setShowIssueModal(true)}
className="ml-2 first:ml-0" className="ml-2 first:ml-0"
> >
<ExclamationIcon /> <ExclamationTriangleIcon />
</Button> </Button>
</Tooltip> </Tooltip>
)} )}
@ -476,7 +476,7 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
<Link href={`/tv/${data.id}/crew`}> <Link href={`/tv/${data.id}/crew`}>
<a className="flex items-center text-gray-400 transition duration-300 hover:text-gray-100"> <a className="flex items-center text-gray-400 transition duration-300 hover:text-gray-100">
<span>{intl.formatMessage(messages.viewfullcrew)}</span> <span>{intl.formatMessage(messages.viewfullcrew)}</span>
<ArrowCircleRightIcon className="ml-1.5 inline-block h-5 w-5" /> <ArrowRightCircleIcon className="ml-1.5 inline-block h-5 w-5" />
</a> </a>
</Link> </Link>
</div> </div>
@ -951,7 +951,7 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
<Link href="/tv/[tvId]/cast" as={`/tv/${data.id}/cast`}> <Link href="/tv/[tvId]/cast" as={`/tv/${data.id}/cast`}>
<a className="slider-title"> <a className="slider-title">
<span>{intl.formatMessage(messages.cast)}</span> <span>{intl.formatMessage(messages.cast)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
</div> </div>

@ -16,13 +16,13 @@ import { Permission, UserType, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import { import {
BarsArrowDownIcon,
ChevronLeftIcon, ChevronLeftIcon,
ChevronRightIcon, ChevronRightIcon,
InboxInIcon, InboxArrowDownIcon,
PencilIcon, PencilIcon,
SortDescendingIcon, UserPlusIcon,
UserAddIcon, } from '@heroicons/react/24/solid';
} from '@heroicons/react/solid';
import type { UserResultsResponse } from '@server/interfaces/api/userInterfaces'; import type { UserResultsResponse } from '@server/interfaces/api/userInterfaces';
import { hasPermission } from '@server/lib/permissions'; import { hasPermission } from '@server/lib/permissions';
import axios from 'axios'; import axios from 'axios';
@ -487,7 +487,7 @@ const UserList = () => {
buttonType="primary" buttonType="primary"
onClick={() => setCreateModal({ isOpen: true })} onClick={() => setCreateModal({ isOpen: true })}
> >
<UserAddIcon /> <UserPlusIcon />
<span>{intl.formatMessage(messages.createlocaluser)}</span> <span>{intl.formatMessage(messages.createlocaluser)}</span>
</Button> </Button>
<Button <Button
@ -495,13 +495,13 @@ const UserList = () => {
buttonType="primary" buttonType="primary"
onClick={() => setShowImportModal(true)} onClick={() => setShowImportModal(true)}
> >
<InboxInIcon /> <InboxArrowDownIcon />
<span>{intl.formatMessage(messages.importfromplex)}</span> <span>{intl.formatMessage(messages.importfromplex)}</span>
</Button> </Button>
</div> </div>
<div className="mb-2 flex flex-grow lg:mb-0 lg:flex-grow-0"> <div className="mb-2 flex flex-grow lg:mb-0 lg:flex-grow-0">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100"> <span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100">
<SortDescendingIcon className="h-6 w-6" /> <BarsArrowDownIcon className="h-6 w-6" />
</span> </span>
<select <select
id="sort" id="sort"

@ -1,7 +1,7 @@
import Button from '@app/components/Common/Button'; import Button from '@app/components/Common/Button';
import type { User } from '@app/hooks/useUser'; import type { User } from '@app/hooks/useUser';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import { CogIcon, UserIcon } from '@heroicons/react/solid'; import { CogIcon, UserIcon } from '@heroicons/react/24/solid';
import Link from 'next/link'; import Link from 'next/link';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';

@ -12,7 +12,7 @@ import useSettings from '@app/hooks/useSettings';
import { Permission, UserType, useUser } from '@app/hooks/useUser'; import { Permission, UserType, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import type { UserSettingsGeneralResponse } from '@server/interfaces/api/userSettingsInterfaces'; import type { UserSettingsGeneralResponse } from '@server/interfaces/api/userSettingsInterfaces';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
@ -520,7 +520,7 @@ const UserGeneralSettings = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -3,7 +3,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
@ -156,7 +156,7 @@ const UserNotificationsDiscord = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -8,7 +8,7 @@ import { OpenPgpLink } from '@app/components/Settings/Notifications/Notification
import SettingsBadge from '@app/components/Settings/SettingsBadge'; import SettingsBadge from '@app/components/Settings/SettingsBadge';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces';
import axios from 'axios'; import axios from 'axios';
import { Form, Formik } from 'formik'; import { Form, Formik } from 'formik';
@ -151,7 +151,7 @@ const UserEmailSettings = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -3,7 +3,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces';
import axios from 'axios'; import axios from 'axios';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
@ -185,7 +185,7 @@ const UserTelegramSettings = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -5,7 +5,7 @@ import NotificationTypeSelector, {
} from '@app/components/NotificationTypeSelector'; } from '@app/components/NotificationTypeSelector';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces';
import axios from 'axios'; import axios from 'axios';
import { Form, Formik } from 'formik'; import { Form, Formik } from 'formik';
@ -103,7 +103,7 @@ const UserWebPushSettings = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -9,7 +9,7 @@ import SettingsTabs from '@app/components/Common/SettingsTabs';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { CloudIcon, MailIcon } from '@heroicons/react/solid'; import { CloudIcon, EnvelopeIcon } from '@heroicons/react/24/solid';
import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
@ -41,7 +41,7 @@ const UserNotificationSettings = ({
text: intl.formatMessage(messages.email), text: intl.formatMessage(messages.email),
content: ( content: (
<span className="flex items-center"> <span className="flex items-center">
<MailIcon className="mr-2 h-4" /> <EnvelopeIcon className="mr-2 h-4" />
{intl.formatMessage(messages.email)} {intl.formatMessage(messages.email)}
</span> </span>
), ),

@ -6,7 +6,7 @@ import SensitiveInput from '@app/components/Common/SensitiveInput';
import { Permission, useUser } from '@app/hooks/useUser'; import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Form, Formik } from 'formik'; import { Form, Formik } from 'formik';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
@ -233,7 +233,7 @@ const UserPasswordChange = () => {
type="submit" type="submit"
disabled={isSubmitting || !isValid} disabled={isSubmitting || !isValid}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -6,7 +6,7 @@ import PermissionEdit from '@app/components/PermissionEdit';
import { useUser } from '@app/hooks/useUser'; import { useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages'; import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { SaveIcon } from '@heroicons/react/outline'; import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import axios from 'axios'; import axios from 'axios';
import { Form, Formik } from 'formik'; import { Form, Formik } from 'formik';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
@ -120,7 +120,7 @@ const UserPermissions = () => {
type="submit" type="submit"
disabled={isSubmitting} disabled={isSubmitting}
> >
<SaveIcon /> <ArrowDownOnSquareIcon />
<span> <span>
{isSubmitting {isSubmitting
? intl.formatMessage(globalMessages.saving) ? intl.formatMessage(globalMessages.saving)

@ -8,7 +8,7 @@ import TmdbTitleCard from '@app/components/TitleCard/TmdbTitleCard';
import ProfileHeader from '@app/components/UserProfile/ProfileHeader'; import ProfileHeader from '@app/components/UserProfile/ProfileHeader';
import { Permission, UserType, useUser } from '@app/hooks/useUser'; import { Permission, UserType, useUser } from '@app/hooks/useUser';
import Error from '@app/pages/_error'; import Error from '@app/pages/_error';
import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline';
import type { WatchlistResponse } from '@server/interfaces/api/discoverInterfaces'; import type { WatchlistResponse } from '@server/interfaces/api/discoverInterfaces';
import type { import type {
QuotaResponse, QuotaResponse,
@ -291,7 +291,7 @@ const UserProfile = () => {
> >
<a className="slider-title"> <a className="slider-title">
<span>{intl.formatMessage(messages.recentrequests)}</span> <span>{intl.formatMessage(messages.recentrequests)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
</div> </div>
@ -332,7 +332,7 @@ const UserProfile = () => {
> >
<a className="slider-title"> <a className="slider-title">
<span>{intl.formatMessage(messages.plexwatchlist)}</span> <span>{intl.formatMessage(messages.plexwatchlist)}</span>
<ArrowCircleRightIcon /> <ArrowRightCircleIcon />
</a> </a>
</Link> </Link>
</div> </div>

@ -1,5 +1,5 @@
import PageTitle from '@app/components/Common/PageTitle'; import PageTitle from '@app/components/Common/PageTitle';
import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline';
import Link from 'next/link'; import Link from 'next/link';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
@ -24,7 +24,7 @@ const Custom404 = () => {
<Link href="/"> <Link href="/">
<a className="mt-2 flex"> <a className="mt-2 flex">
{intl.formatMessage(messages.returnHome)} {intl.formatMessage(messages.returnHome)}
<ArrowCircleRightIcon className="ml-2 h-6 w-6" /> <ArrowRightCircleIcon className="ml-2 h-6 w-6" />
</a> </a>
</Link> </Link>
</div> </div>

@ -1,6 +1,6 @@
import PageTitle from '@app/components/Common/PageTitle'; import PageTitle from '@app/components/Common/PageTitle';
import type { Undefinable } from '@app/utils/typeHelpers'; import type { Undefinable } from '@app/utils/typeHelpers';
import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline';
import type { NextPage } from 'next'; import type { NextPage } from 'next';
import Link from 'next/link'; import Link from 'next/link';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
@ -47,7 +47,7 @@ const Error: NextPage<ErrorProps> = ({ statusCode }) => {
<Link href="/"> <Link href="/">
<a className="mt-2 flex"> <a className="mt-2 flex">
{intl.formatMessage(messages.returnHome)} {intl.formatMessage(messages.returnHome)}
<ArrowCircleRightIcon className="ml-2 h-6 w-6" /> <ArrowRightCircleIcon className="ml-2 h-6 w-6" />
</a> </a>
</Link> </Link>
</div> </div>

@ -1598,10 +1598,10 @@
dependencies: dependencies:
client-only "^0.0.1" client-only "^0.0.1"
"@heroicons/react@1.0.6": "@heroicons/react@2.0.13":
version "1.0.6" version "2.0.13"
resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-1.0.6.tgz#35dd26987228b39ef2316db3b1245c42eb19e324" resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.13.tgz#9b1cc54ff77d6625c9565efdce0054a4bcd9074c"
integrity sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ== integrity sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==
"@humanwhocodes/config-array@^0.11.8": "@humanwhocodes/config-array@^0.11.8":
version "0.11.8" version "0.11.8"

Loading…
Cancel
Save