Add MovieCard component for displaying movie details with image, title, overview, release date, and popularity; update global styles to use utility classes for column layout.
This commit is contained in:
		
							parent
							
								
									1154e0287f
								
							
						
					
					
						commit
						a7875db58b
					
				|  | @ -1,5 +1,4 @@ | ||||||
| @import "tailwindcss"; | @import "tailwindcss"; | ||||||
| @import "tw-animate-css"; |  | ||||||
| 
 | 
 | ||||||
| @custom-variant dark (&:is(.dark *)); | @custom-variant dark (&:is(.dark *)); | ||||||
| 
 | 
 | ||||||
|  | @ -38,53 +37,9 @@ | ||||||
|     flex-wrap: wrap; |     flex-wrap: wrap; | ||||||
|     margin: 0 -15px; |     margin: 0 -15px; | ||||||
|   } |   } | ||||||
| 
 | } | ||||||
|   .col-12 { | 
 | ||||||
|     width: 100%; | @utility col-* { | ||||||
|     padding: 0 15px; |   width: calc(--value(integer) / 0.12 * 1%); | ||||||
|   } |   padding: 0 15px; | ||||||
|   .col-11 { |  | ||||||
|     width: 91.6666666667%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-10 { |  | ||||||
|     width: 83.3333333333%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-9 { |  | ||||||
|     width: 75%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-8 { |  | ||||||
|     width: 66.6666666667%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-7 { |  | ||||||
|     width: 58.3333333333%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-6 { |  | ||||||
|     width: 50%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-5 { |  | ||||||
|     width: 41.6666666667%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-4 { |  | ||||||
|     width: 33.3333333333%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-3 { |  | ||||||
|     width: 25%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-2 { |  | ||||||
|     width: 16.6666666667%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
|   .col-1 { |  | ||||||
|     width: 8.3333333333%; |  | ||||||
|     padding: 0 15px; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,58 @@ | ||||||
|  | import { FC } from "react"; | ||||||
|  | import { ReadMore } from "../ReadMore"; | ||||||
|  | 
 | ||||||
|  | type Props = { | ||||||
|  |   title: string; | ||||||
|  |   overview: string; | ||||||
|  |   releaseDate: string; | ||||||
|  |   popularity: number; | ||||||
|  |   imagePath: string; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export const MovieCard: FC<Props> = ({ | ||||||
|  |   title, | ||||||
|  |   releaseDate, | ||||||
|  |   popularity, | ||||||
|  |   overview, | ||||||
|  |   imagePath, | ||||||
|  | }) => { | ||||||
|  |   return ( | ||||||
|  |     <div className="flex w-full shadow-md rounded-lg overflow-hidden mx-auto"> | ||||||
|  |       <div className="overflow-hidden rounded-xl relative movie-item text-white movie-card"> | ||||||
|  |         <div className="absolute inset-0 z-10 bg-gradient-to-t from-black via-gray-900 to-transparent"></div> | ||||||
|  |         <div className="relative cursor-pointer group z-10 p-6 space-y-6 h-full"> | ||||||
|  |           <div className="align-self-end w-full h-full flex flex-col"> | ||||||
|  |             <div className="h-64"></div> | ||||||
|  |             <div className="flex flex-col space-y-2 inner mb-4"> | ||||||
|  |               <h3 | ||||||
|  |                 className="text-lg leading-[1.3] font-bold text-white line-clamp-1" | ||||||
|  |                 title={title} | ||||||
|  |               > | ||||||
|  |                 {title} | ||||||
|  |               </h3> | ||||||
|  |               <div className="text-xs text-gray-400"> | ||||||
|  |                 <ReadMore text={overview} /> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |             <div className="flex flex-row justify-between mt-auto"> | ||||||
|  |               <div className="flex flex-col datos_col"> | ||||||
|  |                 <div className="text-sm text-gray-400">Popularity:</div> | ||||||
|  |                 <div className="popularity">{popularity}</div> | ||||||
|  |               </div> | ||||||
|  |               <div className="flex flex-col datos_col"> | ||||||
|  |                 <div className="text-sm text-gray-400">Release date:</div> | ||||||
|  |                 <div className="release">{releaseDate}</div> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |         <figure className="absolute inset-0 w-full bottom-[20%]"> | ||||||
|  |           <img | ||||||
|  |             className="w-full h-96 object-cover" | ||||||
|  |             src={`http://image.tmdb.org/t/p/w342/${imagePath}`} | ||||||
|  |           /> | ||||||
|  |         </figure> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
		Loading…
	
		Reference in New Issue