diff --git a/app/[lang]/(live)/(public)/hotelreservation/(standard)/step/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/(standard)/step/page.tsx index 648cdff93..7ffe57562 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/(standard)/step/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/(standard)/step/page.tsx @@ -111,6 +111,13 @@ export default async function StepPage({ publicPrice: roomAvailability.publicRate!.localPrice.pricePerStay, } + const memberPrice = roomAvailability.memberRate + ? { + price: roomAvailability.memberRate.localPrice.pricePerStay, + currency: roomAvailability.memberRate.localPrice.currency, + } + : undefined + return ( -
+
- - {intl.formatMessage( - { - id: "Only pay {amount} {currency}", - }, - { - amount: intl.formatNumber(difference.price), - currency: difference.currency, - } - )} - + {memberPrice ? ( + + {saveOnJoiningLabel} + + ) : null} ({ countryCode: state.data.countryCode, @@ -68,7 +68,6 @@ export default function Details({ user }: DetailsProps) { [completeStep, updateDetails] ) - const joinValue = methods.watch("join") return (
{user ? null : ( - + )}
+
{isComplete ? ( diff --git a/components/HotelReservation/EnterDetails/SectionAccordion/sectionAccordion.module.css b/components/HotelReservation/EnterDetails/SectionAccordion/sectionAccordion.module.css index f4990b28b..0bbcf851c 100644 --- a/components/HotelReservation/EnterDetails/SectionAccordion/sectionAccordion.module.css +++ b/components/HotelReservation/EnterDetails/SectionAccordion/sectionAccordion.module.css @@ -1,4 +1,7 @@ -.main { +.accordion { + --header-height: 2.4em; + --circle-height: 24px; + gap: var(--Spacing-x3); width: 100%; padding-top: var(--Spacing-x3); @@ -7,12 +10,12 @@ display: grid; grid-template-areas: "circle header" "content content"; grid-template-columns: auto 1fr; - grid-template-rows: 2.4em 0fr; + grid-template-rows: var(--header-height) 0fr; column-gap: var(--Spacing-x-one-and-half); } -.main:last-child .main { +.accordion:last-child { border-bottom: none; } @@ -52,8 +55,8 @@ } .circle { - width: 24px; - height: 24px; + width: var(--circle-height); + height: var(--circle-height); border-radius: 100px; transition: background-color 0.4s; border: 2px solid var(--Base-Border-Inverted); @@ -66,16 +69,16 @@ background-color: var(--UI-Input-Controls-Fill-Selected); } -.main[data-open="true"] .circle[data-checked="false"] { +.accordion[data-open="true"] .circle[data-checked="false"] { background-color: var(--UI-Text-Placeholder); } -.main[data-open="false"] .circle[data-checked="false"] { +.accordion[data-open="false"] .circle[data-checked="false"] { background-color: var(--Base-Surface-Subtle-Hover); } -.main[data-open="true"] { - grid-template-rows: 2.4em 1fr; +.accordion[data-open="true"] { + grid-template-rows: var(--header-height) 1fr; gap: var(--Spacing-x3); } @@ -86,7 +89,7 @@ } @media screen and (min-width: 768px) { - .main { + .accordion { gap: var(--Spacing-x3); grid-template-areas: "circle header" "circle content"; } @@ -95,11 +98,11 @@ top: var(--Spacing-x1); } - .main:not(:last-child) .iconWrapper::after { + .accordion:not(:last-child) .iconWrapper::after { position: absolute; left: 12px; bottom: calc(0px - var(--Spacing-x7)); - top: 24px; + top: var(--circle-height); content: ""; border-left: 1px solid var(--Primary-Light-On-Surface-Divider-subtle); diff --git a/components/LoginButton/index.tsx b/components/LoginButton/index.tsx index 6258f6e88..89cc3a42a 100644 --- a/components/LoginButton/index.tsx +++ b/components/LoginButton/index.tsx @@ -31,13 +31,14 @@ export default function LoginButton({ : login[lang] useEffect(() => { - document - .getElementById(trackingId) - ?.addEventListener("click", () => trackLoginClick(position)) + function trackLogin() { + trackLoginClick(position) + } + document.getElementById(trackingId)?.addEventListener("click", trackLogin) return () => { document .getElementById(trackingId) - ?.removeEventListener("click", () => trackLoginClick(position)) + ?.removeEventListener("click", trackLogin) } }, [position, trackingId]) diff --git a/components/TempDesignSystem/Form/ChoiceCard/_Card/card.module.css b/components/TempDesignSystem/Form/ChoiceCard/_Card/card.module.css index 69044abb2..d50df8a15 100644 --- a/components/TempDesignSystem/Form/ChoiceCard/_Card/card.module.css +++ b/components/TempDesignSystem/Form/ChoiceCard/_Card/card.module.css @@ -1,5 +1,4 @@ .label { - align-self: flex-start; background-color: var(--Base-Surface-Primary-light-Normal); border: 1px solid var(--Base-Border-Subtle); border-radius: var(--Corner-radius-Large); @@ -9,7 +8,6 @@ padding: var(--Spacing-x-one-and-half) var(--Spacing-x2); transition: all 200ms ease; width: min(100%, 600px); - height: 100%; } .label:hover { diff --git a/components/TempDesignSystem/Link/link.module.css b/components/TempDesignSystem/Link/link.module.css index 948574ed2..3a997bddb 100644 --- a/components/TempDesignSystem/Link/link.module.css +++ b/components/TempDesignSystem/Link/link.module.css @@ -16,7 +16,7 @@ .breadcrumb { font-family: var(--typography-Footnote-Bold-fontFamily); font-size: var(--typography-Footnote-Bold-fontSize); - font-weight: 450; /* var(--typography-Footnote-Bold-fontWeight); */ + font-weight: 500; /* var(--typography-Footnote-Bold-fontWeight); */ letter-spacing: var(--typography-Footnote-Bold-letterSpacing); line-height: var(--typography-Footnote-Bold-lineHeight); } @@ -24,7 +24,7 @@ .link.breadcrumb { font-family: var(--typography-Footnote-Bold-fontFamily); font-size: var(--typography-Footnote-Bold-fontSize); - font-weight: 450; /* var(--typography-Footnote-Bold-fontWeight); */ + font-weight: 500; /* var(--typography-Footnote-Bold-fontWeight); */ letter-spacing: var(--typography-Footnote-Bold-letterSpacing); line-height: var(--typography-Footnote-Bold-lineHeight); } diff --git a/types/components/hotelReservation/enterDetails/details.ts b/types/components/hotelReservation/enterDetails/details.ts index 685fad18a..25004467a 100644 --- a/types/components/hotelReservation/enterDetails/details.ts +++ b/types/components/hotelReservation/enterDetails/details.ts @@ -6,6 +6,14 @@ import type { SafeUser } from "@/types/user" export type DetailsSchema = z.output +type MemberPrice = { price: number; currency: string } + export interface DetailsProps { user: SafeUser + memberPrice?: MemberPrice +} + +export type JoinScandicFriendsCardProps = { + name: string + memberPrice?: MemberPrice }