import { z } from "zod" import { transformedImageVaultAssetSchema } from "@scandic-hotels/common/utils/imageVault" import { CardsEnum } from "../../../../../types/cardsEnum" import { systemSchema } from "../../system" import { buttonSchema } from "../utils/buttonLinkSchema" import { linkConnectionRefsSchema } from "../utils/linkConnection" const INFO_CARD_THEMES = [ "one", "two", "three", "primaryInverted", "primaryStrong", ] as const export const infoCardBlockSchema = z.object({ __typename: z.literal(CardsEnum.InfoCard), scripted_top_title: z.string().optional(), heading: z.string().optional().default(""), body_text: z.string().optional().default(""), image: transformedImageVaultAssetSchema, theme: z.enum(INFO_CARD_THEMES).nullable(), title: z.string().optional(), primary_button: buttonSchema.optional().nullable(), secondary_button: buttonSchema.optional().nullable(), system: systemSchema, }) export function transformInfoCardBlock(card: typeof infoCardBlockSchema._type) { return { __typename: card.__typename, scriptedTopTitle: card.scripted_top_title, heading: card.heading, bodyText: card.body_text, image: card.image, theme: card.theme, title: card.title, primaryButton: card.primary_button?.href ? card.primary_button : undefined, secondaryButton: card.secondary_button?.href ? card.secondary_button : undefined, system: card.system, } } export const infoCardBlockRefsSchema = z.object({ __typename: z.literal(CardsEnum.InfoCard), primary_button: linkConnectionRefsSchema, secondary_button: linkConnectionRefsSchema, system: systemSchema, })