commerce/components/page/page-content.tsx
Chloe e0da620ac9
feat: implement accordion content type
Signed-off-by: Chloe <pinkcloudvnn@gmail.com>
2024-05-24 13:19:14 +07:00

25 lines
929 B
TypeScript

import { Metaobject, PageType } from 'lib/shopify/types';
import { Suspense } from 'react';
import AccordionBlock from './accordion-block';
import IconWithTextBlock, { IconBlockPlaceholder } from './icon-with-text-block';
import ImageWithTextBlock from './image-with-text-block';
import TextBlock from './text-block';
const PageContent = ({ block }: { block: Metaobject }) => {
// eslint-disable-next-line no-unused-vars
const contentMap: Record<PageType, (block: Metaobject) => JSX.Element> = {
icon_content_section: (block) => (
<Suspense fallback={<IconBlockPlaceholder />}>
<IconWithTextBlock block={block} />
</Suspense>
),
image: (block) => <ImageWithTextBlock block={block} />,
page_section: (block) => <TextBlock block={block} />,
accordion: (block) => <AccordionBlock block={block} />
};
return contentMap[block.type as PageType](block);
};
export default PageContent;