From bedef3037fa093a46a076f7cde8b6660d493daf6 Mon Sep 17 00:00:00 2001 From: Mathias Date: Mon, 14 Jul 2025 18:33:01 +0200 Subject: [PATCH] feat(workout-streak-header): enhance date formatting by integrating locale support and adding multiple language formats in date utility --- src/features/layout/workout-streak-header.tsx | 7 +++++-- src/shared/lib/date.ts | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/features/layout/workout-streak-header.tsx b/src/features/layout/workout-streak-header.tsx index b551a84..0b0c226 100644 --- a/src/features/layout/workout-streak-header.tsx +++ b/src/features/layout/workout-streak-header.tsx @@ -3,7 +3,9 @@ import utc from "dayjs/plugin/utc"; import timezone from "dayjs/plugin/timezone"; import dayjs from "dayjs"; +import { useCurrentLocale } from "locales/client"; import { cn } from "@/shared/lib/utils"; +import { formatDate } from "@/shared/lib/date"; import { useWorkoutSessions } from "@/features/workout-session/model/use-workout-sessions"; // Configure dayjs with timezone support @@ -56,7 +58,7 @@ export interface StreakData { */ export default function WorkoutStreakHeader({ className, streakCount = DEFAULT_STREAK_COUNT }: WorkoutStreakHeaderProps) { const { data: sessions, isLoading: sessionsLoading, error: sessionsError } = useWorkoutSessions(); - + const locale = useCurrentLocale(); // Get user's timezone for accurate date calculations (memoized for performance) const userTimezone = useMemo(() => { try { @@ -113,8 +115,9 @@ export default function WorkoutStreakHeader({ className, streakCount = DEFAULT_S } }); + const date = formatDate(targetDate.toDate(), locale); return { - date: targetDate.format("YYYY-MM-DD"), + date, hasWorkout: !!session, session: session || undefined, }; diff --git a/src/shared/lib/date.ts b/src/shared/lib/date.ts index 55c0a5b..eee3a9e 100644 --- a/src/shared/lib/date.ts +++ b/src/shared/lib/date.ts @@ -7,7 +7,11 @@ import "dayjs/locale/en"; */ const DEFAULT_FORMATS = { en: "MMMM D, YYYY", // January 15, 2024 - fr: "D MMMM YYYY", // 15 janvier 2024 + fr: "D MMMM YYYY", // 15 janvier 2024, + es: "D MMMM YYYY", // 15 de enero de 2024, + "zh-CN": "YYYY年M月D日", // 2024年1月15日, + ru: "D MMMM YYYY", // 15 января 2024, + pt: "D MMMM YYYY", // 15 de janeiro de 2024, } as const; /**