@@ -9,6 +9,36 @@ export async function loader() {
99
1010export default function MoviesPage ( { loaderData } : Route . ComponentProps ) {
1111 const { movies } = loaderData
12+
13+ const moviesUI = movies . map ( ( movie ) => (
14+ < Link
15+ key = { movie . id }
16+ to = { href ( '/:movieId' , { movieId : String ( movie . id ) } ) }
17+ className = "rr-card transition-shadow hover:shadow-lg"
18+ >
19+ < div className = "mb-4" >
20+ < img
21+ src = { movie . poster }
22+ alt = { `${ movie . title } poster` }
23+ className = "mb-4 h-64 w-full rounded-lg object-cover"
24+ />
25+ < h3 className = "rr-heading text-lg font-semibold" > { movie . title } </ h3 >
26+ < p className = "rr-text mb-2" > Year: { movie . year } </ p >
27+ < p className = "rr-text mb-2" > Rating: { movie . rating } /10</ p >
28+ < p className = "rr-text mb-4 text-sm text-gray-600" >
29+ { movie . description }
30+ </ p >
31+ < div className = "flex items-center gap-2" >
32+ < span
33+ className = { `rr-badge ${ movie . isFavorite ? 'rr-badge-red' : '' } ` }
34+ >
35+ { movie . isFavorite ? 'Favorite' : 'Not Favorite' }
36+ </ span >
37+ </ div >
38+ </ div >
39+ </ Link >
40+ ) )
41+
1242 return (
1343 < main className = "bg-background movies-page min-h-screen" >
1444 < title > React Router RSC Movies</ title >
@@ -23,36 +53,7 @@ export default function MoviesPage({ loaderData }: Route.ComponentProps) {
2353 </ h1 >
2454
2555 < div className = "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3" >
26- { movies . map ( ( movie ) => (
27- < Link
28- key = { movie . id }
29- to = { href ( '/:movieId' , { movieId : String ( movie . id ) } ) }
30- className = "rr-card transition-shadow hover:shadow-lg"
31- >
32- < div className = "mb-4" >
33- < img
34- src = { movie . poster }
35- alt = { `${ movie . title } poster` }
36- className = "mb-4 h-64 w-full rounded-lg object-cover"
37- />
38- < h3 className = "rr-heading text-lg font-semibold" >
39- { movie . title }
40- </ h3 >
41- < p className = "rr-text mb-2" > Year: { movie . year } </ p >
42- < p className = "rr-text mb-2" > Rating: { movie . rating } /10</ p >
43- < p className = "rr-text mb-4 text-sm text-gray-600" >
44- { movie . description }
45- </ p >
46- < div className = "flex items-center gap-2" >
47- < span
48- className = { `rr-badge ${ movie . isFavorite ? 'rr-badge-red' : '' } ` }
49- >
50- { movie . isFavorite ? 'Favorite' : 'Not Favorite' }
51- </ span >
52- </ div >
53- </ div >
54- </ Link >
55- ) ) }
56+ { moviesUI }
5657 </ div >
5758 </ div >
5859 </ div >
0 commit comments