Radarr/frontend/src/App/State/AppState.ts
admin 89815c1d7a feat(tv): add TV show frontend components
- Add TVShow, Season, Episode TypeScript types
- Add TV state management (actions, reducers, selectors)
- Add TVShowIndex and TVShowIndexRow components
- Add TVShowDetails and TVShowDetailsPage components
- Add TV routes to AppRoutes
- Add TV Shows sidebar navigation
- Add TV icon to icons

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:09:21 -06:00

133 lines
4.2 KiB
TypeScript

import AddAudiobookAppState from './AddAudiobookAppState';
import AddBookAppState from './AddBookAppState';
import { Error } from './AppSectionState';
import AudiobooksAppState from './AudiobooksAppState';
import AuthorsAppState from './AuthorsAppState';
import BlocklistAppState from './BlocklistAppState';
import BooksAppState from './BooksAppState';
import BookSeriesAppState from './BookSeriesAppState';
import CalendarAppState from './CalendarAppState';
import CaptchaAppState from './CaptchaAppState';
import CommandAppState from './CommandAppState';
import CustomFiltersAppState from './CustomFiltersAppState';
import DashboardAppState from './DashboardAppState';
import EpisodesAppState from './EpisodesAppState';
import ExtraFilesAppState from './ExtraFilesAppState';
import HistoryAppState, { MovieHistoryAppState } from './HistoryAppState';
import InteractiveImportAppState from './InteractiveImportAppState';
import MessagesAppState from './MessagesAppState';
import MovieBlocklistAppState from './MovieBlocklistAppState';
import MovieCollectionAppState from './MovieCollectionAppState';
import MovieCreditAppState from './MovieCreditAppState';
import MovieFilesAppState from './MovieFilesAppState';
import MoviesAppState, { MovieIndexAppState } from './MoviesAppState';
import OAuthAppState from './OAuthAppState';
import OrganizePreviewAppState from './OrganizePreviewAppState';
import ParseAppState from './ParseAppState';
import PathsAppState from './PathsAppState';
import ProviderOptionsAppState from './ProviderOptionsAppState';
import QueueAppState from './QueueAppState';
import ReleasesAppState from './ReleasesAppState';
import RootFolderAppState from './RootFolderAppState';
import SeasonsAppState from './SeasonsAppState';
import SettingsAppState from './SettingsAppState';
import SystemAppState from './SystemAppState';
import TagsAppState from './TagsAppState';
import TVShowsAppState from './TVShowsAppState';
import WantedAppState from './WantedAppState';
interface FilterBuilderPropOption {
id: string;
name: string;
}
export interface FilterBuilderProp<T> {
name: string;
label: string;
type: string;
valueType?: string;
optionsSelector?: (items: T[]) => FilterBuilderPropOption[];
}
export interface PropertyFilter {
key: string;
value: boolean | string | number | string[] | number[];
type: string;
}
export interface Filter {
key: string;
label: string | (() => string);
filters: PropertyFilter[];
}
export interface CustomFilter {
id: number;
type: string;
label: string;
filters: PropertyFilter[];
}
export interface AppSectionState {
isUpdated: boolean;
isConnected: boolean;
isDisconnected: boolean;
isReconnecting: boolean;
isSidebarVisible: boolean;
version: string;
prevVersion?: string;
dimensions: {
isSmallScreen: boolean;
isLargeScreen: boolean;
width: number;
height: number;
};
translations: {
error?: Error;
isPopulated: boolean;
};
messages: MessagesAppState;
}
interface AppState {
addAudiobook: AddAudiobookAppState;
addBook: AddBookAppState;
app: AppSectionState;
audiobooks: AudiobooksAppState;
authors: AuthorsAppState;
blocklist: BlocklistAppState;
books: BooksAppState;
calendar: CalendarAppState;
captcha: CaptchaAppState;
commands: CommandAppState;
customFilters: CustomFiltersAppState;
dashboard: DashboardAppState;
episodes: EpisodesAppState;
extraFiles: ExtraFilesAppState;
history: HistoryAppState;
interactiveImport: InteractiveImportAppState;
movieBlocklist: MovieBlocklistAppState;
movieCollections: MovieCollectionAppState;
movieCredits: MovieCreditAppState;
movieFiles: MovieFilesAppState;
movieHistory: MovieHistoryAppState;
movieIndex: MovieIndexAppState;
movies: MoviesAppState;
oAuth: OAuthAppState;
organizePreview: OrganizePreviewAppState;
parse: ParseAppState;
paths: PathsAppState;
providerOptions: ProviderOptionsAppState;
queue: QueueAppState;
releases: ReleasesAppState;
rootFolders: RootFolderAppState;
bookSeries: BookSeriesAppState;
seasons: SeasonsAppState;
settings: SettingsAppState;
system: SystemAppState;
tags: TagsAppState;
tvShows: TVShowsAppState;
wanted: WantedAppState;
}
export default AppState;