import { cn } from "@xtablo/shared"; import type { UserTablo } from "@xtablo/shared/types/tablos.types"; import { Calendar, Trash2 } from "lucide-react"; import { useTranslation } from "react-i18next"; type StatusConfig = { label: string; badgeClass: string; progressColor: string; }; function useStatusConfig(status: string): StatusConfig { const { t } = useTranslation("pages"); switch (status) { case "todo": return { label: t("tablo.status.todo"), badgeClass: "bg-blue-50 text-blue-600 border-blue-200 dark:bg-blue-950/30 dark:text-blue-400 dark:border-blue-800", progressColor: "bg-blue-500", }; case "in_progress": return { label: t("tablo.status.inProgress"), badgeClass: "bg-yellow-50 text-yellow-600 border-yellow-200 dark:bg-yellow-950/30 dark:text-yellow-400 dark:border-yellow-800", progressColor: "bg-purple-500", }; case "done": return { label: t("tablo.status.done"), badgeClass: "bg-green-50 text-green-600 border-green-200 dark:bg-green-950/30 dark:text-green-400 dark:border-green-800", progressColor: "bg-green-500", }; default: return { label: t("tablo.status.todo"), badgeClass: "bg-blue-50 text-blue-600 border-blue-200 dark:bg-blue-950/30 dark:text-blue-400 dark:border-blue-800", progressColor: "bg-blue-500", }; } } function getProgressFromStatus(status: string): number { switch (status) { case "todo": return 0; case "in_progress": return 50; case "done": return 100; default: return 0; } } export interface ProjectCardProps { tablo: UserTablo; onClick?: (tabloId: string) => void; onMenuClick?: (tabloId: string) => void; className?: string; } export function ProjectCard({ tablo, onClick, onMenuClick, className }: ProjectCardProps) { const { t } = useTranslation("pages"); const statusConfig = useStatusConfig(tablo.status); const progress = getProgressFromStatus(tablo.status); const formattedDate = new Intl.DateTimeFormat(undefined, { month: "short", day: "2-digit", year: "numeric", }).format(new Date(tablo.created_at)); return (