30 lines
774 B
TypeScript
30 lines
774 B
TypeScript
import { z } from "zod"
|
|
|
|
import { discriminatedUnionArray } from "@/lib/discriminatedUnion"
|
|
|
|
import { activitiesCard } from "../schemas/blocks/activitiesCard"
|
|
|
|
import { HotelPageEnum } from "@/types/enums/hotelPage"
|
|
|
|
const contentBlockActivities = z
|
|
.object({
|
|
__typename: z.literal(HotelPageEnum.ContentStack.blocks.ActivitiesCard),
|
|
})
|
|
.merge(activitiesCard)
|
|
|
|
export const contentBlock = z.discriminatedUnion("__typename", [
|
|
contentBlockActivities,
|
|
])
|
|
|
|
export const hotelPageSchema = z.object({
|
|
hotel_page: z.object({
|
|
content: discriminatedUnionArray(contentBlock.options).nullable(),
|
|
hotel_page_id: z.string(),
|
|
title: z.string(),
|
|
url: z.string(),
|
|
page_settings: z.object({
|
|
tracking_page_name: z.string().nullable(),
|
|
}),
|
|
}),
|
|
})
|