Feat(SW-1275) cancel booking my stay * feat(SW-1276) UI implementation Desktop part 1 for MyStay * feat(SW-1276) UI implementation Desktop part 2 for MyStay * feat(SW-1276) UI implementation Mobile part 1 for MyStay * refactor: move files from MyStay/MyStay to MyStay * feat(SW-1276) Sidepeek implementation * feat(SW-1276): Refactoring * feat(SW-1276) UI implementation Mobile part 2 for MyStay * feat(SW-1276): translations * feat(SW-1276) fixed skeleton * feat(SW-1276): Added missing translations * feat(SW-1276) fixed translations * feat(SW-1275) cancel modal * feat(SW-1275): Mutate cancel booking * feat(SW-1275) added translations * feat(SW-1275) match current cancellationReason * feat(SW-1275) Added modal for manage stay * feat(SW-1275) Added missing icon * feat(SW-1275) New Dont cancel button * feat(SW-1275) Added preperation for Cancellation number * feat(SW-1275): added --modal-box-shadow * feat(SW-1718) Add to calendar * feat(SW-1718) general add to calendar Approved-by: Niclas Edenvin
95 lines
3.1 KiB
TypeScript
95 lines
3.1 KiB
TypeScript
"use client"
|
|
import { useIntl } from "react-intl"
|
|
|
|
import Link from "@/components/TempDesignSystem/Link"
|
|
import Body from "@/components/TempDesignSystem/Text/Body"
|
|
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
|
|
import Title from "@/components/TempDesignSystem/Text/Title"
|
|
|
|
import AddToCalendar from "../../AddToCalendar"
|
|
import AddToCalendarButton from "./Actions/AddToCalendarButton"
|
|
import DownloadInvoice from "./Actions/DownloadInvoice"
|
|
import { generateDateTime } from "./Actions/helpers"
|
|
import ManageBooking from "./Actions/ManageBooking"
|
|
|
|
import styles from "./header.module.css"
|
|
|
|
import type { EventAttributes } from "ics"
|
|
|
|
import type { BookingConfirmationHeaderProps } from "@/types/components/hotelReservation/bookingConfirmation/header"
|
|
|
|
export default function Header({
|
|
booking,
|
|
hotel,
|
|
mainRef,
|
|
}: BookingConfirmationHeaderProps) {
|
|
const intl = useIntl()
|
|
|
|
const text = intl.formatMessage<React.ReactNode>(
|
|
{
|
|
id: "Thank you for booking with us! We look forward to welcoming you and hope you have a pleasant stay. If you have any questions or need to make changes to your reservation, please <emailLink>contact us.</emailLink>",
|
|
},
|
|
{
|
|
emailLink: (str) => (
|
|
<Link color="burgundy" href="#" textDecoration="underline">
|
|
{str}
|
|
</Link>
|
|
),
|
|
}
|
|
)
|
|
|
|
const event: EventAttributes = {
|
|
busyStatus: "FREE",
|
|
categories: ["booking", "hotel", "stay"],
|
|
created: generateDateTime(booking.createDateTime),
|
|
description: hotel.hotelContent.texts.descriptions.medium,
|
|
end: generateDateTime(booking.checkOutDate),
|
|
endInputType: "utc",
|
|
geo: {
|
|
lat: hotel.location.latitude,
|
|
lon: hotel.location.longitude,
|
|
},
|
|
location: `${hotel.address.streetAddress}, ${hotel.address.zipCode} ${hotel.address.city} ${hotel.address.country}`,
|
|
start: generateDateTime(booking.checkInDate),
|
|
startInputType: "utc",
|
|
status: "CONFIRMED",
|
|
title: hotel.name,
|
|
url: hotel.contactInformation.websiteUrl,
|
|
}
|
|
|
|
return (
|
|
<header className={styles.header}>
|
|
<hgroup className={styles.hgroup}>
|
|
<Title as="h2" color="red" textTransform="uppercase" type="h2">
|
|
{intl.formatMessage({ id: "Booking confirmation" })}
|
|
</Title>
|
|
<Title as="h2" color="burgundy" textTransform="uppercase" type="h1">
|
|
{hotel.name}
|
|
</Title>
|
|
</hgroup>
|
|
<Subtitle color="uiTextHighContrast" type="two">
|
|
{intl.formatMessage(
|
|
{ id: "Reservation number {value}" },
|
|
{
|
|
value: booking.confirmationNumber,
|
|
}
|
|
)}
|
|
</Subtitle>
|
|
<Body className={styles.body}>{text}</Body>
|
|
<div className={styles.actions}>
|
|
<AddToCalendar
|
|
checkInDate={booking.checkInDate}
|
|
event={event}
|
|
hotelName={hotel.name}
|
|
renderButton={(onPress) => <AddToCalendarButton onPress={onPress} />}
|
|
/>
|
|
<ManageBooking
|
|
confirmationNumber={booking.confirmationNumber}
|
|
lastName={booking.guest.lastName}
|
|
/>
|
|
<DownloadInvoice mainRef={mainRef} />
|
|
</div>
|
|
</header>
|
|
)
|
|
}
|