refactor(SW-302): update typings
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import {
|
||||
activities,
|
||||
meetingsAndConferences,
|
||||
restaurantAndBar,
|
||||
wellnessAndExercise,
|
||||
@@ -9,60 +8,43 @@ import { getLang } from "@/i18n/serverContext"
|
||||
|
||||
import {
|
||||
type Facilities,
|
||||
type FacilityCard,
|
||||
type FacilityCardType,
|
||||
FacilityEnum,
|
||||
type FacilityGrid,
|
||||
FacilityIds,
|
||||
type FacilityImage,
|
||||
RestaurantHeadings,
|
||||
} from "@/types/components/hotelPage/facilities"
|
||||
import type { Amenities, Facility } from "@/types/hotel"
|
||||
import { ActivityCard } from "@/types/trpc/routers/contentstack/hotelPage"
|
||||
import type { CardProps } from "@/components/TempDesignSystem/Card/card"
|
||||
|
||||
export function setActivityCard(activitiesCard: ActivityCard): CardProps {
|
||||
const lang = getLang()
|
||||
const hasImage = activitiesCard.background_image
|
||||
export function isFacilityCard(card: FacilityCardType): card is FacilityCard {
|
||||
return (card as FacilityCard).heading != undefined
|
||||
}
|
||||
|
||||
const updatedCard: CardProps = {
|
||||
id: activities[lang],
|
||||
theme: hasImage ? "image" : "primaryDark",
|
||||
scriptedTopTitle: activitiesCard.scripted_title,
|
||||
heading: activitiesCard.heading,
|
||||
bodyText: activitiesCard.body_text,
|
||||
backgroundImage: hasImage ? activitiesCard.background_image : undefined,
|
||||
primaryButton: hasImage
|
||||
? {
|
||||
href: activitiesCard.contentPage.href,
|
||||
title: activitiesCard.cta_text,
|
||||
isExternal: false,
|
||||
}
|
||||
: undefined,
|
||||
secondaryButton: hasImage
|
||||
? undefined
|
||||
: {
|
||||
href: activitiesCard.contentPage.href,
|
||||
title: activitiesCard.cta_text,
|
||||
isExternal: false,
|
||||
},
|
||||
}
|
||||
return updatedCard
|
||||
export function isFacilityImage(card: FacilityCardType): card is FacilityCard {
|
||||
return (card as FacilityImage).backgroundImage != undefined
|
||||
}
|
||||
|
||||
function setCardProps(
|
||||
theme: CardProps["theme"],
|
||||
heading: string,
|
||||
buttonText: string,
|
||||
href: string
|
||||
) {
|
||||
const card: CardProps = {}
|
||||
|
||||
card.theme = theme
|
||||
card.id = href
|
||||
card.heading = heading
|
||||
card.secondaryButton = {
|
||||
href: `?s=${href}`,
|
||||
title: buttonText,
|
||||
isExternal: false,
|
||||
href: string,
|
||||
scriptedTopTitle: string
|
||||
): FacilityCard {
|
||||
return {
|
||||
theme: theme,
|
||||
id: href,
|
||||
heading: heading,
|
||||
scriptedTopTitle: scriptedTopTitle,
|
||||
secondaryButton: {
|
||||
href: `?s=${href}`,
|
||||
title: buttonText,
|
||||
isExternal: false,
|
||||
},
|
||||
}
|
||||
return card
|
||||
}
|
||||
|
||||
export function setFacilityCardGrids(facilities: Facility[]): Facilities {
|
||||
@@ -70,23 +52,24 @@ export function setFacilityCardGrids(facilities: Facility[]): Facilities {
|
||||
const cards: Facilities = []
|
||||
|
||||
facilities.forEach(async (facility) => {
|
||||
const grid: Array<CardProps> = []
|
||||
let card: CardProps = {}
|
||||
const grid: FacilityGrid = []
|
||||
let card: FacilityCard
|
||||
|
||||
facility.heroImages.slice(0, 2).forEach((image) => {
|
||||
// Can be a maximum 2 images per grid
|
||||
const img: CardProps = {}
|
||||
img.id = image.imageSizes.large
|
||||
;(img.backgroundImage = {
|
||||
url: image.imageSizes.large,
|
||||
title: image.metaData.title,
|
||||
meta: {
|
||||
alt: image.metaData.altText,
|
||||
caption: image.metaData.altText_En,
|
||||
const img: FacilityImage = {
|
||||
backgroundImage: {
|
||||
url: image.imageSizes.large,
|
||||
title: image.metaData.title,
|
||||
meta: {
|
||||
alt: image.metaData.altText,
|
||||
caption: image.metaData.altText_En,
|
||||
},
|
||||
id: image.imageSizes.large,
|
||||
},
|
||||
theme: "image",
|
||||
id: image.imageSizes.large,
|
||||
}),
|
||||
(img.theme = "image")
|
||||
}
|
||||
grid.push(img)
|
||||
})
|
||||
|
||||
@@ -96,9 +79,9 @@ export function setFacilityCardGrids(facilities: Facility[]): Facilities {
|
||||
"one",
|
||||
"Sauna and gym",
|
||||
"Read more about wellness & exercise",
|
||||
wellnessAndExercise[lang]
|
||||
wellnessAndExercise[lang],
|
||||
facility.headingText
|
||||
)
|
||||
card.scriptedTopTitle = facility.headingText
|
||||
grid.unshift(card)
|
||||
break
|
||||
|
||||
@@ -107,9 +90,9 @@ export function setFacilityCardGrids(facilities: Facility[]): Facilities {
|
||||
"primaryDim",
|
||||
"Events that make an impression",
|
||||
"About meetings & conferences",
|
||||
meetingsAndConferences[lang]
|
||||
meetingsAndConferences[lang],
|
||||
facility.headingText
|
||||
)
|
||||
card.scriptedTopTitle = facility.headingText
|
||||
grid.push(card)
|
||||
break
|
||||
|
||||
@@ -119,9 +102,9 @@ export function setFacilityCardGrids(facilities: Facility[]): Facilities {
|
||||
"primaryDark",
|
||||
"Enjoy relaxed restaurant experiences",
|
||||
"Read more & book a table",
|
||||
restaurantAndBar[lang]
|
||||
restaurantAndBar[lang],
|
||||
facility.headingText
|
||||
)
|
||||
card.scriptedTopTitle = facility.headingText
|
||||
grid.unshift(card)
|
||||
break
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user