Merged in feat/BOOK-644-gla-reward-night (pull request #3500)

fix(BOOK-644): update ui reward night gla

* fix(BOOK-644): update ut reward night gla


Approved-by: Erik Tiekstra
Approved-by: Matilda Landström
This commit is contained in:
Bianca Widstam
2026-01-29 07:03:50 +00:00
parent 7c3566855d
commit 6d9cbad8bf
4 changed files with 56 additions and 20 deletions

View File

@@ -12,7 +12,7 @@ export default function SmsConfirmation() {
{intl.formatMessage({ {intl.formatMessage({
id: "booking.smsConfirmationLabel", id: "booking.smsConfirmationLabel",
defaultMessage: defaultMessage:
"I would like to get my booking confirmation via sms", "I would like to receive my booking confirmation via sms.",
})} })}
</span> </span>
</Typography> </Typography>

View File

@@ -3,6 +3,20 @@
gap: var(--Space-x3); gap: var(--Space-x3);
} }
.redemptionInfo {
display: flex;
align-items: flex-start;
background-color: var(--Surface-Secondary-Default);
border-radius: var(--Corner-Radius-lg);
padding: var(--Space-x2);
gap: var(--Space-x1);
}
.textWrapper {
display: flex;
flex-direction: column;
gap: var(--Space-x05);
}
.selections { .selections {
background-color: var(--Surface-Secondary-Default); background-color: var(--Surface-Secondary-Default);
border-radius: var(--Corner-Radius-lg); border-radius: var(--Corner-Radius-lg);

View File

@@ -2,6 +2,7 @@
import { useIntl } from "react-intl" import { useIntl } from "react-intl"
import { Divider } from "@scandic-hotels/design-system/Divider" import { Divider } from "@scandic-hotels/design-system/Divider"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { Typography } from "@scandic-hotels/design-system/Typography" import { Typography } from "@scandic-hotels/design-system/Typography"
import TermsAndConditions from "../Payment/TermsAndConditions" import TermsAndConditions from "../Payment/TermsAndConditions"
@@ -36,15 +37,29 @@ export default function ConfirmBooking({
if (isRedemptionBooking) { if (isRedemptionBooking) {
return ( return (
<div className={styles.confirmBooking}> <div className={styles.confirmBooking}>
<Typography variant="Body/Paragraph/mdRegular"> <div className={styles.redemptionInfo}>
<p> <MaterialIcon icon="calendar_clock" size={24} color="Icon/Intense" />
{intl.formatMessage({ <div className={styles.textWrapper}>
id: "enterDetails.confirmBooking.redemptionGuaranteeInfo", <Typography variant="Body/Supporting text (caption)/smBold">
defaultMessage: <p>
"When you confirm the booking the room will be guaranteed for late arrival. If you fail to arrive without cancelling in advance or if you cancel after 18:00 local time, you will be charged for one reward night.", {intl.formatMessage({
})} id: "enterDetails.guarantee.guaranteeLabel",
</p> defaultMessage: "Guarantee for late arrival",
</Typography> })}
</p>
</Typography>
<Typography variant="Body/Paragraph/mdRegular">
<p>
{intl.formatMessage({
id: "enterDetails.confirmBooking.rewardNightGuaranteeInfo",
defaultMessage:
"When you complete the booking the room will be guaranteed for late arrival. The hotel will hold your booking, even if you arrive after 18:00. In case of a no-show, you will be charged for one reward night.",
})}
</p>
</Typography>
</div>
</div>
<Divider color="Border/Divider/Subtle" />
<TermsAndConditions isFlexBookingTerms /> <TermsAndConditions isFlexBookingTerms />
<SmsConfirmation /> <SmsConfirmation />
</div> </div>

View File

@@ -1,12 +1,13 @@
import { useFormContext } from "react-hook-form"
import { useIntl } from "react-intl" import { useIntl } from "react-intl"
import Checkbox from "@scandic-hotels/design-system/Form/Checkbox" import Checkbox from "@scandic-hotels/design-system/Form/Checkbox"
import { ErrorMessage } from "@scandic-hotels/design-system/Form/ErrorMessage"
import { TextLink } from "@scandic-hotels/design-system/TextLink" import { TextLink } from "@scandic-hotels/design-system/TextLink"
import { Typography } from "@scandic-hotels/design-system/Typography" import { Typography } from "@scandic-hotels/design-system/Typography"
import { useBookingFlowConfig } from "../../../../bookingFlowConfig/bookingFlowConfigContext" import { useBookingFlowConfig } from "../../../../bookingFlowConfig/bookingFlowConfigContext"
import useLang from "../../../../hooks/useLang" import useLang from "../../../../hooks/useLang"
import { paymentError } from "../schema"
import styles from "./termsAndConditions.module.css" import styles from "./termsAndConditions.module.css"
@@ -19,24 +20,22 @@ export default function TermsAndConditions({
const intl = useIntl() const intl = useIntl()
const lang = useLang() const lang = useLang()
const { routes } = useBookingFlowConfig() const { routes } = useBookingFlowConfig()
const {
formState: { errors },
} = useFormContext()
return ( return (
<div className={styles.termsAndConditions}> <div className={styles.termsAndConditions}>
<Checkbox <Checkbox
name="termsAndConditions" name="termsAndConditions"
registerOptions={{ required: true }} registerOptions={{ required: true }}
errorCodeMessages={{ hideError
[paymentError.TERMS_REQUIRED]: intl.formatMessage({
id: "common.mustAcceptTermsError",
defaultMessage: "You must accept the terms and conditions",
}),
}}
> >
<Typography variant="Body/Supporting text (caption)/smBold"> <Typography variant="Body/Supporting text (caption)/smBold">
<span> <span>
{intl.formatMessage({ {intl.formatMessage({
id: "booking.acceptBookingTerms", id: "booking.acceptBookingTerms",
defaultMessage: "I accept the booking and cancellation terms", defaultMessage: "I accept the booking and cancellation terms.",
})} })}
</span> </span>
</Typography> </Typography>
@@ -46,9 +45,9 @@ export default function TermsAndConditions({
{isFlexBookingTerms {isFlexBookingTerms
? intl.formatMessage( ? intl.formatMessage(
{ {
id: "enterDetails.payment.flexBookingTermsAndConditions", id: "enterDetails.paymentStep.flexBookingTermsAndConditions",
defaultMessage: defaultMessage:
"I accept the terms for this booking and the general <termsAndConditionsLink>Booking & Cancellation Terms</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>.", "To complete your booking, please accept the general <termsAndConditionsLink>Booking & Cancellation Terms</termsAndConditionsLink>, and acknowledge that your data will be processed in accordance with Scandic's <privacyPolicyLink>Privacy policy</privacyPolicyLink>.",
}, },
{ {
termsAndConditionsLink: (str) => ( termsAndConditionsLink: (str) => (
@@ -108,6 +107,14 @@ export default function TermsAndConditions({
)} )}
</p> </p>
</Typography> </Typography>
<ErrorMessage
name="termsAndConditions"
errors={errors}
messageLabel={intl.formatMessage({
id: "common.mustAcceptTermsError",
defaultMessage: "You must accept the terms and conditions",
})}
/>
</div> </div>
) )
} }