import type React from "react"; import type { Colle } from "~/lib/api"; import { Link, useNavigate } from "react-router"; import { Card, CardContent, CardHeader, CardFooter, } from "~/components/ui/card"; import { User, UserCheck, Paperclip, Star, MapPinHouse } from "lucide-react"; import { Badge } from "~/components/ui/badge"; import { Button } from "~/components/ui/button"; import { formatDate, formatGrade, formatTime } from "~/lib/utils"; // TODO: Preferences for subject colors const getSubjectColor = (_: string) => { // Mock placeholder function return "bg-blue-100 text-blue-800"; // Default color }; const getSubjectEmoji = (_: string) => { // Mock placeholder function return "📚"; // Default emoji }; type ColleCardProps = { colle: Colle; onToggleFavorite: (id: number, favorite: boolean) => void; beforeClick: () => void; isFavorite: boolean; }; export default function ColleCard({ colle, onToggleFavorite, beforeClick, isFavorite, }: ColleCardProps) { const navigate = useNavigate(); // TODO: Remove this if scroll restoration is not needed (test first) const handleCardClick = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); beforeClick(); setTimeout(() => navigate(`/colles/${colle.id}`), 100); }; // TODO: Favorites const handleToggleFavorite = (e: React.MouseEvent) => { e.stopPropagation(); // Prevent card click e.preventDefault(); const newValue = !isFavorite; onToggleFavorite(colle.id, newValue); }; const subjectColor = getSubjectColor(colle.subject.name); const subjectEmoji = getSubjectEmoji(colle.subject.name); return ( {formatDate(colle.date)} {formatTime(colle.date)} {colle.grade && ( Ajouter aux favoris {formatGrade(colle.grade)}/20 )} {colle.student.fullName} {colle.examiner.name} {colle.room && ( {colle.room.name} )} {colle.subject.name + " " + subjectEmoji} {isFavorite && ( Favori )} {/* TODO: Attachments */} {/* {colle.attachmentsCount > 0 && ( {colle.attachmentsCount} )} */} ); }