import { useIntl } from "react-intl" import { FacilityIcon } from "@scandic-hotels/design-system/Icons/FacilityIcon" import ImageGallery from "@scandic-hotels/design-system/ImageGallery" import { Typography } from "@scandic-hotels/design-system/Typography" import { BED_TYPE_ICONS, type BedTypes } from "../../../misc/bedTypeIcons" import styles from "./roomSidePeekContent.module.css" import type { ApiImage, Room } from "@scandic-hotels/trpc/types/hotel" interface RoomSidePeekContentProps { room: Room } export function RoomSidePeekContent({ room }: RoomSidePeekContentProps) { const intl = useIntl() const roomSize = room.roomSize const totalOccupancy = room.totalOccupancy const roomDescription = room.descriptions.medium const galleryImages = mapApiImagesToGalleryImages(room.images) return (
{totalOccupancy && (

{intl.formatMessage( { defaultMessage: "Max. {max, plural, one {{range} guest} other {{range} guests}}", }, { max: totalOccupancy.max, range: totalOccupancy.range, } )}

)} {roomSize && (

{roomSize.min === roomSize.max ? intl.formatMessage( { defaultMessage: "{roomSize} m²", }, { roomSize: roomSize.min, } ) : intl.formatMessage( { defaultMessage: "{roomSizeMin}–{roomSizeMax} m²", }, { roomSizeMin: roomSize.min, roomSizeMax: roomSize.max, } )}

)}

{intl.formatMessage({ defaultMessage: "Room amenities", })}

    {[...room.roomFacilities] .sort((a, b) => a.sortOrder - b.sortOrder) .map((facility) => { return (
  • {facility.availableInAllRooms ? facility.name : intl.formatMessage( { defaultMessage: "{facility} (available in some rooms)", }, { facility: facility.name, } )}
  • ) })}

{intl.formatMessage({ defaultMessage: "Bed options", })}

{intl.formatMessage({ defaultMessage: "Subject to availability", })}

{intl.formatMessage({ defaultMessage: "About the hotel", })}

{roomDescription}

) } function mapApiImagesToGalleryImages(apiImages: ApiImage[]) { return apiImages.map((apiImage) => ({ src: apiImage.imageSizes.medium, 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, })) }