Files
Linus Flood 5fc93472f4 Merged in feat/rework-contentstack (pull request #3493)
Feat(SW-3708): refactor contentstack fetching (removing all refs) and cache invalidation

* Remove all REFS

* Revalidate correct language

* PR fixes

* PR fixes

* Throw when errors from contentstack api


Approved-by: Joakim Jäderberg
2026-01-27 12:38:36 +00:00

55 lines
1.5 KiB
TypeScript

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<typeof usePointsModalSchema>
type LinkGroupItem = z.infer<typeof linkGroupItemSchema>
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(),
})