import { z } from "zod" import { DestinationOverviewPageEnum } from "../../../types/destinationOverviewPage" import { discriminatedUnionArray } from "../../../utils/discriminatedUnion" import { cardGalleryRefsSchema, cardGallerySchema, } from "../schemas/blocks/cardGallery" import { mapLocationSchema } from "../schemas/mapLocation" import { systemSchema } from "../schemas/system" const destinationOverviewPageCardGallery = z .object({ __typename: z.literal( DestinationOverviewPageEnum.ContentStack.blocks.CardGallery ), }) .merge(cardGallerySchema) export const blocksSchema = z.discriminatedUnion("__typename", [ destinationOverviewPageCardGallery, ]) export const destinationOverviewPageSchema = z.object({ destination_overview_page: z.object({ heading: z.string().nullish(), blocks: discriminatedUnionArray(blocksSchema.options), location: mapLocationSchema, system: systemSchema.merge( z.object({ created_at: z.string(), updated_at: z.string(), }) ), }), trackingProps: z.object({ url: z.string(), }), }) /** REFS */ const destinationOverviewPageCardGalleryRef = z .object({ __typename: z.literal( DestinationOverviewPageEnum.ContentStack.blocks.CardGallery ), }) .merge(cardGalleryRefsSchema) const blocksRefsSchema = z.discriminatedUnion("__typename", [ destinationOverviewPageCardGalleryRef, ]) export const destinationOverviewPageRefsSchema = z.object({ destination_overview_page: z.object({ blocks: discriminatedUnionArray(blocksRefsSchema.options).nullable(), system: systemSchema, }), })