diff --git a/src/shared/components/analytics/charts.tsx b/src/shared/components/analytics/charts.tsx
index e63cfb7f8d..bb8aa09484 100644
--- a/src/shared/components/analytics/charts.tsx
+++ b/src/shared/components/analytics/charts.tsx
@@ -1,6 +1,7 @@
"use client";
import { useState, useMemo, useCallback } from "react";
+import { useLocale } from "next-intl";
import Card from "../Card";
import { getModelColor } from "@/shared/constants/colors";
import {
@@ -25,6 +26,14 @@ import {
Area,
} from "recharts";
+function createDateFormatter(locale: string, options: Intl.DateTimeFormatOptions) {
+ try {
+ return new Intl.DateTimeFormat(locale, options);
+ } catch {
+ return new Intl.DateTimeFormat(undefined, options);
+ }
+}
+
// ── Custom Tooltip for dark theme ──────────────────────────────────────────
function DarkTooltip({
@@ -724,6 +733,15 @@ export function WeeklyPattern({ weeklyPattern }) {
// ── MostActiveDay7d ────────────────────────────────────────────────────────
export function MostActiveDay7d({ activityMap }) {
+ const locale = useLocale();
+ const weekdayFormatter = useMemo(
+ () => createDateFormatter(locale, { weekday: "long" }),
+ [locale]
+ );
+ const dateFormatter = useMemo(
+ () => createDateFormatter(locale, { month: "short", day: "numeric" }),
+ [locale]
+ );
const data = useMemo(() => {
if (!activityMap) return null;
const today = new Date();
@@ -743,27 +761,12 @@ export function MostActiveDay7d({ activityMap }) {
if (!peakKey || peakVal === 0) return null;
const peakDate = new Date(peakKey + "T12:00:00");
- const weekdays = ["domingo", "segunda", "terça", "quarta", "quinta", "sexta", "sábado"];
- const months = [
- "jan",
- "fev",
- "mar",
- "abr",
- "mai",
- "jun",
- "jul",
- "ago",
- "set",
- "out",
- "nov",
- "dez",
- ];
return {
- weekday: weekdays[peakDate.getDay()],
- label: `${peakDate.getDate()} de ${months[peakDate.getMonth()]}`,
+ weekday: weekdayFormatter.format(peakDate),
+ label: dateFormatter.format(peakDate),
tokens: peakVal,
};
- }, [activityMap]);
+ }, [activityMap, dateFormatter, weekdayFormatter]);
return (