WaypointSidebar and DayBreakdown were calling useTranslation() without
the "planner" namespace, then using fully qualified keys like
"planner.multiDay.overnight". Fixed to use useTranslation("planner")
and drop the prefix from all t() calls.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
2 KiB
TypeScript
54 lines
2 KiB
TypeScript
import { useState } from "react";
|
|
import { useTranslation } from "react-i18next";
|
|
import type { DayStage } from "@trails-cool/gpx";
|
|
|
|
interface DayBreakdownProps {
|
|
days: DayStage[];
|
|
children: (dayStage: DayStage, waypointIndices: { start: number; end: number }) => React.ReactNode;
|
|
}
|
|
|
|
export function DayBreakdown({ days, children }: DayBreakdownProps) {
|
|
const { t } = useTranslation("planner");
|
|
const [expandedDay, setExpandedDay] = useState(1);
|
|
|
|
return (
|
|
<div className="flex flex-col">
|
|
{days.map((day) => {
|
|
const isExpanded = expandedDay === day.dayNumber;
|
|
return (
|
|
<div key={day.dayNumber}>
|
|
<button
|
|
onClick={() => setExpandedDay(isExpanded ? -1 : day.dayNumber)}
|
|
className="flex w-full items-center gap-2 border-b border-gray-100 px-4 py-2 text-left hover:bg-gray-50"
|
|
>
|
|
<span className="text-xs font-semibold text-gray-500">
|
|
{t("multiDay.dayLabel", { n: day.dayNumber })}
|
|
</span>
|
|
<span className="min-w-0 flex-1 truncate text-xs text-gray-600">
|
|
{day.startName && day.endName
|
|
? `${day.startName} → ${day.endName}`
|
|
: day.startName || day.endName || ""}
|
|
</span>
|
|
<span className="shrink-0 text-xs tabular-nums text-gray-500">
|
|
{(day.distance / 1000).toFixed(1)} km
|
|
</span>
|
|
<span className="shrink-0 text-xs text-gray-400">
|
|
{isExpanded ? "▾" : "▸"}
|
|
</span>
|
|
</button>
|
|
|
|
{isExpanded && (
|
|
<>
|
|
<div className="flex gap-3 border-b border-gray-100 bg-gray-50 px-4 py-1.5 text-[10px] text-gray-500">
|
|
<span>↑ {day.ascent} m</span>
|
|
<span>↓ {day.descent} m</span>
|
|
</div>
|
|
{children(day, { start: day.startWaypointIndex, end: day.endWaypointIndex })}
|
|
</>
|
|
)}
|
|
</div>
|
|
);
|
|
})}
|
|
</div>
|
|
);
|
|
}
|