import { ShowBase, useListContext, useRecordContext, useShowContext, useTranslate, useNotify, useRedirect, } from "ra-core"; import { useEffect } from "react"; import { Link as RouterLink } from "react-router-dom"; import { Receipt } from "lucide-react"; import { Button } from "@/components/ds/ui/button"; import { ReferenceField } from "@/components/ds/admin/reference-field"; import { ReferenceManyField } from "@/components/ds/admin/reference-many-field"; import { Card, CardContent } from "@/components/ds/ui/card"; import { CompanyAvatar } from "../companies/CompanyAvatar"; import { NoteCreate } from "../notes/NoteCreate"; import { NotesIterator } from "../notes/NotesIterator"; import type { Deal, Invoice } from "../types"; import { DealAside } from "./DealAside"; import { InvoiceCard } from "../invoices"; export const DealShow = () => ( ); const DealShowContent = () => { const { record, isPending, error } = useShowContext(); const translate = useTranslate(); const notify = useNotify(); const redirect = useRedirect(); // Handle error (deal not found) useEffect(() => { if (error) { notify("Deal not found or has been deleted", { type: "error" }); redirect("/deals"); } }, [error, notify, redirect]); if (isPending || !record) return null; return ( {/* Deal Header */} {record.name} {/* Description */} {record.description && ( {translate("crm.deal.field.description")} {record.description} )} {/* Notes Section */} {translate("crm.deal.section.notes")} {translate("crm.deal.section.notes_description")} } > {/* Invoices Section */} {translate("resources.invoices.name", { smart_count: 2 })} ); }; const InvoicesIterator = () => { const { data: invoices, error, isPending } = useListContext(); if (isPending || error) return null; return ( {invoices.map((invoice) => ( ))} ); }; const CreateRelatedInvoiceButton = () => { const deal = useRecordContext(); const translate = useTranslate(); return ( {translate("crm.common.add_invoice")} ); };
{record.description}
{translate("crm.deal.section.notes_description")}