Feat(SW-1573): Use pageInUrl for hotel subpages * feat(SW-1573): use pageInUrl for hotel subpages Approved-by: Erik Tiekstra Approved-by: Fredrik Thorsson
79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import { z } from "zod"
|
|
|
|
import { imageSchema } from "./image"
|
|
|
|
const specialNeedSchema = z.object({
|
|
name: z.string(),
|
|
details: z.string(),
|
|
})
|
|
|
|
const specialNeedGroupSchema = z.object({
|
|
name: z.string(),
|
|
specialNeeds: z.array(specialNeedSchema),
|
|
})
|
|
|
|
export const gallerySchema = z.object({
|
|
heroImages: z.array(imageSchema),
|
|
smallerImages: z.array(imageSchema),
|
|
})
|
|
|
|
export const facilitySchema = z.object({
|
|
headingText: z.string().default(""),
|
|
heroImages: z.array(imageSchema),
|
|
})
|
|
|
|
export const restaurantsOverviewPageSchema = z.object({
|
|
restaurantsOverviewPageLinkText: z.string().optional(),
|
|
restaurantsOverviewPageLink: z.string().optional(),
|
|
restaurantsContentDescriptionShort: z.string().optional(),
|
|
restaurantsContentDescriptionMedium: z.string().optional(),
|
|
})
|
|
|
|
export const extraPageSchema = z.object({
|
|
elevatorPitch: z.string().default(""),
|
|
mainBody: z.string().optional(),
|
|
nameInUrl: z.string().optional(),
|
|
})
|
|
|
|
export const accessibilitySchema = z.object({
|
|
headingText: z.string().default(""),
|
|
heroImages: z.array(imageSchema),
|
|
})
|
|
|
|
export const additionalDataSchema = z.object({
|
|
attributes: z.object({
|
|
name: z.string(),
|
|
id: z.string(),
|
|
displayWebPage: z.object({
|
|
healthGym: z.boolean(),
|
|
meetingRoom: z.boolean(),
|
|
parking: z.boolean(),
|
|
specialNeeds: z.boolean(),
|
|
}),
|
|
specialNeedGroups: z.array(specialNeedGroupSchema),
|
|
gallery: gallerySchema.optional(),
|
|
conferencesAndMeetings: facilitySchema.optional(),
|
|
healthAndWellness: facilitySchema.optional(),
|
|
restaurantImages: facilitySchema.optional(),
|
|
parkingImages: facilitySchema.optional(),
|
|
restaurantsOverviewPage: restaurantsOverviewPageSchema,
|
|
meetingRooms: extraPageSchema,
|
|
healthAndFitness: extraPageSchema,
|
|
hotelParking: extraPageSchema,
|
|
hotelSpecialNeeds: extraPageSchema,
|
|
hotelRoomElevatorPitchText: z.string().optional(),
|
|
accessibility: accessibilitySchema.optional(),
|
|
}),
|
|
type: z.literal("additionalData"),
|
|
})
|
|
|
|
export function transformAdditionalData(
|
|
data: z.output<typeof additionalDataSchema>
|
|
) {
|
|
return {
|
|
...data.attributes,
|
|
id: data.attributes.id,
|
|
type: data.type,
|
|
}
|
|
}
|