import { z } from "zod" import { scriptedCardThemeEnum } from "../../../../enums/scriptedCard" import { SidebarEnums } from "../../../../types/sidebar" import { getInfoCardThemeFromDeprecatedCardTheme, infoCardBlockRefsSchema, infoCardBlockSchema, transformCardBlockRefs, transformInfoCardBlock, } from "../blocks/cardsGrid" export const scriptedCardsSchema = z.object({ typename: z .literal(SidebarEnums.blocks.InfoCard) .optional() .default(SidebarEnums.blocks.InfoCard), scripted_card: z .object({ theme: z .nativeEnum(scriptedCardThemeEnum) .nullable() .transform(getInfoCardThemeFromDeprecatedCardTheme), scripted_cardConnection: z.object({ edges: z.array( z.object({ node: infoCardBlockSchema, }) ), }), }) .nullish() .transform((data) => { if (!data?.scripted_cardConnection?.edges.length) { return null } return { theme: data.theme, ...transformInfoCardBlock(data.scripted_cardConnection.edges[0].node), } }), }) export const scriptedCardRefschema = z.object({ scripted_card: z .object({ scripted_cardConnection: z.object({ edges: z.array( z.object({ node: infoCardBlockRefsSchema, }) ), }), }) .transform((data) => { let card = null if (data.scripted_cardConnection.edges.length) { card = transformCardBlockRefs( data.scripted_cardConnection.edges[0].node ) } return card }), })