import { Section } from '@byline/ui/react' import { PhotoBlock } from '@/ui/byline/blocks/photo-block' import { RichTextBlock } from '@/ui/byline/blocks/richtext-block' import { toKebabCase } from '@/ui/byline/utils/to-kebab-case' import type { PopulatedContentBlock } from '@/ui/byline/types/content' import type { Locale } from '@/ui/byline/types/i18n' interface Props { blocks: PopulatedContentBlock[] | undefined | null lng: Locale constrainedLayout?: boolean } export function RenderBlocks({ blocks, constrainedLayout = false, lng, }: Props): React.JSX.Element | null { if (!Array.isArray(blocks) || blocks.length === 0) return null return ( <> {blocks.map((block) => { const content = renderBlock(block, lng, constrainedLayout) if (content == null) return null return (
{content}
) })} ) } function renderBlock( block: PopulatedContentBlock, lng: Locale, constrainedLayout: boolean ): React.JSX.Element | null { switch (block._type) { case 'photoBlock': return ( ) case 'richTextBlock': return ( ) default: return reportUnsupportedBlock(block) } } function reportUnsupportedBlock(block: never): null { const type = (block as { _type?: unknown })._type console.error(`Unsupported content block type: "${String(type)}"`) return null }