import { Linkedin, Mail, Phone } from "lucide-react"; import { useRecordContext, WithRecord, useTranslate } from "ra-core"; import type { ReactNode } from "react"; import { ArrayField } from "@/components/ds/admin/array-field"; import { EditButton } from "@/components/ds/admin/edit-button"; import { DeleteButton } from "@/components/admin"; import { ReferenceField } from "@/components/ds/admin/reference-field"; import { ReferenceManyField } from "@/components/ds/admin/reference-many-field"; import { ShowButton } from "@/components/ds/admin/show-button"; import { SingleFieldList } from "@/components/ds/admin/single-field-list"; import { TextField } from "@/components/ds/admin/text-field"; import { DateField } from "@/components/ds/admin/date-field"; import { EmailField } from "@/components/ds/admin/email-field"; import { AddTask } from "../tasks/AddTask"; import { TasksIterator } from "../tasks/TasksIterator"; import { TagsListEdit } from "./TagsListEdit"; import { AsideSection } from "../misc/AsideSection"; import { useConfigurationContext } from "../root/ConfigurationContext"; import { SaleName } from "../sales/SaleName"; import type { Contact } from "../types"; import { ContactMergeButton } from "./ContactMergeButton"; import { ExportVCardButton } from "./ExportVCardButton"; import { ContactHealthCard } from "./ContactHealthCard"; import { translateChoice } from "@/i18n/utils"; export const ContactAside = ({ link = "edit" }: { link?: "edit" | "show" }) => { const { contactGender } = useConfigurationContext(); const record = useRecordContext(); const translate = useTranslate(); if (!record) return null; return (
{link === "edit" ? ( ) : ( )}
} primary={} /> {record.has_newsletter && (

{translate("crm.contact.field.subscribed_to_newsletter")}

)} {record.linkedin_url && ( } primary={ {translate("crm.contact.field.linkedin")} } /> )} } primary={} showType /> {contactGender .map((genderOption) => { if (record.gender === genderOption.value) { return ( } primary={ {translateChoice( translate, "crm.contact.gender", genderOption.value, genderOption.label, )} } /> ); } return null; }) .filter(Boolean)}
render={(record) => record?.background ? ( ) : null } />
{translate("crm.contact.field.first_seen")} {" "}
{translate("crm.contact.field.last_seen_on")} {" "}
{translate("crm.contact.field.followed_by")} 
{link !== "edit" && ( <>
)}
); }; const PersonalInfoRow = ({ icon, primary, showType, }: { icon: ReactNode; primary: ReactNode; showType?: boolean; }) => { const translate = useTranslate(); return (
{icon}
{primary} {showType ? ( row.type !== "Other" && ( {translate(`crm.contact.type.${row.type.toLowerCase()}`, { _: row.type, })} ) } /> ) : null}
); };