diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/StayCard/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Stays/StayCard/index.tsx index eb5c2c42d..b78299ab1 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/StayCard/index.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/StayCard/index.tsx @@ -45,8 +45,11 @@ function CardContent({ stay }: StayCardProps) {
{hotelInformation.hotelContent.images.metaData.altText} diff --git a/apps/scandic-web/components/Blocks/HotelListing/HotelListingItem/index.tsx b/apps/scandic-web/components/Blocks/HotelListing/HotelListingItem/index.tsx index 765999f75..532dcb4f8 100644 --- a/apps/scandic-web/components/Blocks/HotelListing/HotelListingItem/index.tsx +++ b/apps/scandic-web/components/Blocks/HotelListing/HotelListingItem/index.tsx @@ -41,8 +41,8 @@ export default async function HotelListingItem({ return (
{image.metaData.altText) { - return { - src: hotel.galleryImages?.[0]?.imageSizes.large, - alt: - hotel.galleryImages?.[0]?.metaData.altText || - hotel.galleryImages?.[0]?.metaData.altText_En, + if (hotel.galleryImages?.length) { + const image = hotel.galleryImages[0] + return { + src: image.src, + alt: image.altText || image.altText_En, + } } + return null } diff --git a/apps/scandic-web/components/ContentType/DestinationPage/Map/utils.ts b/apps/scandic-web/components/ContentType/DestinationPage/Map/utils.ts index 4f2b6fa13..ec5416023 100644 --- a/apps/scandic-web/components/ContentType/DestinationPage/Map/utils.ts +++ b/apps/scandic-web/components/ContentType/DestinationPage/Map/utils.ts @@ -53,10 +53,12 @@ export function getHotelMapMarkers(hotels: HotelListingHotelData[]) { } function getImage({ hotel }: Pick) { - return { - src: hotel.galleryImages?.[0]?.imageSizes.large, - alt: - hotel.galleryImages?.[0]?.metaData.altText || - hotel.galleryImages?.[0]?.metaData.altText_En, + if (hotel.galleryImages?.length) { + const image = hotel.galleryImages[0] + return { + src: image.src, + alt: image.altText || image.altText_En, + } } + return null } diff --git a/apps/scandic-web/components/ContentType/HotelPage/SidePeeks/Images/index.tsx b/apps/scandic-web/components/ContentType/HotelPage/SidePeeks/Images/index.tsx index d81f1b1a7..af33fb63c 100644 --- a/apps/scandic-web/components/ContentType/HotelPage/SidePeeks/Images/index.tsx +++ b/apps/scandic-web/components/ContentType/HotelPage/SidePeeks/Images/index.tsx @@ -17,11 +17,11 @@ export default function SidePeekImages({ images }: SidePeekImagesProps) { return (
- {images.map(({ metaData, imageSizes }) => ( + {images.map(({ src, altText, altText_En }) => ( {metaData.altText}
) : null} diff --git a/apps/scandic-web/components/HotelReservation/EnterDetails/Header/index.tsx b/apps/scandic-web/components/HotelReservation/EnterDetails/Header/index.tsx index cd6e91405..f22317f28 100644 --- a/apps/scandic-web/components/HotelReservation/EnterDetails/Header/index.tsx +++ b/apps/scandic-web/components/HotelReservation/EnterDetails/Header/index.tsx @@ -20,8 +20,8 @@ export default async function HotelHeader({
{image.metaData.altText diff --git a/apps/scandic-web/components/HotelReservation/MyStay/Promo/index.tsx b/apps/scandic-web/components/HotelReservation/MyStay/Promo/index.tsx index f0df74f8f..cd0c58842 100644 --- a/apps/scandic-web/components/HotelReservation/MyStay/Promo/index.tsx +++ b/apps/scandic-web/components/HotelReservation/MyStay/Promo/index.tsx @@ -21,8 +21,8 @@ export default function Promo({
{image.metaData.altText}
diff --git a/apps/scandic-web/components/HotelReservation/MyStay/Rooms/MultiRoom/Room.tsx b/apps/scandic-web/components/HotelReservation/MyStay/Rooms/MultiRoom/Room.tsx index e2c292313..63e5a6c5f 100644 --- a/apps/scandic-web/components/HotelReservation/MyStay/Rooms/MultiRoom/Room.tsx +++ b/apps/scandic-web/components/HotelReservation/MyStay/Rooms/MultiRoom/Room.tsx @@ -12,6 +12,7 @@ import { IconButton } from "@scandic-hotels/design-system/IconButton" import IconChip from "@scandic-hotels/design-system/IconChip" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import Image from "@scandic-hotels/design-system/Image" +import ImageFallback from "@scandic-hotels/design-system/ImageFallback" import Modal from "@scandic-hotels/design-system/Modal" import { Typography } from "@scandic-hotels/design-system/Typography" import { RoomPackageCodeEnum } from "@scandic-hotels/trpc/enums/roomFilter" @@ -215,11 +216,11 @@ export default function Room({ booking, roomNr, user }: RoomProps) { )}
- {roomName} + {room?.images[0]?.src ? ( + {roomName} + ) : ( + + )}
diff --git a/apps/scandic-web/components/HotelReservation/MyStay/Rooms/SingleRoom/Img/index.tsx b/apps/scandic-web/components/HotelReservation/MyStay/Rooms/SingleRoom/Img/index.tsx index a5bc86411..0264c28a5 100644 --- a/apps/scandic-web/components/HotelReservation/MyStay/Rooms/SingleRoom/Img/index.tsx +++ b/apps/scandic-web/components/HotelReservation/MyStay/Rooms/SingleRoom/Img/index.tsx @@ -1,5 +1,6 @@ "use client" import Image from "@scandic-hotels/design-system/Image" +import ImageFallback from "@scandic-hotels/design-system/ImageFallback" import { useMyStayStore } from "@/stores/my-stay" @@ -19,13 +20,17 @@ export default function Img() { return (
- {roomName} + {image?.src ? ( + {roomName} + ) : ( + + )}
) } diff --git a/apps/scandic-web/components/HotelReservation/MyStay/index.tsx b/apps/scandic-web/components/HotelReservation/MyStay/index.tsx index e7353a323..d3056e032 100644 --- a/apps/scandic-web/components/HotelReservation/MyStay/index.tsx +++ b/apps/scandic-web/components/HotelReservation/MyStay/index.tsx @@ -168,9 +168,9 @@ export default async function MyStay(props: { } const imageSrc = - hotel.hotelContent.images.imageSizes.large ?? - additionalData.gallery?.heroImages[0]?.imageSizes.large ?? - hotel.galleryImages[0]?.imageSizes.large + hotel.hotelContent.images.src || + additionalData.gallery?.heroImages[0]?.src || + hotel.galleryImages[0]?.src const baseUrl = env.PUBLIC_URL || "https://www.scandichotels.com" const promoUrl = new URL(`${baseUrl}/${lang}/`) diff --git a/apps/scandic-web/components/TempDesignSystem/MeetingRoomCard/index.tsx b/apps/scandic-web/components/TempDesignSystem/MeetingRoomCard/index.tsx index 7e44946c9..33a66b000 100644 --- a/apps/scandic-web/components/TempDesignSystem/MeetingRoomCard/index.tsx +++ b/apps/scandic-web/components/TempDesignSystem/MeetingRoomCard/index.tsx @@ -34,10 +34,10 @@ export default function MeetingRoomCard({ room }: MeetingRoomCardProps) { return (
- {image?.imageSizes.small ? ( + {image?.src ? ( {image?.metaData.altText["imageSizes"] -type ImageMetaData = z.infer["metaData"] - export type HotelPin = { bookingCode?: string | null name: string @@ -20,8 +15,11 @@ export type HotelPin = { rateType: string | null currency: string images: { - imageSizes: ImageSizes - metaData: ImageMetaData + src: string + altText: string + altText_En: string + title: string + title_En: string }[] amenities: Amenities ratings: number | null diff --git a/apps/scandic-web/types/components/imageGallery.ts b/apps/scandic-web/types/components/imageGallery.ts index 15f56e5e3..03a0d98e4 100644 --- a/apps/scandic-web/types/components/imageGallery.ts +++ b/apps/scandic-web/types/components/imageGallery.ts @@ -2,5 +2,4 @@ export interface GalleryImage { src: string alt: string caption?: string | null - smallSrc?: string | null } diff --git a/apps/scandic-web/utils/facilityCards.ts b/apps/scandic-web/utils/facilityCards.ts index 8a652c26d..bc495657f 100644 --- a/apps/scandic-web/utils/facilityCards.ts +++ b/apps/scandic-web/utils/facilityCards.ts @@ -124,16 +124,16 @@ export function setFacilityCardGrids( // Can be a maximum 2 images per grid const img: FacilityImage = { backgroundImage: { - url: image.imageSizes.large, - title: image.metaData.title || image.metaData.title_En, + url: image.src, + title: image.title || image.title_En, meta: { - alt: image.metaData.altText, - caption: image.metaData.altText_En, + alt: image.altText, + caption: image.altText_En, }, - id: image.imageSizes.large, + id: image.src, }, theme: "image", - id: image.imageSizes.large, + id: image.src, } return img }) diff --git a/apps/scandic-web/utils/imageGallery.ts b/apps/scandic-web/utils/imageGallery.ts index 1228a701f..7bbb11a66 100644 --- a/apps/scandic-web/utils/imageGallery.ts +++ b/apps/scandic-web/utils/imageGallery.ts @@ -5,14 +5,13 @@ import type { GalleryImage } from "@/types/components/imageGallery" function mapApiImageToGalleryImage(apiImage: ApiImage): GalleryImage { return { - src: apiImage.imageSizes.medium, + src: apiImage.src, alt: - apiImage.metaData.altText || - apiImage.metaData.altText_En || - apiImage.metaData.title || - apiImage.metaData.title_En, - caption: apiImage.metaData.title || apiImage.metaData.title_En, - smallSrc: apiImage.imageSizes.small, + apiImage.altText || + apiImage.altText_En || + apiImage.title || + apiImage.title_En, + caption: apiImage.title || apiImage.title_En, } } diff --git a/apps/scandic-web/utils/jsonSchemas.ts b/apps/scandic-web/utils/jsonSchemas.ts index ed617cea7..40648b76d 100644 --- a/apps/scandic-web/utils/jsonSchemas.ts +++ b/apps/scandic-web/utils/jsonSchemas.ts @@ -61,8 +61,8 @@ export function generateHotelSchema(hotelData: HotelData) { if (image) { jsonLd.image = { "@type": "ImageObject", - url: image.imageSizes.small, - caption: image.metaData.title || image.metaData.title_En, + url: image.src, + caption: image.title || image.title_En, } } diff --git a/apps/scandic-web/utils/metadata/image.ts b/apps/scandic-web/utils/metadata/image.ts index 82cc93025..2207e748f 100644 --- a/apps/scandic-web/utils/metadata/image.ts +++ b/apps/scandic-web/utils/metadata/image.ts @@ -24,11 +24,8 @@ export function getImage(data: RawMetadataSchema) { const restaurantImage = restaurantSubPage?.content?.images?.[0] if (restaurantImage) { subpageImage = { - url: restaurantImage.imageSizes.small, - alt: - restaurantImage.metaData.altText || - restaurantImage.metaData.altText_En || - "", + url: restaurantImage.src, + alt: restaurantImage.altText || restaurantImage.altText_En || "", } } @@ -38,11 +35,8 @@ export function getImage(data: RawMetadataSchema) { data.additionalHotelData?.parkingImages?.heroImages[0] if (parkingImage) { subpageImage = { - url: parkingImage.imageSizes.small, - alt: - parkingImage.metaData.altText || - parkingImage.metaData.altText_En || - "", + url: parkingImage.src, + alt: parkingImage.altText || parkingImage.altText_En || "", } } break @@ -52,11 +46,8 @@ export function getImage(data: RawMetadataSchema) { )?.content.images[0] if (wellnessImage) { subpageImage = { - url: wellnessImage.imageSizes.small, - alt: - wellnessImage.metaData.altText || - wellnessImage.metaData.altText_En || - "", + url: wellnessImage.src, + alt: wellnessImage.altText || wellnessImage.altText_En || "", } } break @@ -65,10 +56,10 @@ export function getImage(data: RawMetadataSchema) { data.additionalHotelData?.accessibility?.heroImages[0] if (accessibilityImage) { subpageImage = { - url: accessibilityImage.imageSizes.small, + url: accessibilityImage.src, alt: - accessibilityImage.metaData.altText || - accessibilityImage.metaData.altText_En || + accessibilityImage.altText || + accessibilityImage.altText_En || "", } } @@ -78,11 +69,8 @@ export function getImage(data: RawMetadataSchema) { data.additionalHotelData?.conferencesAndMeetings?.heroImages[0] if (meetingImage) { subpageImage = { - url: meetingImage.imageSizes.small, - alt: - meetingImage.metaData.altText || - meetingImage.metaData.altText_En || - "", + url: meetingImage.src, + alt: meetingImage.altText || meetingImage.altText_En || "", } } break @@ -100,8 +88,8 @@ export function getImage(data: RawMetadataSchema) { data.additionalHotelData?.gallery?.smallerImages?.[0] if (hotelImage) { return { - url: hotelImage.imageSizes.small, - alt: hotelImage.metaData.altText || undefined, + url: hotelImage.src, + alt: hotelImage.altText || undefined, } } } diff --git a/packages/booking-flow/lib/components/BookingConfirmation/Rooms/Room/index.tsx b/packages/booking-flow/lib/components/BookingConfirmation/Rooms/Room/index.tsx index 850dc9907..a7eba5941 100644 --- a/packages/booking-flow/lib/components/BookingConfirmation/Rooms/Room/index.tsx +++ b/packages/booking-flow/lib/components/BookingConfirmation/Rooms/Room/index.tsx @@ -10,6 +10,7 @@ import { import { dt } from "@scandic-hotels/common/dt" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import Image from "@scandic-hotels/design-system/Image" +import ImageFallback from "@scandic-hotels/design-system/ImageFallback" import { Typography } from "@scandic-hotels/design-system/Typography" import { getHotelRoom } from "@scandic-hotels/trpc/routers/booking/helpers" @@ -114,16 +115,20 @@ export function Room({ )}
- {img?.metaData.altText + {img?.src ? ( + {img.altText + ) : ( + + )}
diff --git a/packages/booking-flow/lib/components/HotelCardDialogListing/utils.ts b/packages/booking-flow/lib/components/HotelCardDialogListing/utils.ts index 48b7a13a1..3c0eeb94c 100644 --- a/packages/booking-flow/lib/components/HotelCardDialogListing/utils.ts +++ b/packages/booking-flow/lib/components/HotelCardDialogListing/utils.ts @@ -5,9 +5,7 @@ import type { z } from "zod" import type { HotelResponse } from "../SelectHotel/helpers" -type ImageSizes = z.infer["imageSizes"] -type ImageMetaData = z.infer["metaData"] - +type ApiImage = z.infer interface Coordinates { lat: number lng: number @@ -24,10 +22,7 @@ export type HotelPin = { voucherPrice: number | null rateType: string | null currency: string - images: { - imageSizes: ImageSizes - metaData: ImageMetaData - }[] + images: ApiImage[] amenities: Amenities ratings: number | null operaId: string diff --git a/packages/booking-flow/lib/components/ListingHotelCardDialog/index.tsx b/packages/booking-flow/lib/components/ListingHotelCardDialog/index.tsx index f1ebd77ad..eec3d9f6c 100644 --- a/packages/booking-flow/lib/components/ListingHotelCardDialog/index.tsx +++ b/packages/booking-flow/lib/components/ListingHotelCardDialog/index.tsx @@ -53,8 +53,8 @@ export default function ListingHotelCardDialog({ voucherPrice, hasEnoughPoints, } = data - const firstImage = images[0]?.imageSizes?.small - const altText = images[0]?.metaData?.altText + const imageSrc = images[0]?.src + const altText = images[0]?.altText || images[0]?.altText_En const notEnoughPointsLabel = intl.formatMessage({ defaultMessage: "Not enough points", @@ -77,7 +77,7 @@ export default function ListingHotelCardDialog({
({ - src: apiImage.imageSizes.medium, + src: apiImage.src, alt: - apiImage.metaData.altText || - apiImage.metaData.altText_En || - apiImage.metaData.title || - apiImage.metaData.title_En, - caption: apiImage.metaData.title || apiImage.metaData.title_En, - smallSrc: apiImage.imageSizes.small, + apiImage.altText || + apiImage.altText_En || + apiImage.title || + apiImage.title_En, + caption: apiImage.title || apiImage.title_En, })) } diff --git a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/Rooms/MultiRoomWrapper/SelectedRoomPanel/index.tsx b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/Rooms/MultiRoomWrapper/SelectedRoomPanel/index.tsx index 37d2d9dfb..97f923948 100644 --- a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/Rooms/MultiRoomWrapper/SelectedRoomPanel/index.tsx +++ b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/Rooms/MultiRoomWrapper/SelectedRoomPanel/index.tsx @@ -46,6 +46,8 @@ export function SelectedRoomPanel({ roomIndex }: { roomIndex: number }) { isMainRoom || (!isMainRoom && selectedRates.rates.slice(0, roomNr).every((room) => room)) + const image = images?.[0] + return (
@@ -64,16 +66,17 @@ export function SelectedRoomPanel({ roomIndex }: { roomIndex: number }) { {selectedProductTitle}
- {images?.[0]?.imageSizes?.tiny ? ( + {image?.src ? ( { ) : null} diff --git a/packages/booking-flow/lib/misc/imageGallery.ts b/packages/booking-flow/lib/misc/imageGallery.ts index dbfdf3d76..9043574e7 100644 --- a/packages/booking-flow/lib/misc/imageGallery.ts +++ b/packages/booking-flow/lib/misc/imageGallery.ts @@ -3,14 +3,13 @@ import type { ApiImage } from "@scandic-hotels/trpc/types/hotel" export function mapApiImagesToGalleryImages(apiImages: ApiImage[]) { return apiImages.map((apiImage) => { return { - src: apiImage.imageSizes.medium, + src: apiImage.src, alt: - apiImage.metaData.altText || - apiImage.metaData.altText_En || - apiImage.metaData.title || - apiImage.metaData.title_En, - caption: apiImage.metaData.title || apiImage.metaData.title_En, - smallSrc: apiImage.imageSizes.small, + apiImage.altText || + apiImage.altText_En || + apiImage.title || + apiImage.title_En, + caption: apiImage.title || apiImage.title_En, } }) } diff --git a/packages/booking-flow/lib/types/components/promo/promoProps.ts b/packages/booking-flow/lib/types/components/promo/promoProps.ts index 132b625fa..6dd86d111 100644 --- a/packages/booking-flow/lib/types/components/promo/promoProps.ts +++ b/packages/booking-flow/lib/types/components/promo/promoProps.ts @@ -4,17 +4,8 @@ export type PromoProps = { text: string title: string image?: { - imageSizes: { - large: string - medium: string - small: string - tiny: string - } - metaData: { - altText: string - altText_En: string - copyRight: string - title: string - } + src: string + altText: string + altText_En: string } } diff --git a/packages/design-system/lib/components/HotelCard/HotelCard.stories.tsx b/packages/design-system/lib/components/HotelCard/HotelCard.stories.tsx index 4037d047f..039705fda 100644 --- a/packages/design-system/lib/components/HotelCard/HotelCard.stories.tsx +++ b/packages/design-system/lib/components/HotelCard/HotelCard.stories.tsx @@ -1,8 +1,8 @@ import type { Meta, StoryObj } from '@storybook/nextjs-vite' import { HotelCard } from './index' -import { fn } from 'storybook/test' import { RateTypeEnum } from '@scandic-hotels/common/constants/rateType' +import { fn } from 'storybook/test' import { Button } from '../Button' import { MaterialIcon } from '../Icons/MaterialIcon' @@ -70,7 +70,6 @@ export const Default: Story = { { src: 'img/img2.jpg', alt: 'Alt text', - smallSrc: 'img/img2.jpg', caption: 'Caption', }, ], @@ -97,3 +96,10 @@ export const MapListing: Story = { type: 'mapListing', }, } + +export const WithoutImage: Story = { + args: { + ...Default.args, + images: [], + }, +} diff --git a/packages/design-system/lib/components/HotelCard/HotelCardDialogImage/index.tsx b/packages/design-system/lib/components/HotelCard/HotelCardDialogImage/index.tsx index 70fa45f6b..2350313b5 100644 --- a/packages/design-system/lib/components/HotelCard/HotelCardDialogImage/index.tsx +++ b/packages/design-system/lib/components/HotelCard/HotelCardDialogImage/index.tsx @@ -1,12 +1,12 @@ import Image from '../../Image' -import { hotelCardDialogImageVariants } from './variants' import { TripAdvisorChip } from '../../TripAdvisorChip' +import { hotelCardDialogImageVariants } from './variants' -import styles from './hotelCardDialogImage.module.css' +import ImageFallback from '../../ImageFallback' export type HotelCardDialogImageProps = { - firstImage?: string + imageSrc?: string altText?: string rating?: { tripAdvisor?: number | null } imageError: boolean @@ -15,7 +15,7 @@ export type HotelCardDialogImageProps = { } export function HotelCardDialogImage({ - firstImage, + imageSrc, altText, rating, imageError, @@ -26,11 +26,11 @@ export function HotelCardDialogImage({ return (
- {!firstImage || imageError ? ( -
+ {!imageSrc || imageError ? ( + ) : ( {altText setImageError(true)} diff --git a/packages/design-system/lib/components/HotelCard/HotelDialogCard/StandaloneHotelCardDialog/index.tsx b/packages/design-system/lib/components/HotelCard/HotelDialogCard/StandaloneHotelCardDialog/index.tsx index d64e1edc5..48fad03d8 100644 --- a/packages/design-system/lib/components/HotelCard/HotelDialogCard/StandaloneHotelCardDialog/index.tsx +++ b/packages/design-system/lib/components/HotelCard/HotelDialogCard/StandaloneHotelCardDialog/index.tsx @@ -14,14 +14,14 @@ import { OldDSButton as Button } from '../../../OldDSButton' import Subtitle from '../../../Subtitle' import { Typography } from '../../../Typography' -import { NoPriceAvailableCard } from '../../NoPriceAvailableCard' import { HotelCardDialogImage } from '../../HotelCardDialogImage' +import { NoPriceAvailableCard } from '../../NoPriceAvailableCard' -import styles from './standaloneHotelCardDialog.module.css' import { Lang } from '@scandic-hotels/common/constants/language' -import { HotelPin } from '../../../Map/types' import { FacilityToIcon } from '../../../FacilityToIcon' +import { HotelPin } from '../../../Map/types' import { HotelPointsRow } from '../../HotelPointsRow' +import styles from './standaloneHotelCardDialog.module.css' interface StandaloneHotelCardProps { data: HotelPin @@ -75,7 +75,7 @@ export function StandaloneHotelCardDialog({ = { title: 'Components/HotelInfoCard', component: HotelInfoCard, @@ -104,19 +104,16 @@ export const Default: Story = { { src: './img/GrandHotelBudapest.png', alt: 'Grand Hotel Budapest', - smallSrc: './img/GrandHotelBudapest.png', caption: 'Grand Hotel Budapest', }, { src: './img/img1.png', alt: 'Image 1', - smallSrc: './img/img1.png', caption: 'Image 1', }, { src: './img/img2.png', alt: 'Image 2', - smallSrc: './img/img2.png', caption: 'Image 2', }, ], diff --git a/packages/design-system/lib/components/ImageGallery/index.tsx b/packages/design-system/lib/components/ImageGallery/index.tsx index 52dc4ef3a..ce91c5138 100644 --- a/packages/design-system/lib/components/ImageGallery/index.tsx +++ b/packages/design-system/lib/components/ImageGallery/index.tsx @@ -7,8 +7,8 @@ import { useIntl } from 'react-intl' import { MaterialIcon } from '../Icons/MaterialIcon' import Image from '../Image' import ImageFallback from '../ImageFallback' -import { Typography } from '../Typography' import Lightbox from '../Lightbox' +import { Typography } from '../Typography' import styles from './imageGallery.module.css' @@ -16,7 +16,6 @@ export interface GalleryImage { src: string alt: string caption?: string | null - smallSrc?: string | null } type ImageGalleryProps = { @@ -50,7 +49,7 @@ function ImageGallery({ } : { height, width: height * 1.5 } - if (!images || images.length === 0 || imageError) { + if (!images?.length || imageError) { return } diff --git a/packages/design-system/lib/components/Lightbox/Gallery/index.tsx b/packages/design-system/lib/components/Lightbox/Gallery/index.tsx index da61f5216..2abec0823 100644 --- a/packages/design-system/lib/components/Lightbox/Gallery/index.tsx +++ b/packages/design-system/lib/components/Lightbox/Gallery/index.tsx @@ -10,8 +10,8 @@ import { Typography } from '../../Typography' import Image from '../../Image' -import styles from './gallery.module.css' import { LightboxImage } from '..' +import styles from './gallery.module.css' type GalleryProps = { images: LightboxImage[] @@ -164,7 +164,7 @@ export default function Gallery({ {getThumbImages().map((image, index) => ( {image.alt} {images.map((image, index) => ( {image.alt} { if (!val) { return DEFAULT_IMAGE_OBJ } - return val + return { + src: val.imageSizes.original, + altText: val.metaData.altText, + altText_En: val.metaData.altText_En, + title: val.metaData.title, + title_En: val.metaData.title_En, + } }) diff --git a/packages/trpc/lib/routers/hotels/schemas/packages.ts b/packages/trpc/lib/routers/hotels/schemas/packages.ts index 770f394cf..0c134b55e 100644 --- a/packages/trpc/lib/routers/hotels/schemas/packages.ts +++ b/packages/trpc/lib/routers/hotels/schemas/packages.ts @@ -5,7 +5,7 @@ import { CurrencyEnum } from "@scandic-hotels/common/constants/currency" import { BreakfastPackageEnum } from "../../../enums/breakfast" import { PackageTypeEnum } from "../../../enums/packages" import { RoomPackageCodeEnum } from "../../../enums/roomFilter" -import { imageSizesSchema } from "./image" +import { imageSchema } from "./image" // TODO: Remove optional and default when the API change has been deployed export const packagePriceSchema = z @@ -38,7 +38,7 @@ export const ancillaryContentSchema = z.object({ }), title: z.string(), descriptions: z.object({ html: z.string() }), - images: z.array(z.object({ imageSizes: imageSizesSchema })), + images: z.array(imageSchema), requiresDeliveryTime: z.boolean(), })