Files
myeasycms-v2/packages/cms/core/src/content-renderer.tsx
Giancarlo Buomprisco ac12c9355c chore: bump version to 2.20.1 in package.json and refactor layout and… (#404)
* chore: bump version to 2.20.1 in package.json and refactor layout and form components

- Incremented application version from 2.20.0 to 2.20.1 in package.json.
- Refactored RootLayout to optimize asynchronous calls and introduced getRootClassName function for better class management.
- Updated font handling in getFontsClassName function to streamline class generation.
- Enhanced various authentication form components by replacing Input with EmailInput and PasswordInput for improved consistency and usability.
- Adjusted layout styles in AuthLayoutShell and other components for better responsiveness.

* fix: improve content rendering fallback logic in ContentRenderer component

- Enhanced the ContentRenderer function to explicitly check for the presence of a renderer before returning content.
- Added a fallback mechanism to return raw content as React nodes when no renderer is found, improving robustness and user experience.
2025-11-02 16:14:21 +07:00

42 lines
1.1 KiB
TypeScript

import { CmsType } from '@kit/cms-types';
import { createRegistry } from '@kit/shared/registry';
const CMS_CLIENT = process.env.CMS_CLIENT as CmsType;
interface ContentRendererProps {
content: unknown;
type?: CmsType;
}
// Create a registry for CMS client implementations
const cmsContentRendererRegistry = createRegistry<
React.ComponentType<ContentRendererProps>,
CmsType
>();
export async function ContentRenderer({
content,
type = CMS_CLIENT,
}: ContentRendererProps) {
const Renderer = await cmsContentRendererRegistry.get(type);
if (Renderer) {
return <Renderer content={content} />;
}
// fallback to the raw content if no renderer is found
return content as React.ReactNode;
}
cmsContentRendererRegistry.register('keystatic', async () => {
const { KeystaticContentRenderer } = await import('@kit/keystatic/renderer');
return KeystaticContentRenderer;
});
cmsContentRendererRegistry.register('wordpress', async () => {
const { WordpressContentRenderer } = await import('@kit/wordpress/renderer');
return WordpressContentRenderer;
});