import { ShowBase, useLocaleState, useShowContext, useTranslate, } from "ra-core"; import { Card, CardContent } from "@/components/ds/ui/card"; import { ReferenceManyField } from "@/components/ds/admin/reference-many-field"; import { Calendar } from "lucide-react"; import { formatDistance } from "date-fns"; import { getDateFnsLocale } from "@/i18n/date-fns"; import { translateChoice } from "@/i18n/utils"; import { parseLocalDate } from "@/lib/date-utils"; import { NoteCreate, NotesIterator } from "../notes"; import type { Task } from "../types"; import { TaskAside } from "./TaskAside"; import { TaskPriorityBadge } from "./TaskPriorityBadge"; import { TaskStatusBadge } from "./TaskStatusBadge"; import { TaskActivityTimeline } from "./TaskActivityTimeline"; export const TaskShow = () => ( ); const TaskShowContent = () => { const { record, isPending } = useShowContext(); const translate = useTranslate(); const [locale] = useLocaleState(); const dateFnsLocale = getDateFnsLocale(locale); if (isPending || !record) return null; const typeLabel = record.type ? translateChoice(translate, "crm.task.type", record.type, record.type) : ""; return ( {/* Task Header */} {typeLabel || record.type} {record.due_date && (() => { const dueDate = parseLocalDate(record.due_date); if (!dueDate) return null; const relativeDue = formatDistance(dueDate, new Date(), { addSuffix: true, locale: dateFnsLocale, }); return ( {translate("crm.task.due.relative", { time: relativeDue, })} ({dueDate.toLocaleDateString(locale ?? undefined)}) ); })()} {record.text && ( {record.text} )} {/* Activity Timeline */} {translate("crm.task.section.activity_timeline")} {translate("crm.task.section.activity_description")} {/* Notes */} {translate("crm.task.section.notes")} {translate("crm.task.section.notes_description")} } > ); };
{record.text}
{translate("crm.task.section.activity_description")}
{translate("crm.task.section.notes_description")}