SAS Tier matching comparison block (SW-921) Approved-by: Joakim Jäderberg Approved-by: Matilda Landström
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import { z } from "zod"
|
|
|
|
import { MembershipLevelEnum } from "@/constants/membershipLevels"
|
|
|
|
import { BlocksEnums } from "@/types/enums/blocks"
|
|
|
|
const link = z.object({
|
|
href: z.string(),
|
|
title: z.string(),
|
|
})
|
|
|
|
export const sasTierComparisonSchema = z.object({
|
|
typename: z
|
|
.literal(BlocksEnums.block.SasTierComparison)
|
|
.optional()
|
|
.default(BlocksEnums.block.SasTierComparison),
|
|
sas_tier_comparison: z
|
|
.object({
|
|
comparisonConnection: z.object({
|
|
edges: z.array(
|
|
z.object({
|
|
node: z.object({
|
|
title: z.string(),
|
|
preamble: z.string().optional(),
|
|
scandic_friends: z.object({
|
|
title: z.string(),
|
|
label: z.string(),
|
|
tiers: z.array(
|
|
z.object({
|
|
tier_code: z.nativeEnum(MembershipLevelEnum),
|
|
tier_label: z.string(),
|
|
})
|
|
),
|
|
read_more_link: link.optional(),
|
|
}),
|
|
sas_eb: z.object({
|
|
title: z.string(),
|
|
label: z.string(),
|
|
tiers: z.array(
|
|
z.object({
|
|
tier_code: z.enum([
|
|
"Basic",
|
|
"Silver",
|
|
"Gold",
|
|
"Diamond",
|
|
"Pandion",
|
|
]),
|
|
tier_label: z.string(),
|
|
})
|
|
),
|
|
read_more_link: link.optional(),
|
|
}),
|
|
cta: link.optional(),
|
|
}),
|
|
})
|
|
),
|
|
}),
|
|
})
|
|
.transform((data) => {
|
|
return {
|
|
sasTierComparison: data.comparisonConnection.edges.at(0)?.node ?? null,
|
|
}
|
|
}),
|
|
})
|