"use client" import { notFound } from "next/navigation" import { useIntl } from "react-intl" import { CheckIcon, ChevronRightSmallIcon, InfoCircleIcon, } from "@/components/Icons" import Modal from "@/components/Modal" import Button from "@/components/TempDesignSystem/Button" import Divider from "@/components/TempDesignSystem/Divider" import Link from "@/components/TempDesignSystem/Link" import Body from "@/components/TempDesignSystem/Text/Body" import Caption from "@/components/TempDesignSystem/Text/Caption" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import { formatPrice } from "@/utils/numberFormatting" import styles from "./receipt.module.css" import type { BookingConfirmationReceiptProps } from "@/types/components/hotelReservation/bookingConfirmation/receipt" import { BreakfastPackageEnum } from "@/types/enums/breakfast" export default function Receipt({ booking, hotel, room, }: BookingConfirmationReceiptProps) { const intl = useIntl() if (!room) { return notFound() } const breakfastPkgSelected = booking.packages.find( (pkg) => pkg.code === BreakfastPackageEnum.REGULAR_BREAKFAST ) const breakfastPkgIncluded = booking.packages.find( (pkg) => pkg.code === BreakfastPackageEnum.FREE_MEMBER_BREAKFAST ) return (
{intl.formatMessage({ id: "Booking summary" })}
{room.name} {booking.rateDefinition.isMemberRate ? (
{intl.formatMessage({ id: "N/A" })} {formatPrice(intl, booking.roomPrice, booking.currencyCode)}
) : ( {formatPrice(intl, booking.roomPrice, booking.currencyCode)} )} {intl.formatMessage( { id: "{totalAdults, plural, one {# adult} other {# adults}}" }, { totalAdults: booking.adults, } )} {booking.rateDefinition.cancellationText} {intl.formatMessage({ id: "Reservation policy" })} } title={booking.rateDefinition.cancellationText || ""} subtitle={ booking.rateDefinition.cancellationRule == "CancellableBefore6PM" ? intl.formatMessage({ id: "Pay later" }) : intl.formatMessage({ id: "Pay now" }) } >
{booking.rateDefinition.generalTerms?.map((info) => ( {info} ))}
{room.bedType.description} {formatPrice(intl, 0, booking.currencyCode)}
{intl.formatMessage({ id: "Breakfast buffet" })} {booking.rateDefinition.breakfastIncluded ?? breakfastPkgIncluded ? ( {intl.formatMessage({ id: "Included" })} ) : null} {breakfastPkgSelected ? ( {formatPrice( intl, breakfastPkgSelected.totalPrice, breakfastPkgSelected.currency )} ) : null}
{intl.formatMessage({ id: "Total price" })} {formatPrice(intl, booking.totalPrice, booking.currencyCode)}
{intl.formatMessage( { id: "Approx. {value}" }, { value: "N/A", } )}
) }