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")}

} >
); };