From 3a7669e26d075cd22c3735107df91a3cc505ab5a Mon Sep 17 00:00:00 2001 From: Norbert Maciaszek Date: Fri, 15 Aug 2025 15:02:01 +0200 Subject: [PATCH] Enhance MovieCard component: add showDayCounter prop for displaying days since or until release, update release date formatting to Polish locale, and adjust image aspect ratio for improved layout. --- src/components/atoms/MovieCard/index.tsx | 34 +++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/components/atoms/MovieCard/index.tsx b/src/components/atoms/MovieCard/index.tsx index a5a5897..8107faa 100644 --- a/src/components/atoms/MovieCard/index.tsx +++ b/src/components/atoms/MovieCard/index.tsx @@ -12,12 +12,17 @@ import { RiCalendarCheckLine, RiCalendarScheduleLine } from "react-icons/ri"; type Props = Movie & { layout?: "default" | "zeus"; + showDayCounter?: boolean; }; const buttonClass = "p-4 text-sm transition-colors cursor-pointer text-center group/toggle"; -export const MovieCard: FC = ({ layout = "default", ...movie }) => { +export const MovieCard: FC = ({ + layout = "default", + showDayCounter = true, + ...movie +}) => { const { movies, addMovie: addMovieToStore, @@ -53,12 +58,22 @@ export const MovieCard: FC = ({ layout = "default", ...movie }) => { updateMovieInStore(id, { favorite: !favorite }); }; + const releaseDate = new Date(release_date); + const daysSinceRelease = Math.abs( + Math.floor( + (new Date().getTime() - releaseDate.getTime()) / (1000 * 60 * 60 * 24) + ) + ); + if (layout === "zeus") { return (
@@ -139,8 +154,21 @@ export const MovieCard: FC = ({ layout = "default", ...movie }) => { }`} > {isReleased ? : } - {release_date} + + {releaseDate.toLocaleDateString("pl-PL", { + day: "numeric", + month: "long", + year: "numeric", + })} +

+ {showDayCounter && ( + + {isReleased + ? `${daysSinceRelease} dni od premiery` + : `${daysSinceRelease} dni do premiery`} + + )}