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`}
+
+ )}