import { cn } from "@/lib/utils"; import SectionContainer from "@/components/ui/section-container"; import { PAGE_QUERY_RESULT } from "@/sanity.types"; import SplitContent from "./split-content"; import SplitCardsList from "./split-cards-list"; import SplitImage from "./split-image"; import SplitInfoList from "./split-info-list"; type Block = NonNullable["blocks"]>[number]; type SplitRow = Extract; type SplitColumn = NonNullable[number]>; const componentMap: { [K in SplitColumn["_type"]]: React.ComponentType< Extract >; } = { "split-content": SplitContent, "split-cards-list": SplitCardsList, "split-image": SplitImage, "split-info-list": SplitInfoList, }; export default function SplitRow({ padding, colorVariant, noGap, splitColumns, }: SplitRow) { return ( {splitColumns && splitColumns?.length > 0 && (
{splitColumns?.map((column) => { const Component = componentMap[column._type]; if (!Component) { // Fallback for development/debugging of new component types console.warn( `No component implemented for split column type: ${column._type}`, ); return
; } return ( ); })}
)} ); }