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 ( ); };