Merged in feat/lokalise-rebuild (pull request #2993)
Feat/lokalise rebuild * chore(lokalise): update translation ids * chore(lokalise): easier to switch between projects * chore(lokalise): update translation ids * . * . * . * . * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * . * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * chore(lokalise): new translations * merge * switch to errors for missing id's * merge * sync translations Approved-by: Linus Flood
This commit is contained in:
@@ -53,11 +53,13 @@ export default function AdditionalInfoForm({
|
||||
<div>
|
||||
<Title level="h2" as="h3">
|
||||
{intl.formatMessage({
|
||||
id: "hotelReservation.findMyBooking.title",
|
||||
defaultMessage: "Find your booking",
|
||||
})}
|
||||
</Title>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "hotelReservation.findMyBooking.additionalInfoText",
|
||||
defaultMessage: "We need some details to confirm your identity.",
|
||||
})}
|
||||
</Body>
|
||||
@@ -65,6 +67,7 @@ export default function AdditionalInfoForm({
|
||||
<div className={styles.inputs}>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.firstName",
|
||||
defaultMessage: "First name",
|
||||
})}
|
||||
name="firstName"
|
||||
@@ -72,6 +75,7 @@ export default function AdditionalInfoForm({
|
||||
/>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.email",
|
||||
defaultMessage: "Email",
|
||||
})}
|
||||
name="email"
|
||||
@@ -87,6 +91,7 @@ export default function AdditionalInfoForm({
|
||||
disabled={form.formState.isSubmitting}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "common.confirm",
|
||||
defaultMessage: "Confirm",
|
||||
})}
|
||||
</Button>
|
||||
|
||||
@@ -55,6 +55,7 @@ export default function FindMyBooking() {
|
||||
logger.error("Failed to create ref id", error)
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "findMyBooking.failedToSubmit",
|
||||
defaultMessage: "Failed to submit form, please try again later.",
|
||||
})
|
||||
)
|
||||
@@ -74,11 +75,13 @@ export default function FindMyBooking() {
|
||||
<div>
|
||||
<Title level="h2" as="h3">
|
||||
{intl.formatMessage({
|
||||
id: "findMyBooking.findYourStay",
|
||||
defaultMessage: "Find your stay",
|
||||
})}
|
||||
</Title>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "findMyBooking.manageBooking",
|
||||
defaultMessage:
|
||||
"View and manage your booking made via our website or app.",
|
||||
})}
|
||||
@@ -87,6 +90,7 @@ export default function FindMyBooking() {
|
||||
<div className={[styles.inputs, styles.grid].join(" ")}>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.bookingNumber",
|
||||
defaultMessage: "Booking number",
|
||||
})}
|
||||
name="confirmationNumber"
|
||||
@@ -94,6 +98,7 @@ export default function FindMyBooking() {
|
||||
/>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.firstName",
|
||||
defaultMessage: "First name",
|
||||
})}
|
||||
name="firstName"
|
||||
@@ -101,6 +106,7 @@ export default function FindMyBooking() {
|
||||
/>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.lastName",
|
||||
defaultMessage: "Last name",
|
||||
})}
|
||||
name="lastName"
|
||||
@@ -108,6 +114,7 @@ export default function FindMyBooking() {
|
||||
/>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.email",
|
||||
defaultMessage: "Email",
|
||||
})}
|
||||
name="email"
|
||||
@@ -119,12 +126,14 @@ export default function FindMyBooking() {
|
||||
<div className={styles.footnote}>
|
||||
<Caption type="bold">
|
||||
{intl.formatMessage({
|
||||
id: "findMyBooking.cantFindYourStay",
|
||||
defaultMessage: "Can't find your stay?",
|
||||
})}
|
||||
</Caption>
|
||||
<Caption>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "findMyBooking.customerService",
|
||||
defaultMessage:
|
||||
"Please contact <link>customer service</link>.",
|
||||
},
|
||||
@@ -150,6 +159,7 @@ export default function FindMyBooking() {
|
||||
disabled={form.formState.isSubmitting || update.isPending}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "common.find",
|
||||
defaultMessage: "Find",
|
||||
})}
|
||||
</Button>
|
||||
|
||||
@@ -50,9 +50,11 @@ export default function ActionButtons({
|
||||
const intl = useIntl()
|
||||
const isConfirmStep = currentStep === AncillaryStepEnum.confirmation
|
||||
const confirmLabel = intl.formatMessage({
|
||||
id: "common.confirm",
|
||||
defaultMessage: "Confirm",
|
||||
})
|
||||
const continueLabel = intl.formatMessage({
|
||||
id: "common.continue",
|
||||
defaultMessage: "Continue",
|
||||
})
|
||||
const quantityWithCard = useWatch<AncillaryQuantityFormData>({
|
||||
@@ -99,6 +101,7 @@ export default function ActionButtons({
|
||||
className={styles.priceButton}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "common.priceDetails",
|
||||
defaultMessage: "Price details",
|
||||
})}
|
||||
<MaterialIcon
|
||||
@@ -120,6 +123,7 @@ export default function ActionButtons({
|
||||
onPress={isMobile ? prevStepMobile : prevStep}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "common.back",
|
||||
defaultMessage: "Back",
|
||||
})}
|
||||
</Button>
|
||||
|
||||
@@ -37,6 +37,7 @@ export default function PriceSummary({
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<h2>
|
||||
{intl.formatMessage({
|
||||
id: "common.summary",
|
||||
defaultMessage: "Summary",
|
||||
})}
|
||||
</h2>
|
||||
@@ -50,6 +51,7 @@ export default function PriceSummary({
|
||||
title={item.title}
|
||||
quantity={item.quantityWithCard}
|
||||
label={intl.formatMessage({
|
||||
id: "booking.priceIncludingVat",
|
||||
defaultMessage: "Price including VAT",
|
||||
})}
|
||||
value={formatPrice(intl, item.totalPrice, item.currency)}
|
||||
@@ -60,11 +62,17 @@ export default function PriceSummary({
|
||||
title={item.title}
|
||||
quantity={item.quantityWithPoints}
|
||||
label={intl.formatMessage({
|
||||
id: "common.points",
|
||||
defaultMessage: "Points",
|
||||
})}
|
||||
value={`${item.points} ${intl.formatMessage({
|
||||
defaultMessage: "points",
|
||||
})}`}
|
||||
value={intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage:
|
||||
"{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{ points: item.points }
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
<Divider />
|
||||
@@ -76,9 +84,11 @@ export default function PriceSummary({
|
||||
<p>
|
||||
{hasTotalPrice
|
||||
? intl.formatMessage({
|
||||
id: "priceSummary.totalPriceIncludingVat",
|
||||
defaultMessage: "Total price including VAT",
|
||||
})
|
||||
: intl.formatMessage({
|
||||
id: "common.totalPoints",
|
||||
defaultMessage: "Total points",
|
||||
})}
|
||||
</p>
|
||||
@@ -93,10 +103,14 @@ export default function PriceSummary({
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
{hasTotalPoints && hasTotalPrice ? " + " : null}
|
||||
{hasTotalPoints
|
||||
? // eslint-disable-next-line formatjs/no-literal-string-in-jsx
|
||||
`${totalPoints} ${intl.formatMessage({
|
||||
defaultMessage: "points",
|
||||
})}`
|
||||
? intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage:
|
||||
"{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{ points: totalPoints }
|
||||
)
|
||||
: null}
|
||||
</p>
|
||||
</Typography>
|
||||
|
||||
@@ -77,6 +77,7 @@ export default function PriceDetails({
|
||||
const items = [
|
||||
{
|
||||
title: `${selectedAncillary.title} / ${intl.formatMessage({
|
||||
id: "common.adult",
|
||||
defaultMessage: "adult",
|
||||
})}`,
|
||||
totalPrice: breakfastData.priceAdult,
|
||||
@@ -88,6 +89,7 @@ export default function PriceDetails({
|
||||
if (breakfastData.nrOfPayingChildren > 0) {
|
||||
items.push({
|
||||
title: `${selectedAncillary.title} / ${intl.formatMessage({
|
||||
id: "common.children",
|
||||
defaultMessage: "Children",
|
||||
})} 4-12`,
|
||||
totalPrice: breakfastData.priceChild,
|
||||
@@ -101,6 +103,7 @@ export default function PriceDetails({
|
||||
items.push({
|
||||
title: `${selectedAncillary.title} / ${intl.formatMessage(
|
||||
{
|
||||
id: "common.childrenUnderAge",
|
||||
defaultMessage: "Children under {age}",
|
||||
},
|
||||
{ age: 4 }
|
||||
@@ -135,6 +138,7 @@ export default function PriceDetails({
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "common.total",
|
||||
defaultMessage: "Total",
|
||||
})}
|
||||
</p>
|
||||
@@ -144,6 +148,7 @@ export default function PriceDetails({
|
||||
<p className={styles.vatText}>
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
{`(${intl.formatMessage({
|
||||
id: "common.inclVAT",
|
||||
defaultMessage: "Incl. VAT",
|
||||
})})`}
|
||||
</p>
|
||||
@@ -154,6 +159,7 @@ export default function PriceDetails({
|
||||
<p className={styles.hideOnDesktop}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfNights",
|
||||
defaultMessage:
|
||||
"{totalNights, plural, one {# night} other {# nights}}",
|
||||
},
|
||||
@@ -165,6 +171,7 @@ export default function PriceDetails({
|
||||
" / " +
|
||||
intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfGuests",
|
||||
defaultMessage:
|
||||
"{value, plural, one {# guest} other {# guests}}",
|
||||
},
|
||||
@@ -186,6 +193,7 @@ export default function PriceDetails({
|
||||
<p className={styles.showOnDesktop}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfNights",
|
||||
defaultMessage:
|
||||
"{totalNights, plural, one {# night} other {# nights}}",
|
||||
},
|
||||
@@ -197,6 +205,7 @@ export default function PriceDetails({
|
||||
" / " +
|
||||
intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfGuests",
|
||||
defaultMessage:
|
||||
"{value, plural, one {# guest} other {# guests}}",
|
||||
},
|
||||
@@ -231,14 +240,14 @@ export default function PriceDetails({
|
||||
</div>
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<p>
|
||||
{totalPoints}
|
||||
{
|
||||
/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */
|
||||
" "
|
||||
}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "points",
|
||||
})}
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage:
|
||||
"{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{ points: totalPoints }
|
||||
)}
|
||||
</p>
|
||||
</Typography>
|
||||
</div>
|
||||
|
||||
@@ -54,6 +54,7 @@ export default function ConfirmationStep({
|
||||
<p>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "addAncillary.confirmationStep.refundPolicy",
|
||||
defaultMessage:
|
||||
"All ancillaries are fully refundable until {date}. Time selection and special requests are also modifiable.",
|
||||
},
|
||||
@@ -66,6 +67,7 @@ export default function ConfirmationStep({
|
||||
<Typography variant="Title/Subtitle/md">
|
||||
<h2>
|
||||
{intl.formatMessage({
|
||||
id: "addAncillary.confirmationStep.pointsToBeDeducted",
|
||||
defaultMessage: "Points to be deducted now",
|
||||
})}
|
||||
</h2>
|
||||
@@ -77,9 +79,11 @@ export default function ConfirmationStep({
|
||||
<h2>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
defaultMessage: "{amount} points",
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage:
|
||||
"{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{ amount: totalPoints }
|
||||
{ points: totalPoints }
|
||||
)}
|
||||
</h2>
|
||||
</Typography>
|
||||
@@ -88,6 +92,7 @@ export default function ConfirmationStep({
|
||||
<p>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "addAncillary.confirmationStep.pointsAvailable",
|
||||
defaultMessage: "{amount} points available",
|
||||
},
|
||||
{ amount: currentPoints }
|
||||
@@ -103,6 +108,7 @@ export default function ConfirmationStep({
|
||||
<Typography variant="Title/Subtitle/md">
|
||||
<h2>
|
||||
{intl.formatMessage({
|
||||
id: "addAncillary.confirmationStep.reserveWithCard",
|
||||
defaultMessage: "Reserve with Card",
|
||||
})}
|
||||
</h2>
|
||||
@@ -111,6 +117,7 @@ export default function ConfirmationStep({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "addAncillary.confirmationStep.paymentAtCheckInInfo",
|
||||
defaultMessage:
|
||||
"Payment will be made on check-in. The card will be only used to guarantee the ancillary in case of no-show.",
|
||||
})}
|
||||
@@ -122,6 +129,7 @@ export default function ConfirmationStep({
|
||||
value={PaymentMethodEnum.card}
|
||||
cardNumber={guaranteeInfo.maskedCard.slice(-4)}
|
||||
label={intl.formatMessage({
|
||||
id: "common.creditCard",
|
||||
defaultMessage: "Credit card",
|
||||
})}
|
||||
/>
|
||||
@@ -131,6 +139,7 @@ export default function ConfirmationStep({
|
||||
<Alert
|
||||
type={AlertTypeEnum.Info}
|
||||
text={intl.formatMessage({
|
||||
id: "addAncillary.confirmationStep.guaranteeAddCard",
|
||||
defaultMessage:
|
||||
"By adding a card you also guarantee your room booking for late arrival.",
|
||||
})}
|
||||
@@ -151,15 +160,19 @@ export default function ConfirmationStep({
|
||||
name="paymentMethod"
|
||||
label={
|
||||
savedCreditCards?.length
|
||||
? intl.formatMessage({
|
||||
defaultMessage: "OTHER",
|
||||
})
|
||||
? intl
|
||||
.formatMessage({
|
||||
id: "common.other",
|
||||
defaultMessage: "Other",
|
||||
})
|
||||
.toUpperCase()
|
||||
: undefined
|
||||
}
|
||||
>
|
||||
<PaymentOption
|
||||
value={PaymentMethodEnum.card}
|
||||
label={intl.formatMessage({
|
||||
id: "common.creditCard",
|
||||
defaultMessage: "Credit card",
|
||||
})}
|
||||
/>
|
||||
@@ -174,6 +187,7 @@ export default function ConfirmationStep({
|
||||
<p>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "addAncillary.confirmationStep.termsAndConditionsNotice",
|
||||
defaultMessage:
|
||||
"Yes, I accept the general <termsAndConditionsLink>Booking & Cancellation Terms</termsAndConditionsLink>, and understand that Scandic will process my personal data in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>. There you can learn more about what data we process, your rights and where to turn if you have questions.",
|
||||
},
|
||||
@@ -209,6 +223,7 @@ export default function ConfirmationStep({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "booking.acceptBookingTerms",
|
||||
defaultMessage: "I accept the booking and cancellation terms",
|
||||
})}
|
||||
</span>
|
||||
|
||||
@@ -18,6 +18,7 @@ export default function DeliveryMethodStep() {
|
||||
<Typography variant="Body/Supporting text (caption)/smBold">
|
||||
<h3>
|
||||
{intl.formatMessage({
|
||||
id: "ancillaries.deliveredAt",
|
||||
defaultMessage: "Delivered at:",
|
||||
})}
|
||||
</h3>
|
||||
@@ -33,6 +34,7 @@ export default function DeliveryMethodStep() {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "addAncillary.deliveryDetailsStep.deliveryTimeDescription",
|
||||
defaultMessage:
|
||||
"All extras are delivered together. Changes to delivery times will affect previously ordered extras.",
|
||||
})}
|
||||
@@ -41,6 +43,7 @@ export default function DeliveryMethodStep() {
|
||||
<div className={styles.select}>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "addAncillary.deliveryDetailsStep.optionalTextLabel",
|
||||
defaultMessage: "Other Requests",
|
||||
})}
|
||||
name="optionalText"
|
||||
@@ -48,6 +51,7 @@ export default function DeliveryMethodStep() {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<h3>
|
||||
{intl.formatMessage({
|
||||
id: "common.optional",
|
||||
defaultMessage: "Optional",
|
||||
})}
|
||||
</h3>
|
||||
|
||||
@@ -35,6 +35,7 @@ export default function SelectAncillaryStep() {
|
||||
{categoryName
|
||||
? categoryName
|
||||
: intl.formatMessage({
|
||||
id: "common.other",
|
||||
defaultMessage: "Other",
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -58,6 +58,7 @@ export default function SelectQuantityStep({ user }: SelectQuantityStepProps) {
|
||||
<Typography variant="Title/Subtitle/md">
|
||||
<h2 className={styles.selectTitle}>
|
||||
{intl.formatMessage({
|
||||
id: "addAncillary.selectQuantityStep.payWithPoints",
|
||||
defaultMessage: "Pay with points",
|
||||
})}
|
||||
</h2>
|
||||
@@ -68,6 +69,7 @@ export default function SelectQuantityStep({ user }: SelectQuantityStepProps) {
|
||||
<Typography variant="Title/Overline/sm">
|
||||
<h2>
|
||||
{intl.formatMessage({
|
||||
id: "common.totalPoints",
|
||||
defaultMessage: "Total points",
|
||||
})}
|
||||
</h2>
|
||||
@@ -81,6 +83,7 @@ export default function SelectQuantityStep({ user }: SelectQuantityStepProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<h2 className={styles.insufficientPoints}>
|
||||
{intl.formatMessage({
|
||||
id: "addAncillary.selectQuantityStep.insufficientPoints",
|
||||
defaultMessage: "Insufficient points",
|
||||
})}
|
||||
</h2>
|
||||
@@ -89,6 +92,7 @@ export default function SelectQuantityStep({ user }: SelectQuantityStepProps) {
|
||||
<Select
|
||||
name="quantityWithPoints"
|
||||
label={intl.formatMessage({
|
||||
id: "addAncillary.selectQuantityStep.selectQuantityLabel",
|
||||
defaultMessage: "Select quantity",
|
||||
})}
|
||||
items={pointsQuantityOptions}
|
||||
@@ -100,11 +104,8 @@ export default function SelectQuantityStep({ user }: SelectQuantityStepProps) {
|
||||
<div className={styles.select}>
|
||||
<Typography variant="Title/Subtitle/md">
|
||||
<h2 className={styles.selectTitle}>
|
||||
{
|
||||
/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */
|
||||
" "
|
||||
}
|
||||
{intl.formatMessage({
|
||||
id: "addAncillary.selectQuantityStep.payWithCard",
|
||||
defaultMessage: "Pay with card at the hotel",
|
||||
})}
|
||||
</h2>
|
||||
@@ -112,6 +113,7 @@ export default function SelectQuantityStep({ user }: SelectQuantityStepProps) {
|
||||
<Select
|
||||
name="quantityWithCard"
|
||||
label={intl.formatMessage({
|
||||
id: "addAncillary.selectQuantityStep.selectQuantityLabel",
|
||||
defaultMessage: "Select quantity",
|
||||
})}
|
||||
items={cardQuantityOptions}
|
||||
@@ -136,6 +138,7 @@ function BreakfastInfo() {
|
||||
|
||||
if (!breakfastData) {
|
||||
return intl.formatMessage({
|
||||
id: "ancillaries.unableToDisplayBreakfastPrices",
|
||||
defaultMessage: "Unable to display breakfast prices.",
|
||||
})
|
||||
}
|
||||
@@ -145,6 +148,7 @@ function BreakfastInfo() {
|
||||
<Alert
|
||||
type={AlertTypeEnum.Info}
|
||||
text={intl.formatMessage({
|
||||
id: "addAncillary.selectQuantityStep.breakfastInfoMessage",
|
||||
defaultMessage:
|
||||
"Breakfast can only be added for the entire duration of the stay and for all guests.",
|
||||
})}
|
||||
@@ -158,6 +162,7 @@ function BreakfastInfo() {
|
||||
<dt>
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
{`${breakfastData.nrOfAdults} × ${intl.formatMessage({
|
||||
id: "common.adults",
|
||||
defaultMessage: "Adults",
|
||||
})}`}
|
||||
</dt>
|
||||
@@ -177,6 +182,7 @@ function BreakfastInfo() {
|
||||
<dt>
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
{`${breakfastData.nrOfPayingChildren} × ${intl.formatMessage({
|
||||
id: "common.ages",
|
||||
defaultMessage: "ages",
|
||||
})} 4-12`}
|
||||
</dt>
|
||||
@@ -198,12 +204,14 @@ function BreakfastInfo() {
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
{`${breakfastData.nrOfFreeChildren} × ${intl.formatMessage({
|
||||
defaultMessage: "under",
|
||||
id: "common.under",
|
||||
})} 4`}
|
||||
</dt>
|
||||
<dd>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Free",
|
||||
id: "common.free",
|
||||
})}
|
||||
</Body>
|
||||
</dd>
|
||||
|
||||
@@ -110,6 +110,7 @@ export default function AddAncillaryFlowModal({
|
||||
|
||||
const ancillaryErrorMessage = intl.formatMessage(
|
||||
{
|
||||
id: "addAncillaryFlowModal.errorMessage.ancillary",
|
||||
defaultMessage:
|
||||
"Something went wrong. {ancillary} could not be added to your booking!",
|
||||
},
|
||||
@@ -170,6 +171,7 @@ export default function AddAncillaryFlowModal({
|
||||
toast.success(
|
||||
intl.formatMessage(
|
||||
{
|
||||
id: "addAncillaryFlowModal.ancillaryAdded",
|
||||
defaultMessage: "{ancillary} added to your booking!",
|
||||
},
|
||||
{ ancillary: selectedAncillary?.title }
|
||||
@@ -274,6 +276,7 @@ export default function AddAncillaryFlowModal({
|
||||
if (isBreakfast && !breakfastData) {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "errorMessage.somethingWentWrong",
|
||||
defaultMessage: "Something went wrong!",
|
||||
})
|
||||
)
|
||||
@@ -352,6 +355,7 @@ export default function AddAncillaryFlowModal({
|
||||
const modalTitle =
|
||||
currentStep === AncillaryStepEnum.selectAncillary
|
||||
? intl.formatMessage({
|
||||
id: "ancillaries.upgradeYourStay",
|
||||
defaultMessage: "Upgrade your stay",
|
||||
})
|
||||
: selectedAncillary?.title
|
||||
@@ -392,10 +396,12 @@ export default function AddAncillaryFlowModal({
|
||||
<p>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
defaultMessage: "{value} points",
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage:
|
||||
"{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{
|
||||
value: selectedAncillary.points,
|
||||
points: selectedAncillary.points,
|
||||
}
|
||||
)}
|
||||
</p>
|
||||
@@ -450,6 +456,7 @@ function BreakfastPriceList() {
|
||||
|
||||
if (!breakfastData) {
|
||||
return intl.formatMessage({
|
||||
id: "ancillaries.unableToDisplayBreakfastPrices",
|
||||
defaultMessage: "Unable to display breakfast prices.",
|
||||
})
|
||||
}
|
||||
@@ -461,6 +468,7 @@ function BreakfastPriceList() {
|
||||
<span>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "addAncillaryFlowModal.pricePerNightPerAdult",
|
||||
defaultMessage: "{price}/night per adult",
|
||||
},
|
||||
{
|
||||
@@ -480,6 +488,7 @@ function BreakfastPriceList() {
|
||||
<span>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "addAncillaryFlowModal.pricePerNightPerKids",
|
||||
defaultMessage: "{price}/night for kids (ages 4–12)",
|
||||
},
|
||||
{
|
||||
@@ -500,6 +509,7 @@ function BreakfastPriceList() {
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "addAncillaryFlowModal.freeBreakfastForKids",
|
||||
defaultMessage: "Free for kids (under 4)",
|
||||
})}
|
||||
</span>
|
||||
|
||||
@@ -39,22 +39,27 @@ export default function RemoveButton({
|
||||
return (
|
||||
<Dialog
|
||||
bodyText={intl.formatMessage({
|
||||
id: "myStay.removeAncillary.confirmationText",
|
||||
defaultMessage: "Are you sure you want to remove this product?",
|
||||
})}
|
||||
proceedText={intl.formatMessage({
|
||||
id: "common.remove",
|
||||
defaultMessage: "Remove",
|
||||
})}
|
||||
proceedIsPending={removePackage.isPending}
|
||||
cancelButtonText={intl.formatMessage({
|
||||
id: "common.cancel",
|
||||
defaultMessage: "Cancel",
|
||||
})}
|
||||
titleText={`${intl.formatMessage({
|
||||
id: "common.remove",
|
||||
defaultMessage: "Remove",
|
||||
})} ${title}`}
|
||||
trigger={
|
||||
<Button intent="text" size="small" variant="icon" theme="base">
|
||||
<MaterialIcon icon="delete" color="CurrentColor" />
|
||||
{intl.formatMessage({
|
||||
id: "common.remove",
|
||||
defaultMessage: "Remove",
|
||||
})}
|
||||
</Button>
|
||||
@@ -87,6 +92,7 @@ export default function RemoveButton({
|
||||
onError: () => {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "errorMessage.somethingWentWrong",
|
||||
defaultMessage: "Something went wrong!",
|
||||
})
|
||||
)
|
||||
|
||||
@@ -42,6 +42,7 @@ export function AddedAncillaries({
|
||||
<Subtitle>
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "My extras",
|
||||
id: "myStay.addedAncillaries.title",
|
||||
})}
|
||||
</Subtitle>
|
||||
|
||||
@@ -49,6 +50,7 @@ export function AddedAncillaries({
|
||||
<div className={styles.deliveryTime}>
|
||||
<Body color="baseTextHighContrast" textTransform="bold">
|
||||
{intl.formatMessage({
|
||||
id: "ancillaries.deliveredAt",
|
||||
defaultMessage: "Delivered at:",
|
||||
})}
|
||||
</Body>
|
||||
@@ -63,6 +65,7 @@ export function AddedAncillaries({
|
||||
const ancillaryTitle = `${
|
||||
ancillary.code === BreakfastPackageEnum.ANCILLARY_REGULAR_BREAKFAST
|
||||
? intl.formatMessage({
|
||||
id: "common.breakfast",
|
||||
defaultMessage: "Breakfast",
|
||||
})
|
||||
: (ancillaries?.find(
|
||||
@@ -89,6 +92,7 @@ export function AddedAncillaries({
|
||||
<div className={styles.commentMobile}>
|
||||
<Body textTransform="bold">
|
||||
{intl.formatMessage({
|
||||
id: "common.otherRequests",
|
||||
defaultMessage: "Other requests",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
@@ -104,15 +108,22 @@ export function AddedAncillaries({
|
||||
<div className={styles.paymentMobile}>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "common.total",
|
||||
defaultMessage: "Total",
|
||||
})}
|
||||
</Body>
|
||||
<Body textTransform="bold">
|
||||
{ancillary.currency.toLowerCase() === "points"
|
||||
? // eslint-disable-next-line formatjs/no-literal-string-in-jsx
|
||||
`${ancillary.totalPrice} ${intl.formatMessage({
|
||||
defaultMessage: "Points",
|
||||
})}`
|
||||
? intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage:
|
||||
"{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{
|
||||
points: ancillary.totalPrice,
|
||||
}
|
||||
)
|
||||
: formatPrice(
|
||||
intl,
|
||||
ancillary.totalPrice,
|
||||
@@ -156,15 +167,22 @@ export function AddedAncillaries({
|
||||
<div className={styles.payment}>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "common.total",
|
||||
defaultMessage: "Total",
|
||||
})}
|
||||
</Body>
|
||||
<Body textTransform="bold">
|
||||
{ancillary.currency.toLowerCase() === "points"
|
||||
? // eslint-disable-next-line formatjs/no-literal-string-in-jsx
|
||||
`${ancillary.totalPrice} ${intl.formatMessage({
|
||||
defaultMessage: "Points",
|
||||
})}`
|
||||
? intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage:
|
||||
"{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{
|
||||
points: ancillary.totalPrice,
|
||||
}
|
||||
)
|
||||
: formatPrice(
|
||||
intl,
|
||||
ancillary.totalPrice,
|
||||
@@ -182,6 +200,7 @@ export function AddedAncillaries({
|
||||
<>
|
||||
<Body textTransform="bold">
|
||||
{intl.formatMessage({
|
||||
id: "common.otherRequests",
|
||||
defaultMessage: "Other requests",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
|
||||
@@ -17,6 +17,7 @@ export default function ViewAllAncillaries() {
|
||||
onClick={openModal}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "common.seeAll",
|
||||
defaultMessage: "See all",
|
||||
})}
|
||||
<MaterialIcon icon="chevron_right" size={20} color="CurrentColor" />
|
||||
|
||||
@@ -58,10 +58,12 @@ export function Ancillaries({
|
||||
breakfastPackageAdults
|
||||
? {
|
||||
description: intl.formatMessage({
|
||||
id: "common.buffet",
|
||||
defaultMessage: "Buffet",
|
||||
}),
|
||||
id: breakfastPackageAdults.code,
|
||||
title: intl.formatMessage({
|
||||
id: "common.breakfast",
|
||||
defaultMessage: "Breakfast",
|
||||
}),
|
||||
price: {
|
||||
@@ -76,6 +78,7 @@ export function Ancillaries({
|
||||
hotelId: Number(bookedRoom.hotelId),
|
||||
internalCategoryName: "Food",
|
||||
translatedCategoryName: intl.formatMessage({
|
||||
id: "common.food",
|
||||
defaultMessage: "Food",
|
||||
}),
|
||||
}
|
||||
@@ -102,6 +105,7 @@ export function Ancillaries({
|
||||
<div className={styles.title}>
|
||||
<Title as="h5">
|
||||
{intl.formatMessage({
|
||||
id: "ancillaries.upgradeYourStay",
|
||||
defaultMessage: "Upgrade your stay",
|
||||
})}
|
||||
</Title>
|
||||
|
||||
@@ -82,13 +82,19 @@ export function mapAncillaries(
|
||||
ancillaries ?? [],
|
||||
breakfastAncillary,
|
||||
"Popular",
|
||||
intl.formatMessage({ defaultMessage: "Popular" })
|
||||
intl.formatMessage({
|
||||
defaultMessage: "Popular",
|
||||
id: "myStay.ancillaries.popularCategory",
|
||||
})
|
||||
)
|
||||
const withBreakfastFood = addBreakfastPackage(
|
||||
withBreakfastPopular,
|
||||
breakfastAncillary,
|
||||
"Food",
|
||||
intl.formatMessage({ defaultMessage: "Food" })
|
||||
intl.formatMessage({
|
||||
id: "common.food",
|
||||
defaultMessage: "Food",
|
||||
})
|
||||
)
|
||||
|
||||
return filterPoints(withBreakfastFood, user)
|
||||
|
||||
@@ -29,6 +29,7 @@ export default function BookingSummary({ hotel }: BookingSummaryProps) {
|
||||
<Typography variant="Title/sm">
|
||||
<h2 className={styles.title}>
|
||||
{intl.formatMessage({
|
||||
id: "common.practicalInformation",
|
||||
defaultMessage: "Practical information",
|
||||
})}
|
||||
</h2>
|
||||
@@ -50,6 +51,7 @@ export default function BookingSummary({ hotel }: BookingSummaryProps) {
|
||||
]}
|
||||
supportingText={intl.formatMessage(
|
||||
{
|
||||
id: "myStay.bookingSummary.coordinates",
|
||||
defaultMessage: "Long {long} ∙ Lat {lat}",
|
||||
},
|
||||
{
|
||||
@@ -61,6 +63,7 @@ export default function BookingSummary({ hotel }: BookingSummaryProps) {
|
||||
{
|
||||
href: directionsUrl,
|
||||
text: intl.formatMessage({
|
||||
id: "common.directions",
|
||||
defaultMessage: "Directions",
|
||||
}),
|
||||
icon: (
|
||||
@@ -75,6 +78,7 @@ export default function BookingSummary({ hotel }: BookingSummaryProps) {
|
||||
{
|
||||
href: `mailto:${hotel.contactInformation.email}`,
|
||||
text: intl.formatMessage({
|
||||
id: "common.email",
|
||||
defaultMessage: "Email",
|
||||
}),
|
||||
icon: (
|
||||
@@ -89,6 +93,7 @@ export default function BookingSummary({ hotel }: BookingSummaryProps) {
|
||||
{
|
||||
href: hotel.contactInformation.websiteUrl,
|
||||
text: intl.formatMessage({
|
||||
id: "myStay.bookingSummary.homepage",
|
||||
defaultMessage: "Homepage",
|
||||
}),
|
||||
icon: (
|
||||
|
||||
@@ -83,6 +83,7 @@ export default function GuestDetails({
|
||||
|
||||
toast.success(
|
||||
intl.formatMessage({
|
||||
id: "myStay.guestDetails.updatedSuccess",
|
||||
defaultMessage: "Guest details updated",
|
||||
})
|
||||
)
|
||||
@@ -91,6 +92,7 @@ export default function GuestDetails({
|
||||
} else {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "myStay.guestDetails.updatedError",
|
||||
defaultMessage: "Failed to update guest details",
|
||||
})
|
||||
)
|
||||
@@ -99,6 +101,7 @@ export default function GuestDetails({
|
||||
onError: () => {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "myStay.guestDetails.updatedError",
|
||||
defaultMessage: "Failed to update guest details",
|
||||
})
|
||||
)
|
||||
@@ -140,6 +143,7 @@ export default function GuestDetails({
|
||||
<Typography variant="Title/Overline/sm">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.yourMemberLevel",
|
||||
defaultMessage: "Your member level",
|
||||
})}
|
||||
</p>
|
||||
@@ -160,6 +164,7 @@ export default function GuestDetails({
|
||||
<Typography variant="Title/Overline/sm">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.myTotalPoints",
|
||||
defaultMessage: "My total points",
|
||||
})}
|
||||
</p>
|
||||
@@ -183,6 +188,7 @@ export default function GuestDetails({
|
||||
<p className={styles.memberNumber}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "myStay.membershipId",
|
||||
defaultMessage: "Membership ID: {nr}",
|
||||
},
|
||||
{
|
||||
@@ -228,6 +234,7 @@ export default function GuestDetails({
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.guestDetails.modifyGuestDetails",
|
||||
defaultMessage: "Modify guest details",
|
||||
})}
|
||||
</span>
|
||||
@@ -257,6 +264,7 @@ export default function GuestDetails({
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.guestDetails.modifyGuestDetails",
|
||||
defaultMessage: "Modify guest details",
|
||||
})}
|
||||
</span>
|
||||
@@ -271,6 +279,7 @@ export default function GuestDetails({
|
||||
>
|
||||
<Dialog
|
||||
aria-label={intl.formatMessage({
|
||||
id: "myStay.guestDetails.modifyGuestDetails",
|
||||
defaultMessage: "Modify guest details",
|
||||
})}
|
||||
>
|
||||
@@ -278,6 +287,7 @@ export default function GuestDetails({
|
||||
<FormProvider {...form}>
|
||||
<ModalContentWithActions
|
||||
title={intl.formatMessage({
|
||||
id: "myStay.guestDetails.modifyGuestDetails",
|
||||
defaultMessage: "Modify guest details",
|
||||
})}
|
||||
onClose={() => setIsModifyGuestDetailsOpen(false)}
|
||||
@@ -292,9 +302,11 @@ export default function GuestDetails({
|
||||
primaryAction={{
|
||||
label: isFirstStep
|
||||
? intl.formatMessage({
|
||||
id: "myStay.modifyContact.saveUpdates",
|
||||
defaultMessage: "Save updates",
|
||||
})
|
||||
: intl.formatMessage({
|
||||
id: "common.confirm",
|
||||
defaultMessage: "Confirm",
|
||||
}),
|
||||
onClick: isFirstStep
|
||||
@@ -306,9 +318,11 @@ export default function GuestDetails({
|
||||
secondaryAction={{
|
||||
label: isFirstStep
|
||||
? intl.formatMessage({
|
||||
id: "common.back",
|
||||
defaultMessage: "Back",
|
||||
})
|
||||
: intl.formatMessage({
|
||||
id: "common.cancel",
|
||||
defaultMessage: "Cancel",
|
||||
}),
|
||||
onClick: () => {
|
||||
|
||||
@@ -17,6 +17,7 @@ export async function Header({
|
||||
<Title as="h2" color="white" className={styles.title} textAlign="center">
|
||||
<BiroScript type="two" tilted="medium">
|
||||
{intl.formatMessage({
|
||||
id: "myStay.header.myStayAt",
|
||||
defaultMessage: "My stay at",
|
||||
})}
|
||||
{
|
||||
|
||||
@@ -49,6 +49,7 @@ export default function ModifyContact({
|
||||
<div className={`${styles.row} ${styles.gridEqual}`}>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.firstName",
|
||||
defaultMessage: "First name",
|
||||
})}
|
||||
maxLength={30}
|
||||
@@ -57,6 +58,7 @@ export default function ModifyContact({
|
||||
/>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.lastName",
|
||||
defaultMessage: "Last name",
|
||||
})}
|
||||
maxLength={30}
|
||||
@@ -72,6 +74,7 @@ export default function ModifyContact({
|
||||
errors.countryCode?.message?.toString()
|
||||
)}
|
||||
label={intl.formatMessage({
|
||||
id: "common.country",
|
||||
defaultMessage: "Country",
|
||||
})}
|
||||
lang={lang}
|
||||
@@ -81,6 +84,7 @@ export default function ModifyContact({
|
||||
<div className={styles.row}>
|
||||
<Input
|
||||
label={intl.formatMessage({
|
||||
id: "common.email",
|
||||
defaultMessage: "Email",
|
||||
})}
|
||||
name="email"
|
||||
@@ -91,6 +95,7 @@ export default function ModifyContact({
|
||||
<div className={styles.row}>
|
||||
<Phone
|
||||
countryLabel={intl.formatMessage({
|
||||
id: "common.countryCode",
|
||||
defaultMessage: "Country code",
|
||||
})}
|
||||
countriesWithTranslatedName={getFormattedCountryList(intl)}
|
||||
@@ -100,6 +105,7 @@ export default function ModifyContact({
|
||||
errors.phoneNumber?.message?.toString()
|
||||
)}
|
||||
label={intl.formatMessage({
|
||||
id: "common.phoneNumber",
|
||||
defaultMessage: "Phone number",
|
||||
})}
|
||||
name="phoneNumber"
|
||||
@@ -111,6 +117,7 @@ export default function ModifyContact({
|
||||
<>
|
||||
<Body color="uiTextHighContrast">
|
||||
{intl.formatMessage({
|
||||
id: "myStay.modifyContact.confirmationMessage",
|
||||
defaultMessage:
|
||||
"Are you sure you want to change your guest details?",
|
||||
})}
|
||||
|
||||
@@ -26,6 +26,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "common.bookingNumber",
|
||||
defaultMessage: "Booking number",
|
||||
})}
|
||||
</dt>
|
||||
@@ -39,6 +40,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "common.room",
|
||||
defaultMessage: "Room",
|
||||
})}
|
||||
</dt>
|
||||
@@ -52,6 +54,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.receipt.rate",
|
||||
defaultMessage: "Rate",
|
||||
})}
|
||||
</dt>
|
||||
@@ -65,6 +68,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "common.checkIn",
|
||||
defaultMessage: "Check-in",
|
||||
})}
|
||||
</dt>
|
||||
@@ -82,6 +86,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "common.checkOut",
|
||||
defaultMessage: "Check-out",
|
||||
})}
|
||||
</dt>
|
||||
@@ -101,6 +106,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.receipt.numberOfNights",
|
||||
defaultMessage: "Number of nights",
|
||||
})}
|
||||
</dt>
|
||||
@@ -116,6 +122,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.receipt.numberOfGuests",
|
||||
defaultMessage: "Number of guests",
|
||||
})}
|
||||
</dt>
|
||||
@@ -124,6 +131,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<dd>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfAdults",
|
||||
defaultMessage:
|
||||
"{adults, plural, one {# adult} other {# adults}}",
|
||||
},
|
||||
@@ -134,6 +142,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
{", "}
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfChildren",
|
||||
defaultMessage:
|
||||
"{children, plural, one {# child} other {# children}}",
|
||||
},
|
||||
@@ -149,6 +158,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.receipt.bedType",
|
||||
defaultMessage: "Bed type",
|
||||
})}
|
||||
</dt>
|
||||
@@ -163,6 +173,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "booking.roomClassification",
|
||||
defaultMessage: "Room classification",
|
||||
})}
|
||||
</dt>
|
||||
@@ -170,6 +181,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dd>
|
||||
{intl.formatMessage({
|
||||
id: "common.petFriendly",
|
||||
defaultMessage: "Pet-friendly",
|
||||
})}
|
||||
</dd>
|
||||
@@ -181,6 +193,7 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "common.breakfast",
|
||||
defaultMessage: "Breakfast",
|
||||
})}
|
||||
</dt>
|
||||
@@ -189,9 +202,11 @@ export default async function Footer({ booking, room }: FooterProps) {
|
||||
<dd>
|
||||
{booking.rateDefinition.breakfastIncluded
|
||||
? intl.formatMessage({
|
||||
id: "common.included",
|
||||
defaultMessage: "Included",
|
||||
})
|
||||
: intl.formatMessage({
|
||||
id: "common.notIncluded",
|
||||
defaultMessage: "Not included",
|
||||
})}
|
||||
</dd>
|
||||
|
||||
@@ -41,9 +41,13 @@ export default async function Specification({
|
||||
: ""
|
||||
const breakfastPointsString =
|
||||
breakfastTotalPriceInPoints > 0
|
||||
? `${breakfastTotalPriceInPoints} ${intl.formatMessage({
|
||||
defaultMessage: "Points",
|
||||
})}`
|
||||
? intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage: "{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{ points: breakfastTotalPriceInPoints }
|
||||
)
|
||||
: ""
|
||||
const breakfastPlusString =
|
||||
breakfastMoneyString && breakfastPointsString ? " + " : ""
|
||||
@@ -64,12 +68,14 @@ export default async function Specification({
|
||||
<Typography variant="Body/Supporting text (caption)/smBold">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.receipt.accommodation",
|
||||
defaultMessage: "Accommodation",
|
||||
})}
|
||||
{!booking.rateDefinition.mustBeGuaranteed && (
|
||||
<>
|
||||
{" - "}
|
||||
{intl.formatMessage({
|
||||
id: "myStay.receipt.prepaidRoom",
|
||||
defaultMessage: "Room is prepaid",
|
||||
})}
|
||||
</>
|
||||
@@ -80,6 +86,7 @@ export default async function Specification({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "booking.priceIncludingVat",
|
||||
defaultMessage: "Price including VAT",
|
||||
})}
|
||||
</dt>
|
||||
@@ -89,6 +96,7 @@ export default async function Specification({
|
||||
{!booking.rateDefinition.mustBeGuaranteed
|
||||
? // eslint-disable-next-line formatjs/no-literal-string-in-jsx
|
||||
`(${intl.formatMessage({
|
||||
id: "myStay.receipt.prepaid",
|
||||
defaultMessage: "PREPAID",
|
||||
})}) `
|
||||
: null}
|
||||
@@ -102,6 +110,7 @@ export default async function Specification({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.receipt.petRoomChargeIncludingVat",
|
||||
defaultMessage: "Pet room charge including VAT",
|
||||
})}
|
||||
</dt>
|
||||
@@ -116,6 +125,7 @@ export default async function Specification({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt className={styles.tertiary}>
|
||||
{intl.formatMessage({
|
||||
id: "booking.priceExcludingVat",
|
||||
defaultMessage: "Price excluding VAT",
|
||||
})}
|
||||
</dt>
|
||||
@@ -130,6 +140,7 @@ export default async function Specification({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<dt className={styles.tertiary}>
|
||||
{intl.formatMessage({
|
||||
id: "common.vat",
|
||||
defaultMessage: "VAT",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
@@ -161,6 +172,7 @@ export default async function Specification({
|
||||
)
|
||||
)[0]?.title ??
|
||||
intl.formatMessage({
|
||||
id: "myStay.receipt.unknownItem",
|
||||
defaultMessage: "Unknown item",
|
||||
})}
|
||||
</span>
|
||||
@@ -178,9 +190,11 @@ export default async function Specification({
|
||||
<dt>
|
||||
{ancillary.currency !== CurrencyEnum.POINTS
|
||||
? intl.formatMessage({
|
||||
id: "booking.priceIncludingVat",
|
||||
defaultMessage: "Price including VAT",
|
||||
})
|
||||
: intl.formatMessage({
|
||||
id: "common.price",
|
||||
defaultMessage: "Price",
|
||||
})}
|
||||
</dt>
|
||||
@@ -205,6 +219,7 @@ export default async function Specification({
|
||||
<Typography variant="Body/Supporting text (caption)/smBold">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "common.breakfast",
|
||||
defaultMessage: "Breakfast",
|
||||
})}
|
||||
</span>
|
||||
@@ -220,9 +235,11 @@ export default async function Specification({
|
||||
<dt>
|
||||
{breakfastTotalPriceInMoney > 0
|
||||
? intl.formatMessage({
|
||||
id: "booking.priceIncludingVat",
|
||||
defaultMessage: "Price including VAT",
|
||||
})
|
||||
: intl.formatMessage({
|
||||
id: "common.price",
|
||||
defaultMessage: "Price",
|
||||
})}
|
||||
</dt>
|
||||
|
||||
@@ -22,9 +22,13 @@ export default async function Total({ booking, currency }: TotalProps) {
|
||||
totalPriceInMoney > 0 ? `${totalPriceInMoney} ${currency}` : ""
|
||||
const pointsString =
|
||||
totalPriceInPoints > 0
|
||||
? `${totalPriceInPoints} ${intl.formatMessage({
|
||||
defaultMessage: "Points",
|
||||
})}`
|
||||
? intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfPoints",
|
||||
defaultMessage: "{points, plural, one {# point} other {# points}}",
|
||||
},
|
||||
{ points: totalPriceInPoints }
|
||||
)
|
||||
: ""
|
||||
const plusString = moneyString && pointsString ? " + " : ""
|
||||
|
||||
@@ -36,11 +40,13 @@ export default async function Total({ booking, currency }: TotalProps) {
|
||||
<div>
|
||||
<span className={styles.title}>
|
||||
{intl.formatMessage({
|
||||
id: "receipt.preliminaryReceipt",
|
||||
defaultMessage: "Preliminary receipt",
|
||||
})}
|
||||
</span>
|
||||
<span className={styles.titleSubtext}>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.receipt.finalVatBreakdownInfo",
|
||||
defaultMessage:
|
||||
"Final VAT breakdown will be provided at check-out.",
|
||||
})}
|
||||
@@ -53,6 +59,7 @@ export default async function Total({ booking, currency }: TotalProps) {
|
||||
<Typography>
|
||||
<dt>
|
||||
{intl.formatMessage({
|
||||
id: "receipt.totalIncludingVat",
|
||||
defaultMessage: "Total including VAT",
|
||||
})}
|
||||
</dt>
|
||||
@@ -67,6 +74,7 @@ export default async function Total({ booking, currency }: TotalProps) {
|
||||
<Typography>
|
||||
<dt className={styles.tertiary}>
|
||||
{intl.formatMessage({
|
||||
id: "receipt.totalExcludingVat",
|
||||
defaultMessage: "Total excluding VAT",
|
||||
})}
|
||||
</dt>
|
||||
@@ -85,6 +93,7 @@ export default async function Total({ booking, currency }: TotalProps) {
|
||||
<Typography>
|
||||
<dt className={styles.tertiary}>
|
||||
{intl.formatMessage({
|
||||
id: "common.vat",
|
||||
defaultMessage: "VAT",
|
||||
})}
|
||||
</dt>
|
||||
|
||||
@@ -152,6 +152,7 @@ export async function Receipt({ refId }: { refId: string }) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
<div>{`${intl.formatMessage({
|
||||
id: "myStay.receipt.member",
|
||||
defaultMessage: "Member",
|
||||
})} ${maskedBooking.guest.membershipNumber}`}</div>
|
||||
</Typography>
|
||||
@@ -204,6 +205,7 @@ export async function Receipt({ refId }: { refId: string }) {
|
||||
<Typography variant="Title/md">
|
||||
<h1>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.accessDenied.loginRequired",
|
||||
defaultMessage: "You need to be logged in to view your booking",
|
||||
})}
|
||||
</h1>
|
||||
@@ -211,6 +213,7 @@ export async function Receipt({ refId }: { refId: string }) {
|
||||
<Typography variant="Body/Lead text">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.accessDenied.loginRequiredMessage",
|
||||
defaultMessage:
|
||||
"And you need to be logged in with the same member account that made the booking.",
|
||||
})}
|
||||
|
||||
@@ -12,7 +12,10 @@ export default function CustomerSupport() {
|
||||
return (
|
||||
<DialogTrigger>
|
||||
<Button fullWidth intent="secondary" size="small">
|
||||
{intl.formatMessage({ defaultMessage: "Customer Support" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.customerSupport",
|
||||
defaultMessage: "Customer support",
|
||||
})}
|
||||
</Button>
|
||||
<CustomerSupportModal />
|
||||
</DialogTrigger>
|
||||
|
||||
@@ -18,7 +18,10 @@ export default function Cancelled() {
|
||||
{/* (S) TODO - Link to where?? */}
|
||||
{!isWebview(pathname) && (
|
||||
<Link className={styles.link} href="#">
|
||||
{intl.formatMessage({ defaultMessage: "Rebook" })}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Rebook",
|
||||
id: "myStay.referenceCard.actions.rebook",
|
||||
})}
|
||||
</Link>
|
||||
)}
|
||||
|
||||
|
||||
@@ -19,9 +19,13 @@ export default function CustomerSupportModal() {
|
||||
phone: state.hotel.contactInformation.phoneNumber,
|
||||
}))
|
||||
|
||||
const title = intl.formatMessage({ defaultMessage: "Customer service" })
|
||||
const title = intl.formatMessage({
|
||||
id: "common.customerService",
|
||||
defaultMessage: "Customer service",
|
||||
})
|
||||
const contact = intl.formatMessage(
|
||||
{
|
||||
id: "myStay.referenceCard.actions.customerSupport.contactInfo",
|
||||
defaultMessage:
|
||||
"Please call {phone} or email us at {email} for assistance with your order.",
|
||||
},
|
||||
@@ -45,6 +49,7 @@ export default function CustomerSupportModal() {
|
||||
<Typography variant="Title/Subtitle/md">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.referenceCard.actions.customerSupport.makeCall",
|
||||
defaultMessage: "Make a call",
|
||||
})}
|
||||
</span>
|
||||
@@ -55,6 +60,7 @@ export default function CustomerSupportModal() {
|
||||
<Typography variant="Title/Subtitle/md">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.referenceCard.actions.customerSupport.sendEmail",
|
||||
defaultMessage: "Send an email",
|
||||
})}
|
||||
</span>
|
||||
@@ -64,10 +70,16 @@ export default function CustomerSupportModal() {
|
||||
</Modal.Content.Body>
|
||||
<Modal.Content.Footer>
|
||||
<Modal.Content.Footer.Secondary onClick={close}>
|
||||
{intl.formatMessage({ defaultMessage: "Back" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.back",
|
||||
defaultMessage: "Back",
|
||||
})}
|
||||
</Modal.Content.Footer.Secondary>
|
||||
<Modal.Content.Footer.Primary intent="secondary" onClick={close}>
|
||||
{intl.formatMessage({ defaultMessage: "Close" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.close",
|
||||
defaultMessage: "Close",
|
||||
})}
|
||||
</Modal.Content.Footer.Primary>
|
||||
</Modal.Content.Footer>
|
||||
</Modal.Content>
|
||||
|
||||
@@ -34,6 +34,7 @@ export default function AddToCalendarButton({
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<span className={styles.text}>
|
||||
{intl.formatMessage({
|
||||
id: "common.addToCalendar",
|
||||
defaultMessage: "Add to calendar",
|
||||
})}
|
||||
</span>
|
||||
|
||||
@@ -17,7 +17,10 @@ export default function Alerts({ children, closeModal }: AlertsProps) {
|
||||
const mainRoom = useMyStayStore((state) => state.bookedRoom)
|
||||
|
||||
if (!mainRoom) {
|
||||
const title = intl.formatMessage({ defaultMessage: "Cancel stay" })
|
||||
const title = intl.formatMessage({
|
||||
id: "booking.cancelStay",
|
||||
defaultMessage: "Cancel stay",
|
||||
})
|
||||
return (
|
||||
<Modal.Content>
|
||||
<Modal.Content.Header handleClose={closeModal} title={title} />
|
||||
@@ -25,9 +28,11 @@ export default function Alerts({ children, closeModal }: AlertsProps) {
|
||||
<Alert
|
||||
type={AlertTypeEnum.Info}
|
||||
heading={intl.formatMessage({
|
||||
id: "myStay.actions.contactBooker",
|
||||
defaultMessage: "Contact the person who booked the stay",
|
||||
})}
|
||||
text={intl.formatMessage({
|
||||
id: "myStay.actions.contactBooker.multiroom.cancel",
|
||||
defaultMessage:
|
||||
"As this is a multiroom stay, the cancellation has to be done by the person who made the booking. Please call 08-517 517 00 to talk to our customer service if you would need further assistance.",
|
||||
})}
|
||||
@@ -35,7 +40,10 @@ export default function Alerts({ children, closeModal }: AlertsProps) {
|
||||
</Modal.Content.Body>
|
||||
<Modal.Content.Footer>
|
||||
<Modal.Content.Footer.Secondary onClick={closeModal}>
|
||||
{intl.formatMessage({ defaultMessage: "Back" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.back",
|
||||
defaultMessage: "Back",
|
||||
})}
|
||||
</Modal.Content.Footer.Secondary>
|
||||
</Modal.Content.Footer>
|
||||
</Modal.Content>
|
||||
|
||||
@@ -46,19 +46,21 @@ export default function CancelStayPriceContainer() {
|
||||
|
||||
const adultsText = intl.formatMessage(
|
||||
{
|
||||
defaultMessage: "{totalAdults, plural, one {# adult} other {# adults}}",
|
||||
id: "booking.numberOfAdults",
|
||||
defaultMessage: "{adults, plural, one {# adult} other {# adults}}",
|
||||
},
|
||||
{ totalAdults: totalAdults }
|
||||
{ adults: totalAdults }
|
||||
)
|
||||
const childrenText = intl.formatMessage(
|
||||
{
|
||||
defaultMessage:
|
||||
"{totalChildren, plural, one {# child} other {# children}}",
|
||||
id: "booking.numberOfChildren",
|
||||
defaultMessage: "{children, plural, one {# child} other {# children}}",
|
||||
},
|
||||
{ totalChildren: totalChildren }
|
||||
{ children: totalChildren }
|
||||
)
|
||||
const nightsText = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfNights",
|
||||
defaultMessage: "{totalNights, plural, one {# night} other {# nights}}",
|
||||
},
|
||||
{ totalNights: nights }
|
||||
@@ -70,7 +72,10 @@ export default function CancelStayPriceContainer() {
|
||||
childrenText={childrenText}
|
||||
nightsText={nightsText}
|
||||
price={formatPrice(intl, 0, bookedRoom.currencyCode)}
|
||||
text={intl.formatMessage({ defaultMessage: "Total due" })}
|
||||
text={intl.formatMessage({
|
||||
id: "booking.totalDue",
|
||||
defaultMessage: "Total due",
|
||||
})}
|
||||
totalChildren={totalChildren}
|
||||
/>
|
||||
)
|
||||
|
||||
@@ -21,11 +21,16 @@ export default function Multiroom() {
|
||||
return null
|
||||
}
|
||||
|
||||
const myRooms = intl.formatMessage({ defaultMessage: "My rooms" })
|
||||
const myRooms = intl.formatMessage({
|
||||
defaultMessage: "My rooms",
|
||||
id: "myStay.cancelStay.myRooms",
|
||||
})
|
||||
const selectRoom = intl.formatMessage({
|
||||
id: "booking.selectRoom",
|
||||
defaultMessage: "Select room",
|
||||
})
|
||||
const cannotBeCancelled = intl.formatMessage({
|
||||
id: "myStay.cancelStay.cannotBeCancelled",
|
||||
defaultMessage: "Cannot be cancelled",
|
||||
})
|
||||
|
||||
@@ -35,6 +40,7 @@ export default function Multiroom() {
|
||||
<Typography variant="Body/Supporting text (caption)/smBold">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.cancelStay.multipleTermsNotice",
|
||||
defaultMessage: "This stay has multiple terms.",
|
||||
})}
|
||||
</p>
|
||||
@@ -58,7 +64,10 @@ interface ListProps {
|
||||
|
||||
function List({ disabled = false, rooms, title }: ListProps) {
|
||||
const intl = useIntl()
|
||||
const refMsg = intl.formatMessage({ defaultMessage: "Ref" })
|
||||
const refMsg = intl.formatMessage({
|
||||
id: "myStay.cancelStay.ref",
|
||||
defaultMessage: "Ref",
|
||||
})
|
||||
return (
|
||||
<div className={styles.rooms}>
|
||||
<Typography variant="Title/Overline/sm">
|
||||
@@ -81,6 +90,7 @@ function List({ disabled = false, rooms, title }: ListProps) {
|
||||
<p className={styles.chipText}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.roomIndex",
|
||||
defaultMessage: "Room {roomIndex}",
|
||||
},
|
||||
{
|
||||
|
||||
@@ -49,16 +49,22 @@ export default function CancelStayConfirmation({
|
||||
.locale(lang)
|
||||
.format(longDateWithYearFormat[lang])
|
||||
|
||||
const title = intl.formatMessage({ defaultMessage: "Cancel booking" })
|
||||
const title = intl.formatMessage({
|
||||
id: "common.cancelBooking",
|
||||
defaultMessage: "Cancel booking",
|
||||
})
|
||||
const primaryLabel = intl.formatMessage({
|
||||
id: "booking.cancelStay",
|
||||
defaultMessage: "Cancel stay",
|
||||
})
|
||||
const secondaryLabel = intl.formatMessage({
|
||||
id: "common.back",
|
||||
defaultMessage: "Back",
|
||||
})
|
||||
|
||||
const notCancelableText = intl.formatMessage(
|
||||
{
|
||||
id: "myStay.referenceCard.actions.cancelStay.notCancelableText",
|
||||
defaultMessage:
|
||||
"Your stay has been booked with <strong>{rate}</strong> terms which unfortunately doesn’t allow for cancellation.",
|
||||
},
|
||||
@@ -70,6 +76,7 @@ export default function CancelStayConfirmation({
|
||||
|
||||
const text = intl.formatMessage(
|
||||
{
|
||||
id: "myStay.referenceCard.actions.cancelStay.confirmationText",
|
||||
defaultMessage:
|
||||
"Are you sure you want to cancel your stay at <strong>{hotel}</strong> from <strong>{checkInDate}</strong> to <strong>{checkOutDate}?</strong> This can't be reversed.",
|
||||
},
|
||||
@@ -123,7 +130,10 @@ export default function CancelStayConfirmation({
|
||||
</Modal.Content.Footer.Primary>
|
||||
) : (
|
||||
<Modal.Content.Footer.Primary intent="secondary" onClick={closeModal}>
|
||||
{intl.formatMessage({ defaultMessage: "Close" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.close",
|
||||
defaultMessage: "Close",
|
||||
})}
|
||||
</Modal.Content.Footer.Primary>
|
||||
)}
|
||||
</Modal.Content.Footer>
|
||||
|
||||
@@ -36,9 +36,11 @@ export default function FinalConfirmation({
|
||||
}))
|
||||
|
||||
const cancelledStayMsg = intl.formatMessage({
|
||||
id: "myStay.cancelStay.stayCancelledToastMessage",
|
||||
defaultMessage: "Your stay was cancelled",
|
||||
})
|
||||
const sorryMsg = intl.formatMessage({
|
||||
id: "myStay.cancelStay.sorryMessage",
|
||||
defaultMessage: "We’re sorry that things didn’t work out.",
|
||||
})
|
||||
|
||||
@@ -86,7 +88,10 @@ export default function FinalConfirmation({
|
||||
<span className={styles.textDefault}>
|
||||
<strong>
|
||||
{intl.formatMessage(
|
||||
{ defaultMessage: "{roomName} room was cancelled" },
|
||||
{
|
||||
id: "myStay.cancelStay.roomCancelledToastMessage",
|
||||
defaultMessage: "{roomName} room was cancelled",
|
||||
},
|
||||
{ roomName: cancelledRoom.roomName }
|
||||
)}
|
||||
</strong>
|
||||
@@ -95,6 +100,7 @@ export default function FinalConfirmation({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<span className={styles.textDefault}>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.cancelStay.stayStillActiveToastMessage",
|
||||
defaultMessage:
|
||||
"Your Stay is still active with the other room",
|
||||
})}
|
||||
@@ -107,6 +113,7 @@ export default function FinalConfirmation({
|
||||
} else {
|
||||
toast.warning(
|
||||
intl.formatMessage({
|
||||
id: "myStay.cancelStay.partialCancellationErrorMessage",
|
||||
defaultMessage:
|
||||
"Some rooms were cancelled successfully, but we encountered issues with others. Please contact customer service for assistance.",
|
||||
})
|
||||
@@ -125,6 +132,7 @@ export default function FinalConfirmation({
|
||||
onError() {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "myStay.cancelStay.cancellationErrorMessage",
|
||||
defaultMessage: "Something went wrong. Please try again later.",
|
||||
})
|
||||
)
|
||||
@@ -145,6 +153,7 @@ export default function FinalConfirmation({
|
||||
} else {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "myStay.cancelStay.cancellationErrorMessage",
|
||||
defaultMessage: "Something went wrong. Please try again later.",
|
||||
})
|
||||
)
|
||||
@@ -152,15 +161,19 @@ export default function FinalConfirmation({
|
||||
}
|
||||
|
||||
const confirm = intl.formatMessage({
|
||||
id: "myStay.cancelStay.confirmCancellation",
|
||||
defaultMessage: "Confirm cancellation",
|
||||
})
|
||||
const dontCancel = intl.formatMessage({
|
||||
id: "myStay.cancelStay.dontCancel",
|
||||
defaultMessage: "Don't cancel",
|
||||
})
|
||||
const text = intl.formatMessage({
|
||||
id: "myStay.cancelStay.finalConfirmationText",
|
||||
defaultMessage: "Are you sure you want to continue with the cancellation?",
|
||||
})
|
||||
const title = intl.formatMessage({
|
||||
id: "common.cancelBooking",
|
||||
defaultMessage: "Cancel booking",
|
||||
})
|
||||
|
||||
|
||||
@@ -20,7 +20,10 @@ export default function CancelStay() {
|
||||
return (
|
||||
<DialogTrigger>
|
||||
<Modal.Button icon="cancel" onClick={trackCancelStay}>
|
||||
{intl.formatMessage({ defaultMessage: "Cancel stay" })}
|
||||
{intl.formatMessage({
|
||||
id: "booking.cancelStay",
|
||||
defaultMessage: "Cancel stay",
|
||||
})}
|
||||
</Modal.Button>
|
||||
<Modal>
|
||||
<Dialog className={styles.dialog}>
|
||||
|
||||
@@ -17,6 +17,7 @@ export default function CannotChangeDate({
|
||||
<Modal.Content.Header
|
||||
handleClose={closeModal}
|
||||
title={intl.formatMessage({
|
||||
id: "myStay.actions.changeDates",
|
||||
defaultMessage: "New dates for the stay",
|
||||
})}
|
||||
/>
|
||||
@@ -24,9 +25,11 @@ export default function CannotChangeDate({
|
||||
<Alert
|
||||
type={AlertTypeEnum.Info}
|
||||
heading={intl.formatMessage({
|
||||
id: "myStay.referenceCard.actions.changeDates.contactCustomerService",
|
||||
defaultMessage: "Contact customer service",
|
||||
})}
|
||||
text={intl.formatMessage({
|
||||
id: "myStay.referenceCard.actions.changeDates.contactCustomerService.text",
|
||||
defaultMessage:
|
||||
"Please contact customer service to update the dates.",
|
||||
})}
|
||||
@@ -34,7 +37,7 @@ export default function CannotChangeDate({
|
||||
</Modal.Content.Body>
|
||||
<Modal.Content.Footer>
|
||||
<Modal.Content.Footer.Secondary onClick={closeModal}>
|
||||
{intl.formatMessage({ defaultMessage: "Back" })}
|
||||
{intl.formatMessage({ defaultMessage: "Back", id: "common.back" })}
|
||||
</Modal.Content.Footer.Secondary>
|
||||
</Modal.Content.Footer>
|
||||
</Modal.Content>
|
||||
|
||||
@@ -17,6 +17,7 @@ export default function MultiRoomBooking({
|
||||
<Modal.Content.Header
|
||||
handleClose={closeModal}
|
||||
title={intl.formatMessage({
|
||||
id: "myStay.actions.changeDates",
|
||||
defaultMessage: "New dates for the stay",
|
||||
})}
|
||||
/>
|
||||
@@ -24,9 +25,11 @@ export default function MultiRoomBooking({
|
||||
<Alert
|
||||
type={AlertTypeEnum.Info}
|
||||
heading={intl.formatMessage({
|
||||
id: "myStay.referenceCard.actions.changeDates.contactCustomerService",
|
||||
defaultMessage: "Contact customer service",
|
||||
})}
|
||||
text={intl.formatMessage({
|
||||
id: "myStay.actions.contactBooker.multiroom.update",
|
||||
defaultMessage:
|
||||
"As this is a multiroom stay, any dates changes are applicable to all rooms. Please contact customer service to update the dates.",
|
||||
})}
|
||||
@@ -34,7 +37,7 @@ export default function MultiRoomBooking({
|
||||
</Modal.Content.Body>
|
||||
<Modal.Content.Footer>
|
||||
<Modal.Content.Footer.Secondary onClick={closeModal}>
|
||||
{intl.formatMessage({ defaultMessage: "Back" })}
|
||||
{intl.formatMessage({ defaultMessage: "Back", id: "common.back" })}
|
||||
</Modal.Content.Footer.Secondary>
|
||||
</Modal.Content.Footer>
|
||||
</Modal.Content>
|
||||
|
||||
@@ -17,6 +17,7 @@ export default function NotMainRoom({
|
||||
<Modal.Content.Header
|
||||
handleClose={closeModal}
|
||||
title={intl.formatMessage({
|
||||
id: "myStay.actions.changeDates",
|
||||
defaultMessage: "New dates for the stay",
|
||||
})}
|
||||
/>
|
||||
@@ -24,9 +25,11 @@ export default function NotMainRoom({
|
||||
<Alert
|
||||
type={AlertTypeEnum.Info}
|
||||
heading={intl.formatMessage({
|
||||
id: "myStay.actions.contactBooker",
|
||||
defaultMessage: "Contact the person who booked the stay",
|
||||
})}
|
||||
text={intl.formatMessage({
|
||||
id: "myStay.actions.contactBooker.multiroom.updateDates",
|
||||
defaultMessage:
|
||||
"As this is a multiroom stay, any dates changes are applicable to all rooms. Please ask the person who booked the stay to contact customer service.",
|
||||
})}
|
||||
@@ -34,7 +37,7 @@ export default function NotMainRoom({
|
||||
</Modal.Content.Body>
|
||||
<Modal.Content.Footer>
|
||||
<Modal.Content.Footer.Secondary onClick={closeModal}>
|
||||
{intl.formatMessage({ defaultMessage: "Back" })}
|
||||
{intl.formatMessage({ defaultMessage: "Back", id: "common.back" })}
|
||||
</Modal.Content.Footer.Secondary>
|
||||
</Modal.Content.Footer>
|
||||
</Modal.Content>
|
||||
|
||||
@@ -23,9 +23,11 @@ export default function PriceAndDate({
|
||||
const intl = useIntl()
|
||||
|
||||
const checkInMsg = intl.formatMessage({
|
||||
id: "common.checkIn",
|
||||
defaultMessage: "Check-in",
|
||||
})
|
||||
const checkOutMsg = intl.formatMessage({
|
||||
id: "common.checkOut",
|
||||
defaultMessage: "Check-out",
|
||||
})
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ export default function Confirmation({
|
||||
|
||||
toast.success(
|
||||
intl.formatMessage({
|
||||
id: "myStay.changeDates.stayUpdatedToastMessage",
|
||||
defaultMessage: "Your stay was updated",
|
||||
})
|
||||
)
|
||||
@@ -72,6 +73,7 @@ export default function Confirmation({
|
||||
} else {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "myStay.changeDates.stayUpdateFailedToastMessage",
|
||||
defaultMessage: "Failed to update your stay",
|
||||
})
|
||||
)
|
||||
@@ -80,6 +82,7 @@ export default function Confirmation({
|
||||
onError: () => {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "myStay.changeDates.stayUpdateFailedToastMessage",
|
||||
defaultMessage: "Failed to update your stay",
|
||||
})
|
||||
)
|
||||
@@ -106,34 +109,40 @@ export default function Confirmation({
|
||||
|
||||
const nightsText = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfNights",
|
||||
defaultMessage: "{totalNights, plural, one {# night} other {# nights}}",
|
||||
},
|
||||
{ totalNights: nights }
|
||||
)
|
||||
const newDatesLabel = intl.formatMessage({
|
||||
id: "myStay.changeDates.newDatesLabel",
|
||||
defaultMessage: "New dates",
|
||||
})
|
||||
const oldDatesLabel = intl.formatMessage({
|
||||
id: "myStay.changeDates.oldDatesLabel",
|
||||
defaultMessage: "Old dates",
|
||||
})
|
||||
const title = intl.formatMessage({
|
||||
id: "myStay.changeDates.confirmationTitle",
|
||||
defaultMessage: "Confirm date change",
|
||||
})
|
||||
const totalDueMsg = intl.formatMessage({
|
||||
id: "myStay.changeDates.payAtHotelMessage",
|
||||
defaultMessage: "Pay at the hotel",
|
||||
})
|
||||
const adultsText = intl.formatMessage(
|
||||
{
|
||||
defaultMessage: "{totalAdults, plural, one {# adult} other {# adults}}",
|
||||
id: "booking.numberOfAdults",
|
||||
defaultMessage: "{adults, plural, one {# adult} other {# adults}}",
|
||||
},
|
||||
{ totalAdults: totalAdults }
|
||||
{ adults: totalAdults }
|
||||
)
|
||||
const childrenText = intl.formatMessage(
|
||||
{
|
||||
defaultMessage:
|
||||
"{totalChildren, plural, one {# child} other {# children}}",
|
||||
id: "booking.numberOfChildren",
|
||||
defaultMessage: "{children, plural, one {# child} other {# children}}",
|
||||
},
|
||||
{ totalChildren: totalChildren }
|
||||
{ children: totalChildren }
|
||||
)
|
||||
|
||||
return (
|
||||
@@ -172,13 +181,16 @@ export default function Confirmation({
|
||||
</Modal.Content.Body>
|
||||
<Modal.Content.Footer>
|
||||
<Modal.Content.Footer.Secondary onClick={closeModal}>
|
||||
{intl.formatMessage({ defaultMessage: "Back" })}
|
||||
{intl.formatMessage({ defaultMessage: "Back", id: "common.back" })}
|
||||
</Modal.Content.Footer.Secondary>
|
||||
<Modal.Content.Footer.Primary
|
||||
disabled={updateBooking.isPending}
|
||||
onClick={handleModifyStay}
|
||||
>
|
||||
{intl.formatMessage({ defaultMessage: "Confirm" })}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Confirm",
|
||||
id: "common.confirm",
|
||||
})}
|
||||
</Modal.Content.Footer.Primary>
|
||||
</Modal.Content.Footer>
|
||||
</Modal.Content>
|
||||
|
||||
@@ -10,9 +10,11 @@ export default function NoAvailability() {
|
||||
<Alert
|
||||
type={AlertTypeEnum.Info}
|
||||
heading={intl.formatMessage({
|
||||
id: "booking.noAvailability",
|
||||
defaultMessage: "No availability",
|
||||
})}
|
||||
text={intl.formatMessage({
|
||||
id: "myStay.referenceCard.actions.changeDates.noAvailability.text",
|
||||
defaultMessage: "No single rooms are available on these dates",
|
||||
})}
|
||||
/>
|
||||
|
||||
@@ -62,8 +62,14 @@ export default function NewDates({ checkInDate, checkOutDate }: NewDatesProps) {
|
||||
}
|
||||
}
|
||||
|
||||
const checkInLabel = intl.formatMessage({ defaultMessage: "Check-in" })
|
||||
const checkOutLabel = intl.formatMessage({ defaultMessage: "Check-out" })
|
||||
const checkInLabel = intl.formatMessage({
|
||||
id: "common.checkIn",
|
||||
defaultMessage: "Check-in",
|
||||
})
|
||||
const checkOutLabel = intl.formatMessage({
|
||||
id: "common.checkOut",
|
||||
defaultMessage: "Check-out",
|
||||
})
|
||||
|
||||
const checkInText = dt(fromDate)
|
||||
.locale(lang)
|
||||
|
||||
@@ -45,6 +45,7 @@ export default function Form({
|
||||
} else {
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "myStay.actions.changeDates.selectDate.errorMessage",
|
||||
defaultMessage: "Please select dates",
|
||||
})
|
||||
)
|
||||
@@ -58,6 +59,7 @@ export default function Form({
|
||||
<Modal.Content.Header
|
||||
handleClose={closeModal}
|
||||
title={intl.formatMessage({
|
||||
id: "myStay.actions.changeDates",
|
||||
defaultMessage: "New dates for the stay",
|
||||
})}
|
||||
/>
|
||||
@@ -67,7 +69,10 @@ export default function Form({
|
||||
</Modal.Content.Body>
|
||||
<Modal.Content.Footer>
|
||||
<Modal.Content.Footer.Secondary onClick={closeModal}>
|
||||
{intl.formatMessage({ defaultMessage: "Back" })}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Back",
|
||||
id: "common.back",
|
||||
})}
|
||||
</Modal.Content.Footer.Secondary>
|
||||
<Modal.Content.Footer.Primary
|
||||
disabled={methods.formState.isSubmitting}
|
||||
@@ -75,6 +80,7 @@ export default function Form({
|
||||
type="submit"
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.actions.changeDates.checkAvailability",
|
||||
defaultMessage: "Check availability",
|
||||
})}
|
||||
</Modal.Content.Footer.Primary>
|
||||
|
||||
@@ -34,7 +34,10 @@ export default function ChangeDates() {
|
||||
trackMyStayPageLink("modify dates")
|
||||
}
|
||||
|
||||
const text = intl.formatMessage({ defaultMessage: "Change dates" })
|
||||
const text = intl.formatMessage({
|
||||
defaultMessage: "Change dates",
|
||||
id: "myStay.referenceCard.actions.changeDates",
|
||||
})
|
||||
return (
|
||||
<DialogTrigger>
|
||||
<Modal.Button
|
||||
|
||||
@@ -16,7 +16,10 @@ export default function CustomerSupport() {
|
||||
return (
|
||||
<DialogTrigger>
|
||||
<Modal.Button icon="support_agent" onClick={trackCustomerSupport}>
|
||||
{intl.formatMessage({ defaultMessage: "Customer support" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.customerSupport",
|
||||
defaultMessage: "Customer support",
|
||||
})}
|
||||
</Modal.Button>
|
||||
<CustomerSupportModal />
|
||||
</DialogTrigger>
|
||||
|
||||
@@ -109,6 +109,7 @@ export default function Form() {
|
||||
handleGuaranteeError("No confirmation number")
|
||||
toast.error(
|
||||
intl.formatMessage({
|
||||
id: "errorMessage.somethingWentWrong",
|
||||
defaultMessage: "Something went wrong!",
|
||||
})
|
||||
)
|
||||
@@ -117,6 +118,7 @@ export default function Form() {
|
||||
|
||||
const guaranteeMsg = intl.formatMessage(
|
||||
{
|
||||
id: "myStay.gla.termsAndConditionsMessage",
|
||||
defaultMessage:
|
||||
"I accept the terms for this stay and the general <termsAndConditionsLink>Booking & Cancellation Terms</termsAndConditionsLink>, and understand Scandic will process my personal data for this stay in accordance with <privacyPolicyLink>Scandic's Privacy Policy</privacyPolicyLink>. ",
|
||||
},
|
||||
@@ -169,9 +171,12 @@ export default function Form() {
|
||||
name="paymentMethod"
|
||||
label={
|
||||
savedCreditCards?.length
|
||||
? intl.formatMessage({
|
||||
defaultMessage: "OTHER",
|
||||
})
|
||||
? intl
|
||||
.formatMessage({
|
||||
id: "common.other",
|
||||
defaultMessage: "Other",
|
||||
})
|
||||
.toUpperCase()
|
||||
: undefined
|
||||
}
|
||||
onChange={(method) => {
|
||||
@@ -181,6 +186,7 @@ export default function Form() {
|
||||
<PaymentOption
|
||||
value={PaymentMethodEnum.card}
|
||||
label={intl.formatMessage({
|
||||
id: "common.creditCard",
|
||||
defaultMessage: "Credit card",
|
||||
})}
|
||||
/>
|
||||
@@ -197,6 +203,7 @@ export default function Form() {
|
||||
<Typography variant="Body/Supporting text (caption)/smBold">
|
||||
<span className={styles.textDefault}>
|
||||
{intl.formatMessage({
|
||||
id: "booking.totalDue",
|
||||
defaultMessage: "Total due",
|
||||
})}
|
||||
</span>
|
||||
@@ -204,6 +211,7 @@ export default function Form() {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<span className={styles.textDefault}>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.gla.chargeInfo",
|
||||
defaultMessage:
|
||||
"Your card will only be charged in the event of a no-show",
|
||||
})}
|
||||
|
||||
@@ -43,10 +43,12 @@ export default function GuaranteeLateArrival() {
|
||||
}
|
||||
|
||||
const arriveLateMsg = intl.formatMessage({
|
||||
id: "myStay.gla.arriveLateMessage",
|
||||
defaultMessage:
|
||||
"Planning to arrive after 18.00? Secure your room by guaranteeing it with a credit card. Without the guarantee and in case of no-show, the room might be reallocated after 18:00.",
|
||||
})
|
||||
const text = intl.formatMessage({
|
||||
id: "myStay.gla.heading",
|
||||
defaultMessage: "Guarantee late arrival",
|
||||
})
|
||||
|
||||
@@ -69,10 +71,16 @@ export default function GuaranteeLateArrival() {
|
||||
</Modal.Content.Body>
|
||||
<Modal.Content.Footer>
|
||||
<Modal.Content.Footer.Secondary onClick={close}>
|
||||
{intl.formatMessage({ defaultMessage: "Back" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.back",
|
||||
defaultMessage: "Back",
|
||||
})}
|
||||
</Modal.Content.Footer.Secondary>
|
||||
<Modal.Content.Footer.Primary form="guarantee" type="submit">
|
||||
{intl.formatMessage({ defaultMessage: "Guarantee" })}
|
||||
{intl.formatMessage({
|
||||
id: "myStay.gla.guarantee",
|
||||
defaultMessage: "Guarantee",
|
||||
})}
|
||||
</Modal.Content.Footer.Primary>
|
||||
</Modal.Content.Footer>
|
||||
</Modal.Content>
|
||||
|
||||
@@ -35,6 +35,7 @@ export default function ViewAndPrintReceipt() {
|
||||
}
|
||||
|
||||
const printMsg = intl.formatMessage({
|
||||
id: "myStay.manageStay.viewReceipt",
|
||||
defaultMessage: "View and print receipt",
|
||||
})
|
||||
|
||||
|
||||
@@ -9,7 +9,10 @@ import styles from "./info.module.css"
|
||||
|
||||
export default function Info() {
|
||||
const intl = useIntl()
|
||||
const text = intl.formatMessage({ defaultMessage: "Booking number" })
|
||||
const text = intl.formatMessage({
|
||||
id: "common.bookingNumber",
|
||||
defaultMessage: "Booking number",
|
||||
})
|
||||
|
||||
const { address, confirmationNumber, hotelName, phoneNumber } =
|
||||
useMyStayStore((state) => ({
|
||||
|
||||
@@ -29,6 +29,7 @@ export default function ManageStay() {
|
||||
: "Icon/Inverted"
|
||||
|
||||
const manageStay = intl.formatMessage({
|
||||
id: "myStay.manageStay.manageStay",
|
||||
defaultMessage: "Manage stay",
|
||||
})
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ export default function NotCancelled() {
|
||||
<Typography variant="Body/Supporting text (caption)/smBold">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.referenceCard.actions.findUs",
|
||||
defaultMessage: "Find us",
|
||||
})}
|
||||
</span>
|
||||
|
||||
@@ -22,6 +22,7 @@ export default function BookingCode() {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "booking.bookingCode",
|
||||
defaultMessage: "Booking code",
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -19,6 +19,7 @@ export default function Cancellations() {
|
||||
|
||||
const totalRoomsMsg = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfRooms",
|
||||
defaultMessage: "{totalRooms, plural, one {# room} other {# rooms}}",
|
||||
},
|
||||
{ totalRooms: cancelledRooms }
|
||||
@@ -30,7 +31,10 @@ export default function Cancellations() {
|
||||
<MaterialIcon icon="cancel" />
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<p className={styles.textDefault}>
|
||||
{intl.formatMessage({ defaultMessage: "Cancellations" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.cancellations",
|
||||
defaultMessage: "Cancellations",
|
||||
})}
|
||||
</p>
|
||||
</Typography>
|
||||
</div>
|
||||
|
||||
@@ -37,6 +37,7 @@ export default function Dates() {
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<p className={styles.textDefault}>
|
||||
{intl.formatMessage({
|
||||
id: "dates",
|
||||
defaultMessage: "Dates",
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -30,6 +30,7 @@ export default function GuaranteeInfo() {
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<p className={styles.textDefault}>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.lateArrival",
|
||||
defaultMessage: "Late arrival",
|
||||
})}
|
||||
</p>
|
||||
@@ -38,6 +39,7 @@ export default function GuaranteeInfo() {
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.checkInAfter18",
|
||||
defaultMessage: "Check-in after 18:00",
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -21,6 +21,7 @@ export default function Guests() {
|
||||
|
||||
const adultsMsg = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfAdults",
|
||||
defaultMessage: "{adults, plural, one {# adult} other {# adults}}",
|
||||
},
|
||||
{ adults }
|
||||
@@ -28,6 +29,7 @@ export default function Guests() {
|
||||
|
||||
const childrenMsg = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfChildren",
|
||||
defaultMessage: "{children, plural, one {# child} other {# children}}",
|
||||
},
|
||||
{ children }
|
||||
@@ -49,7 +51,10 @@ export default function Guests() {
|
||||
<MaterialIcon icon="person" />
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<p className={styles.textDefault}>
|
||||
{intl.formatMessage({ defaultMessage: "Guests" })}
|
||||
{intl.formatMessage({
|
||||
id: "booking.guests",
|
||||
defaultMessage: "Guests",
|
||||
})}
|
||||
</p>
|
||||
</Typography>
|
||||
</div>
|
||||
|
||||
@@ -24,9 +24,11 @@ export default function Reference() {
|
||||
|
||||
const title = isCancelled
|
||||
? intl.formatMessage({
|
||||
id: "myStay.cancellationNumber",
|
||||
defaultMessage: "Cancellation number",
|
||||
})
|
||||
: intl.formatMessage({
|
||||
id: "common.bookingNumber",
|
||||
defaultMessage: "Booking number",
|
||||
})
|
||||
|
||||
|
||||
@@ -16,9 +16,11 @@ export default function Room() {
|
||||
}))
|
||||
|
||||
const roomMsg = intl.formatMessage({
|
||||
id: "common.room",
|
||||
defaultMessage: "Room",
|
||||
})
|
||||
const roomsMsg = intl.formatMessage({
|
||||
id: "common.rooms",
|
||||
defaultMessage: "Rooms",
|
||||
})
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ export function ReferenceCard() {
|
||||
<Typography variant="Body/Lead text">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "common.total",
|
||||
defaultMessage: "Total",
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -63,6 +63,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
|
||||
const adultsMsg = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfAdults",
|
||||
defaultMessage: "{adults, plural, one {# adult} other {# adults}}",
|
||||
},
|
||||
{
|
||||
@@ -72,6 +73,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
|
||||
const childrenMsg = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfChildren",
|
||||
defaultMessage: "{children, plural, one {# child} other {# children}}",
|
||||
},
|
||||
{
|
||||
@@ -85,10 +87,12 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
const formattedTotalPrice = formatPrice(intl, totalPrice, currencyCode)
|
||||
|
||||
let breakfastPrice = intl.formatMessage({
|
||||
id: "common.noBreakfast",
|
||||
defaultMessage: "No breakfast",
|
||||
})
|
||||
if (rateDefinition.breakfastIncluded) {
|
||||
breakfastPrice = intl.formatMessage({
|
||||
id: "common.included",
|
||||
defaultMessage: "Included",
|
||||
})
|
||||
} else if (breakfast) {
|
||||
@@ -132,6 +136,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smBold">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "common.cancelled",
|
||||
defaultMessage: "Cancelled",
|
||||
})}
|
||||
</span>
|
||||
@@ -143,6 +148,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
<span>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.roomIndex",
|
||||
defaultMessage: "Room {roomIndex}",
|
||||
},
|
||||
{
|
||||
@@ -158,6 +164,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
{isCancelled ? (
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "booking.cancellationNo",
|
||||
defaultMessage: "Cancellation no",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
@@ -166,6 +173,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
) : (
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "common.bookingNumber",
|
||||
defaultMessage: "Booking number",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
@@ -227,6 +235,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "booking.guests",
|
||||
defaultMessage: "Guests",
|
||||
})}
|
||||
</p>
|
||||
@@ -242,6 +251,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "booking.terms",
|
||||
defaultMessage: "Terms",
|
||||
})}
|
||||
</p>
|
||||
@@ -290,6 +300,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.modifyBy",
|
||||
defaultMessage: "Modify By",
|
||||
})}
|
||||
</p>
|
||||
@@ -306,6 +317,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "common.breakfast",
|
||||
defaultMessage: "Breakfast",
|
||||
})}
|
||||
</p>
|
||||
@@ -321,6 +333,7 @@ export default function Room({ booking, roomNr, user }: RoomProps) {
|
||||
<Typography variant="Body/Lead text">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "booking.roomTotal",
|
||||
defaultMessage: "Room total",
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -33,6 +33,7 @@ export default function MultiRoom(props: MultiRoomProps) {
|
||||
<Typography variant="Title/sm">
|
||||
<h2 className={styles.title}>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.yourRooms",
|
||||
defaultMessage: "Your rooms",
|
||||
})}
|
||||
</h2>
|
||||
@@ -54,6 +55,7 @@ export default function MultiRoom(props: MultiRoomProps) {
|
||||
<Typography variant="Body/Lead text">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.bookingTotal",
|
||||
defaultMessage: "Booking total",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
|
||||
@@ -24,6 +24,7 @@ export default function BookingCode() {
|
||||
>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.bookingCodeWithValue",
|
||||
defaultMessage: "<strong>Booking code</strong>: {value}",
|
||||
},
|
||||
{
|
||||
|
||||
@@ -40,6 +40,7 @@ export default function PriceDetails() {
|
||||
<Typography variant="Body/Lead text">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "booking.roomTotal",
|
||||
defaultMessage: "Room total",
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -15,6 +15,7 @@ export default function BedPreference() {
|
||||
|
||||
const mainBedWidthValueMsg = intl.formatMessage(
|
||||
{
|
||||
id: "room.bedSize",
|
||||
defaultMessage: "{value} cm",
|
||||
},
|
||||
{
|
||||
@@ -24,7 +25,8 @@ export default function BedPreference() {
|
||||
|
||||
const mainBedWidthRangeMsg = intl.formatMessage(
|
||||
{
|
||||
defaultMessage: "{min}–{max} cm",
|
||||
id: "room.bedSizeRange",
|
||||
defaultMessage: "{min}-{max} cm",
|
||||
},
|
||||
{
|
||||
min: bedType.mainBed.widthRange.min,
|
||||
@@ -42,6 +44,7 @@ export default function BedPreference() {
|
||||
icon="bed"
|
||||
text={text}
|
||||
title={intl.formatMessage({
|
||||
id: "booking.bedPreference",
|
||||
defaultMessage: "Bed preference",
|
||||
})}
|
||||
/>
|
||||
|
||||
@@ -19,10 +19,12 @@ export default function Breakfast() {
|
||||
)
|
||||
|
||||
let breakfastPrice = intl.formatMessage({
|
||||
id: "common.noBreakfast",
|
||||
defaultMessage: "No breakfast",
|
||||
})
|
||||
if (rateDefinition.breakfastIncluded) {
|
||||
breakfastPrice = intl.formatMessage({
|
||||
id: "common.included",
|
||||
defaultMessage: "Included",
|
||||
})
|
||||
} else if (breakfast) {
|
||||
@@ -34,6 +36,9 @@ export default function Breakfast() {
|
||||
)
|
||||
}
|
||||
|
||||
const title = intl.formatMessage({ defaultMessage: "Breakfast" })
|
||||
const title = intl.formatMessage({
|
||||
id: "common.breakfast",
|
||||
defaultMessage: "Breakfast",
|
||||
})
|
||||
return <Row icon="coffee" text={breakfastPrice} title={title} />
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ export default function Guests() {
|
||||
|
||||
const adultsMsg = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfAdults",
|
||||
defaultMessage: "{adults, plural, one {# adult} other {# adults}}",
|
||||
},
|
||||
{
|
||||
@@ -23,6 +24,7 @@ export default function Guests() {
|
||||
|
||||
const childrenMsg = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfChildren",
|
||||
defaultMessage: "{children, plural, one {# child} other {# children}}",
|
||||
},
|
||||
{
|
||||
@@ -38,6 +40,7 @@ export default function Guests() {
|
||||
icon="person"
|
||||
text={childrenAges.length > 0 ? adultsAndChildrenMsg : adultsOnlyMsg}
|
||||
title={intl.formatMessage({
|
||||
id: "booking.guests",
|
||||
defaultMessage: "Guests",
|
||||
})}
|
||||
/>
|
||||
|
||||
@@ -29,6 +29,7 @@ export default function ModifyBy() {
|
||||
|
||||
const text = intl.formatMessage(
|
||||
{
|
||||
id: "common.untilWithTimeAndDate",
|
||||
defaultMessage: "Until {time}, {date}",
|
||||
},
|
||||
{
|
||||
@@ -42,6 +43,7 @@ export default function ModifyBy() {
|
||||
icon="refresh"
|
||||
text={text}
|
||||
title={intl.formatMessage({
|
||||
id: "booking.changeOrCancel",
|
||||
defaultMessage: "Change or cancel",
|
||||
})}
|
||||
/>
|
||||
|
||||
@@ -32,6 +32,7 @@ export default function Packages() {
|
||||
icon="meeting_room"
|
||||
text={packages.join(", ")}
|
||||
title={intl.formatMessage({
|
||||
id: "booking.roomClassification",
|
||||
defaultMessage: "Room classification",
|
||||
})}
|
||||
/>
|
||||
|
||||
@@ -42,6 +42,7 @@ export default function Terms() {
|
||||
icon="contract"
|
||||
text={rateTerm.title}
|
||||
title={intl.formatMessage({
|
||||
id: "booking.terms",
|
||||
defaultMessage: "Terms",
|
||||
})}
|
||||
>
|
||||
|
||||
@@ -27,6 +27,7 @@ export default function Header({ user }: { user: SafeUser }) {
|
||||
<span>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.roomIndex",
|
||||
defaultMessage: "Room {roomIndex}",
|
||||
},
|
||||
{
|
||||
@@ -40,6 +41,7 @@ export default function Header({ user }: { user: SafeUser }) {
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "common.bookingNumber",
|
||||
defaultMessage: "Booking number",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
|
||||
@@ -43,7 +43,10 @@ export default function RoomDetailsSidePeek({
|
||||
})
|
||||
}}
|
||||
>
|
||||
{intl.formatMessage({ defaultMessage: "See room details" })}
|
||||
{intl.formatMessage({
|
||||
id: "hotel.seeRoomDetails",
|
||||
defaultMessage: "See room details",
|
||||
})}
|
||||
<MaterialIcon icon="chevron_right" size={14} color="CurrentColor" />
|
||||
</Button>
|
||||
<SidePeekSelfControlled
|
||||
|
||||
@@ -250,13 +250,16 @@ export default async function MyStay(props: {
|
||||
{!isWebview && (
|
||||
<Promo
|
||||
title={intl.formatMessage({
|
||||
id: "booking.bookNextStay.title",
|
||||
defaultMessage: "Book your next stay",
|
||||
})}
|
||||
text={intl.formatMessage({
|
||||
id: "booking.bookAnotherStayDescription",
|
||||
defaultMessage:
|
||||
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
|
||||
})}
|
||||
buttonText={intl.formatMessage({
|
||||
id: "myStay.promo.bookNextStay.buttonText",
|
||||
defaultMessage: "Explore Scandic hotels",
|
||||
})}
|
||||
href={promoUrl.toString()}
|
||||
@@ -289,6 +292,7 @@ export default async function MyStay(props: {
|
||||
<Typography variant="Title/md">
|
||||
<h1>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.accessDenied.loginRequired",
|
||||
defaultMessage: "You need to be logged in to view your booking",
|
||||
})}
|
||||
</h1>
|
||||
@@ -296,6 +300,7 @@ export default async function MyStay(props: {
|
||||
<Typography variant="Body/Lead text">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "myStay.accessDenied.loginRequiredMessage",
|
||||
defaultMessage:
|
||||
"And you need to be logged in with the same member account that made the booking.",
|
||||
})}
|
||||
|
||||
Reference in New Issue
Block a user