import { useMemo } from 'react'; import { useRecordContext, useResourceContext, useTranslate } from 'react-admin'; /** * Generate the title of a resource page from its name and the current record. * * @param title Can be the resource name, a fully qualified translation key, or a boolean to disable the title * @returns The title of the resource, based on the current record and the resource name */ function useResourceTitle(title: string | boolean | undefined): string | boolean | undefined { const record = useRecordContext(); const translate = useTranslate(); const resource = useResourceContext(); const mode = record?.id ? 'edit' : 'create'; const cardTitle = useMemo(() => { if (title === false) { return undefined; } const defaultTitle = `resources.${resource}.title`; return ( title || translate(`resources.${resource}.title.${mode}`, { _: translate(defaultTitle, { _: defaultTitle }), ...record }) ); }, [mode, record, resource, translate, title]); return cardTitle; } export { useResourceTitle };