import { DateTime } from "luxon"; import type { Colle, UserPreferences } from "~/lib/api"; import { Badge } from "~/components/ui/badge"; import ColleCard from "~/components/home/colle-card"; import ColleCardSkeleton from "~/components/home/skeleton-card"; type TabContentProps = { tabTitle: string; emptyCollesText: string; isLoading: boolean; colles: Colle[]; isSorted?: boolean; preferences: UserPreferences; }; const WEEK_DAYS = [ "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche", ]; export default function TabContent({ tabTitle, emptyCollesText, isLoading, colles, isSorted, preferences, }: TabContentProps) { const collesByDay: Record = {}; colles.forEach((colle) => { const date = DateTime.fromISO(colle.date); const dayName = WEEK_DAYS[date.weekday - 1]; // Luxon weekday is 1-7 (Mon-Sun) if (!collesByDay[dayName]) { collesByDay[dayName] = []; } collesByDay[dayName].push(colle); }); const days = WEEK_DAYS.filter( (day) => collesByDay[day] && collesByDay[day].length > 0 ); for (const day of days) { collesByDay[day]?.sort((a, b) => new Date(a?.date) - new Date(b?.date)) if (!isSorted) { collesByDay[day].reverse() } } // If not sorted, reverse the order of days if (!isSorted) { days.reverse(); } return ( <>

{tabTitle}

{isLoading ? (
{WEEK_DAYS.slice(0, 2).map((day) => (

{day}

Chargement...
{Array(3) .fill(0) .map((_, i) => ( ))}
))}
) : colles.length === 0 ? (
{emptyCollesText}
) : (
{days.map((day) => (

{day}

{collesByDay[day].length} colle {collesByDay[day].length !== 1 ? "s" : ""}
{collesByDay[day].map((colle) => ( {}} isFavorite={false} preferences={preferences} // TODO: Implement favorite toggle // onToggleFavorite={handleToggleFavorite} // isFavorite={isFavorite(colle)} /> ))}
))}
)} ); }