import { z } from "zod" import { scriptedCardThemeEnum } from "../../../../enums/scriptedCard" import { SidebarEnums } from "../../../../types/sidebar" import { cardBlockRefsSchema, cardBlockSchema, transformCardBlock, transformCardBlockRefs, } from "../blocks/cardsGrid" export const scriptedCardsSchema = z.object({ typename: z .literal(SidebarEnums.blocks.ScriptedCard) .optional() .default(SidebarEnums.blocks.ScriptedCard), scripted_card: z .object({ theme: z.nativeEnum(scriptedCardThemeEnum).nullable(), scripted_cardConnection: z.object({ edges: z.array( z.object({ node: cardBlockSchema, }) ), }), }) .nullish() .transform((data) => { if (!data?.scripted_cardConnection?.edges.length) { return null } return { theme: data.theme, ...transformCardBlock(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: cardBlockRefsSchema, }) ), }), }) .transform((data) => { let card = null if (data.scripted_cardConnection.edges.length) { card = transformCardBlockRefs( data.scripted_cardConnection.edges[0].node ) } return card }), })