diff --git a/components/ContentType/HotelPage/SidePeeks/Amenities/AccordionAmenities/Breakfast/index.tsx b/components/ContentType/HotelPage/SidePeeks/Amenities/AccordionAmenities/Breakfast/index.tsx index d19dc93c9..8e7c7c479 100644 --- a/components/ContentType/HotelPage/SidePeeks/Amenities/AccordionAmenities/Breakfast/index.tsx +++ b/components/ContentType/HotelPage/SidePeeks/Amenities/AccordionAmenities/Breakfast/index.tsx @@ -1,9 +1,15 @@ import AccordionItem from "@/components/TempDesignSystem/Accordion/AccordionItem" import { getIntl } from "@/i18n" +import OpeningHours from "../../../OpeningHours" + +import type { BreakfastAmenityProps } from "@/types/components/hotelPage/sidepeek/amenities" import { IconName } from "@/types/components/icon" -export default async function BreakfastAmenity() { +export default async function BreakfastAmenity({ + openingHours, + alternateOpeningHours, +}: BreakfastAmenityProps) { const intl = await getIntl() return ( - {/* TODO: breakfast to be implemented */} + ) } diff --git a/components/ContentType/HotelPage/SidePeeks/Amenities/index.tsx b/components/ContentType/HotelPage/SidePeeks/Amenities/index.tsx index 4026621b1..d5cbbfc37 100644 --- a/components/ContentType/HotelPage/SidePeeks/Amenities/index.tsx +++ b/components/ContentType/HotelPage/SidePeeks/Amenities/index.tsx @@ -21,6 +21,7 @@ export default async function AmenitiesSidePeek({ parking, checkInInformation, accessibility, + restaurants, }: AmenitiesSidePeekProps) { const lang = getLang() const intl = await getIntl() @@ -40,6 +41,17 @@ export default async function AmenitiesSidePeek({ (amenity) => !amenitiesToRemove.includes(amenity.id) ) + const breakfastOpeningHours = restaurants + ?.map((restaurant) => { + const breakfastDetail = restaurant.openingDetails.find( + (details) => + details.openingHours.name === "Breakfast" || + details.openingHours.name === intl.formatMessage({ id: "Breakfast" }) + ) + return breakfastDetail + }) + .filter(Boolean)[0] + return ( {parking.length ? : null} - + + {breakfastOpeningHours && ( + + )} {accessibility && ( diff --git a/components/ContentType/HotelPage/SidePeeks/MeetingsAndConferences/index.tsx b/components/ContentType/HotelPage/SidePeeks/MeetingsAndConferences/index.tsx index f1a1c5101..733c1953b 100644 --- a/components/ContentType/HotelPage/SidePeeks/MeetingsAndConferences/index.tsx +++ b/components/ContentType/HotelPage/SidePeeks/MeetingsAndConferences/index.tsx @@ -1,4 +1,5 @@ import { meetingsAndConferences } from "@/constants/routes/hotelPageParams" +import { getMeetingRooms } from "@/lib/trpc/memoizedRequests" import Image from "@/components/Image" import Button from "@/components/TempDesignSystem/Button" @@ -10,6 +11,8 @@ import Title from "@/components/TempDesignSystem/Text/Title" import { getIntl } from "@/i18n" import { getLang } from "@/i18n/serverContext" +import { getConferenceRoomTexts } from "./util" + import styles from "./meetingsAndConferences.module.css" import type { MeetingsAndConferencesSidePeekProps } from "@/types/components/hotelPage/sidepeek/meetingsAndConferences" @@ -17,10 +20,17 @@ import type { MeetingsAndConferencesSidePeekProps } from "@/types/components/hot export default async function MeetingsAndConferencesSidePeek({ meetingFacilities, descriptions, + hotelId, link, }: MeetingsAndConferencesSidePeekProps) { const lang = getLang() - const intl = await getIntl() + const [intl, meetingRooms] = await Promise.all([ + getIntl(), + getMeetingRooms({ hotelId, language: lang }), + ]) + + const { seatingText, roomText } = await getConferenceRoomTexts(meetingRooms) + const fallbackAlt = intl.formatMessage({ id: "Creative spaces for meetings" }) const primaryImage = meetingFacilities?.heroImages[0]?.imageSizes.medium @@ -65,6 +75,14 @@ export default async function MeetingsAndConferencesSidePeek({ {descriptions?.medium && ( {descriptions.medium} )} + {roomText || seatingText ? ( + + {roomText} + {roomText && seatingText &&
} + {seatingText} + + ) : null} + {link && (