feat(SW-2285): Added campaign essentials block on campaign page

Approved-by: Christian Andolf
Approved-by: Matilda Landström
This commit is contained in:
Erik Tiekstra
2025-06-11 08:14:00 +00:00
parent c5e2fc7805
commit b4a05dae0b
18 changed files with 287 additions and 11 deletions

View File

@@ -1,7 +1,22 @@
import { z } from "zod"
import { discriminatedUnionArray } from "@/lib/discriminatedUnion"
import { essentialsBlockSchema } from "../schemas/blocks/essentials"
import { systemSchema } from "../schemas/system"
import { CampaignPageEnum } from "@/types/enums/campaignPage"
const campaignPageEssentials = z
.object({
__typename: z.literal(CampaignPageEnum.ContentStack.blocks.Essentials),
})
.merge(essentialsBlockSchema)
export const blocksSchema = z.discriminatedUnion("__typename", [
campaignPageEssentials,
])
export const campaignPageSchema = z.object({
campaign_page: z.object({
title: z.string(),
@@ -13,6 +28,7 @@ export const campaignPageSchema = z.object({
first_column: z.string(),
second_column: z.string(),
}),
blocks: discriminatedUnionArray(blocksSchema.options),
system: systemSchema.merge(
z.object({
created_at: z.string(),

View File

@@ -0,0 +1,26 @@
import { z } from "zod"
import { BlocksEnums } from "@/types/enums/blocks"
export const essentialsSchema = z.object({
essentials: z.object({
title: z.string(),
preamble: z.string().nullish(),
items: z.array(
z.object({
label: z.string(),
icon_identifier: z.string(),
description: z.string().nullish(),
})
),
}),
})
export const essentialsBlockSchema = z
.object({
typename: z
.literal(BlocksEnums.block.Essentials)
.optional()
.default(BlocksEnums.block.Essentials),
})
.merge(essentialsSchema)