import dynamic from "next/dynamic"; import type { AccordionBlockFragment, ContactEntityBlockFragment, ContactListBlockFragment, ContactSectionBlockFragment, ContactSubsectionBlockFragment, EmbedBlockFragment, FactBoxBlockFragment, FeaturedBlockFragment, HorizontalRuleBlockFragment, ImageSliderBlockFragment, ImageWithTextBlockFragment, PageSectionBlockFragment, RichTextBlockFragment, ScheduleBlockFragment, } from "@/gql/graphql"; import { AccordionBlock } from "./AccordionBlock"; import { ContactEntityBlock } from "./ContactEntityBlock"; import { ContactListBlock } from "./ContactListBlock"; import { ContactSectionBlock, ContactSubsectionBlock } from "./ContactSection"; import { EmbedBlock } from "./EmbedBlock"; import { FactBoxBlock } from "./FactBoxBlock"; import { FeaturedBlock } from "./FeaturedBlock"; import { HorizontalRuleBlock } from "./HorizontalRuleBlock"; import { ImageWithTextBlock } from "./ImageWithTextBlock"; import { NeufAddressSectionBlock } from "./NeufAddressSectionBlock"; import { OpeningHoursSectionBlock } from "./OpeningHoursSectionBlock"; import { PageSectionBlock, PageSectionNavigationBlock } from "./PageSection"; import { RichTextBlock } from "./RichTextBlock"; import { ScheduleBlock } from "./ScheduleBlock"; const ImageSliderBlock = dynamic(() => import("./ImageSliderBlock").then((m) => m.ImageSliderBlock), ); export type StreamFieldBlock = { id?: string | null; blockType?: string; __typename?: string; [key: string]: unknown; }; export const Blocks = ({ blocks, pageContent, }: { blocks?: Array | null; pageContent?: boolean; }) => { const sections = (blocks ?? []).filter( (block) => block?.__typename === "PageSectionBlock", ) as PageSectionBlockFragment[]; return (blocks ?? []).map((block) => { if (!block) { return null; } switch (block.blockType) { case "RichTextBlock": return ( ); case "ImageWithTextBlock": return ( ); case "EmbedBlock": return ( ); case "ImageSliderBlock": return ( ); case "HorizontalRuleBlock": return ( ); case "FeaturedBlock": return ( ); case "AccordionBlock": return ( ); case "FactBoxBlock": return ( ); case "ScheduleBlock": return ( ); case "PageSectionBlock": return ( ); case "PageSectionNavigationBlock": return ( ); case "ContactSectionBlock": return ( ); case "ContactSubsectionBlock": return ( ); case "ContactListBlock": return ( ); case "ContactEntityBlock": return ( ); case "NeufAddressSectionBlock": return ; case "OpeningHoursSectionBlock": return ; default: console.log("unsupported block", block); return (
Unsupported block type {block.blockType}
); } }); };