import { z } from "zod" import { transformedImageVaultAssetSchema } from "@scandic-hotels/common/utils/imageVault" import { IconName } from "@scandic-hotels/design-system/Icons/iconName" import { linkConnectionSchema } from "../schemas/linkConnection" export type UsePointsModalData = z.output type LinkGroupItem = z.infer const linkGroupItemSchema = z.intersection( z.object({ link_text: z.string().default(""), is_contentstack_link: z.boolean(), illustration: z.nativeEnum(IconName).nullish(), illustration_size: z .enum(["small", "medium", "large"]) .nullish() .default("large"), external_link: z .object({ href: z.string().default(""), }) .optional(), }), linkConnectionSchema ) const usePointsModalItemsSchema = z.object({ image: transformedImageVaultAssetSchema, link_group: z.array(linkGroupItemSchema).transform((links: LinkGroupItem[]) => links.map((link) => ({ text: link.link_text || "", isExternal: !link.is_contentstack_link, href: link.is_contentstack_link ? link.link?.url || "" : link.external_link?.href || "", illustration: link.illustration ? { illustration: link.illustration, size: link.illustration_size || "large", } : undefined, })) ), }) export const usePointsModalSchema = z.object({ all_usepointsmodal: z .object({ items: z.array(usePointsModalItemsSchema).optional(), }) .optional(), })