-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.ts
More file actions
81 lines (73 loc) · 1.63 KB
/
types.ts
File metadata and controls
81 lines (73 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
export interface Movie {
id: number;
title?: string;
name?: string; // For TV shows
original_name?: string;
backdrop_path: string | null;
poster_path: string | null;
overview: string;
vote_average: number;
vote_count?: number;
genre_ids: number[];
first_air_date?: string;
release_date?: string;
media_type?: "movie" | "tv";
genres?: Genre[];
// Detail fields populated by backend aggregation
images?: {
logos?: Array<{ file_path: string; iso_639_1: string }>;
};
runtime?: number; // For movies
number_of_seasons?: number; // For TV shows
seasons?: Season[]; // For TV shows
credits?: {
cast?: Array<{ name: string; character: string; profile_path?: string }>;
crew?: Array<{ name: string; job: string }>;
};
recommendations?: {
results?: Movie[];
};
}
export interface Genre {
id: number;
name: string;
}
export interface Episode {
id: number;
episode_number: number;
name: string;
overview: string;
still_path: string | null;
runtime: number;
air_date: string;
}
export interface Season {
air_date: string;
episode_count: number;
id: number;
name: string;
overview: string;
poster_path: string;
season_number: number;
vote_average: number;
episodes?: Episode[];
}
export interface TvShowDetails extends Movie {
seasons: Season[];
number_of_seasons: number;
number_of_episodes: number;
}
export interface VideoProps {
tmdbId: string;
type: "movie" | "tv";
}
export interface RowProps {
title: string;
movies: Movie[];
loading: boolean;
isLargeRow?: boolean;
}
export interface BannerProps {
movie: Movie | null;
loading: boolean;
}