UNPKG

@dotcms/react

Version:

Official React Components library to render a dotCMS page.

45 lines (44 loc) 2.1 kB
import { ReactNode } from 'react'; import { DotCMSBasicContentlet, DotCMSPageAsset, DotCMSPageRendererMode } from '@dotcms/types'; export interface DotCMSLayoutBodyProps<TContentlet extends DotCMSBasicContentlet = DotCMSBasicContentlet> { page: DotCMSPageAsset; components: { [key: string]: React.ComponentType<TContentlet> | React.ComponentType<any>; }; mode?: DotCMSPageRendererMode; /** * Pre-rendered server component nodes keyed by contentlet identifier. * Use this to render Next.js async server components within the layout. * Build this map using the `buildSlots` helper. * * @example * ```tsx * import { buildSlots } from '@dotcms/react'; * * const slots = buildSlots(pageContent.pageAsset.containers, { * BlogList: BlogListContainer, * }); * * <DotCMSLayoutBody page={pageAsset} components={pageComponents} slots={slots} /> * ``` */ slots?: Record<string, ReactNode>; } /** * DotCMSLayoutBody component renders the layout body for a DotCMS page. * * It utilizes the dotCMS page asset's layout body to render the page body. * If the layout body does not exist, it renders an error message in the mode is `development`. * * @public * @component * @param {Object} props - Component properties. * @param {DotCMSPageAsset} props.page - The DotCMS page asset containing the layout information. * @param {Record<string, React.ComponentType<DotCMSContentlet>>} [props.components] - mapping of custom components for content rendering. * @param {DotCMSPageRendererMode} [props.mode='production'] - The renderer mode; defaults to 'production'. Alternate modes might trigger different behaviors. * @param {Record<string, ReactNode>} [props.slots] - Pre-rendered server component nodes keyed by contentlet identifier. * * @returns {JSX.Element} The rendered DotCMS page body or an error message if the layout body is missing. * */ export declare const DotCMSLayoutBody: ({ page, components, mode, slots }: DotCMSLayoutBodyProps) => import("react/jsx-runtime").JSX.Element;