feat(SW-415): Update Room card UI

This commit is contained in:
Pontus Dreij
2024-10-09 11:03:02 +02:00
parent 67df5f0771
commit 79442d80b8
19 changed files with 378 additions and 297 deletions

View File

@@ -24,6 +24,7 @@ export default async function SelectRatePage({
roomStayEndDate: "2024-11-03",
adults: 1,
})
console.log("roomConfigurations", roomConfigurations)
if (!roomConfigurations) {
return "No rooms found"
}

View File

@@ -32,6 +32,10 @@
display: none;
}
.infoIcon {
stroke: var(--Base-Text-Disabled);
}
@media screen and (min-width: 768px) {
.vouchers {
display: none;

View File

@@ -1,7 +1,3 @@
.infoIcon {
stroke: var(--Base-Text-Disabled);
}
.vouchersHeader {
display: flex;
gap: var(--Spacing-x-one-and-half);

View File

@@ -0,0 +1,56 @@
import { useIntl } from "react-intl"
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
import { PriceTableProps } from "@/types/components/hotelReservation/selectRate/flexibilityOption"
export default function PriceTable({
publicPrice,
memberPrice,
}: PriceTableProps) {
const intl = useIntl()
const { localPrice: publicLocalPrice, requestedPrice: publicRequestedPrice } =
publicPrice || {}
const { localPrice: memberLocalPrice, requestedPrice: memberRequestedPrice } =
memberPrice || {}
const showRequestedPrice = publicRequestedPrice && memberRequestedPrice
return (
<dl>
<div>
<dt>{intl.formatMessage({ id: "Standard price" })}</dt>
<dd>
{publicLocalPrice ? (
<>
{publicLocalPrice.pricePerNight} {publicLocalPrice.currency}/
{intl.formatMessage({ id: "night" })}
</>
) : (
<Subtitle type="two">{intl.formatMessage({ id: "n/a" })}</Subtitle>
)}
</dd>
</div>
{memberLocalPrice && (
<div>
<dt>{intl.formatMessage({ id: "Member price" })}</dt>
<dd>
{memberLocalPrice.pricePerNight} {memberLocalPrice.currency}/
{intl.formatMessage({ id: "night" })}
</dd>
</div>
)}
{showRequestedPrice && (
<div>
<dt>{intl.formatMessage({ id: "Approx." })}</dt>
<dd>
{publicRequestedPrice.pricePerNight}/
{memberRequestedPrice.pricePerNight} {publicRequestedPrice.currency}
</dd>
</div>
)}
</dl>
)
}

View File

@@ -1,15 +1,32 @@
.card {
font-size: 14px;
border-radius: var(--Corner-radius-Medium);
border: 1px solid var(--Base-Border-Normal);
.card,
.disabledCard {
border-radius: var(--Corner-radius-Large);
padding: var(--Spacing-x-one-and-half) var(--Spacing-x2);
background-color: var(--Base-Surface-Primary-light-Hover);
}
.disabledCard {
opacity: 0.6;
}
.disabledCard:hover {
cursor: not-allowed;
}
.card:hover {
cursor: pointer;
}
input[type="radio"]:checked + .card {
background-color: var(--Base-Surface-Primary-light-Hover-alt);
}
.header {
display: flex;
justify-content: space-between;
gap: var(--Spacing-x-half);
}
.header .infoIcon,
.header .infoIcon * {
stroke: var(--Base-Text-Disabled);
fill: var(--Base-Surface-Primary-light-Hover);
}

View File

@@ -1,9 +1,11 @@
"use client"
import { useIntl } from "react-intl"
import Body from "@/components/TempDesignSystem/Text/Body"
import { InfoCircleIcon } from "@/components/Icons"
import Caption from "@/components/TempDesignSystem/Text/Caption"
import PriceTable from "./PriceTable"
import styles from "./flexibilityOption.module.css"
import { FlexibilityOptionProps } from "@/types/components/hotelReservation/selectRate/flexibilityOption"
@@ -16,55 +18,35 @@ export default function FlexibilityOption({
const intl = useIntl()
if (!product) {
// TODO: Implement empty state when this rate can't be booked
return <div>TBI: Rate not available</div>
return (
<div className={styles.disabledCard}>
<div className={styles.header}>
<InfoCircleIcon className={styles.infoIcon} />
<Caption>{name}</Caption>
<Caption color="uiTextPlaceholder">({paymentTerm})</Caption>
<PriceTable />
</div>
</div>
)
}
const { productType } = product
const { public: publicPrice, member: memberPrice } = productType
const { localPrice: publicLocalPrice, requestedPrice: publicRequestedPrice } =
publicPrice
const { localPrice: memberLocalPrice, requestedPrice: memberRequestedPrice } =
memberPrice
return (
<label>
<input
type="radio"
name="rateCode"
value={product.productType.public.rateCode}
value={product.productType.public?.rateCode}
/>
<div className={styles.card}>
<div className={styles.header}>
<Body>{name}</Body>
<Caption>{paymentTerm}</Caption>
<InfoCircleIcon className={styles.infoIcon} />
<Caption>{name}</Caption>
<Caption color="uiTextPlaceholder">({paymentTerm})</Caption>
<PriceTable publicPrice={publicPrice} memberPrice={memberPrice} />
</div>
<dl>
<div>
<dt>{intl.formatMessage({ id: "Standard price" })}</dt>
<dd>
{publicLocalPrice.pricePerNight} {publicLocalPrice.currency}/
{intl.formatMessage({ id: "night" })}
</dd>
</div>
<div>
<dt>{intl.formatMessage({ id: "Member price" })}</dt>
<dd>
{memberLocalPrice.pricePerNight} {memberLocalPrice.currency}/
{intl.formatMessage({ id: "night" })}
</dd>
</div>
{publicRequestedPrice && memberRequestedPrice && (
<div>
<dt>{intl.formatMessage({ id: "Approx." })}</dt>
<dd>
{publicRequestedPrice.pricePerNight}/
{memberRequestedPrice.pricePerNight}{" "}
{publicRequestedPrice.currency}
</dd>
</div>
)}
</dl>
</div>
</label>
)

View File

@@ -2,6 +2,7 @@
import { useIntl } from "react-intl"
import FlexibilityOption from "@/components/HotelReservation/SelectRate/RoomSelection/FlexibilityOption"
import { ChevronRightSmallIcon } from "@/components/Icons"
import Button from "@/components/TempDesignSystem/Button"
import Caption from "@/components/TempDesignSystem/Text/Caption"
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
@@ -32,22 +33,22 @@ export default function RoomCard({
const saveProduct = saveRate
? roomConfiguration.products.find(
(product) =>
product.productType.public.rateCode === saveRate.rateCode ||
product.productType.member.rateCode === saveRate.rateCode
product.productType.public?.rateCode === saveRate.rateCode ||
product.productType.member?.rateCode === saveRate.rateCode
)
: undefined
const changeProduct = changeRate
? roomConfiguration.products.find(
(product) =>
product.productType.public.rateCode === changeRate.rateCode ||
product.productType.member.rateCode === changeRate.rateCode
product.productType.public?.rateCode === changeRate.rateCode ||
product.productType.member?.rateCode === changeRate.rateCode
)
: undefined
const flexProduct = flexRate
? roomConfiguration.products.find(
(product) =>
product.productType.public.rateCode === flexRate.rateCode ||
product.productType.member.rateCode === flexRate.rateCode
product.productType.public?.rateCode === flexRate.rateCode ||
product.productType.member?.rateCode === flexRate.rateCode
)
: undefined
@@ -55,14 +56,7 @@ export default function RoomCard({
<div className={styles.card}>
<div className={styles.cardBody}>
<div className={styles.specification}>
<Subtitle className={styles.name} type="two">
{roomConfiguration.roomType}
</Subtitle>
<Caption>Room size TBI</Caption>
<Button intent="text" type="button" size="small" theme="base">
{intl.formatMessage({ id: "See room details" })}
</Button>
<Caption>
<Caption color="uiTextMediumContrast" className={styles.guests}>
{/*TODO: Handle pluralisation*/}
{intl.formatMessage(
{
@@ -72,39 +66,53 @@ export default function RoomCard({
// TODO: Correct number
{ nrOfGuests: 2 }
)}
</Caption>
{
// Room size TBI
}
<Caption color="uiTextMediumContrast">11-13 m²</Caption>
<Button
intent="text"
type="button"
size="small"
theme="base"
className={styles.button}
>
{intl.formatMessage({ id: "See room details" })}
<ChevronRightSmallIcon color="burgundy" width={20} height={20} />
</Button>
</div>
<div className={styles.container}>
<Subtitle className={styles.name} type="two">
{roomConfiguration.roomType}
</Subtitle>
<Caption>Room INFORMATION </Caption>
<Caption color="uiTextPlaceholder">
{intl.formatMessage({
id: "Breakfast included",
})}
</Caption>
<FlexibilityOption
name={intl.formatMessage({ id: "Non-refundable" })}
value="non-refundable"
paymentTerm={intl.formatMessage({ id: "Pay now" })}
product={saveProduct}
/>
<FlexibilityOption
name={intl.formatMessage({ id: "Free rebooking" })}
value="free-rebooking"
paymentTerm={intl.formatMessage({ id: "Pay now" })}
product={changeProduct}
/>
<FlexibilityOption
name={intl.formatMessage({ id: "Free cancellation" })}
value="free-cancellation"
paymentTerm={intl.formatMessage({ id: "Pay later" })}
product={flexProduct}
/>
</div>
<FlexibilityOption
name={intl.formatMessage({ id: "Non-refundable" })}
value="non-refundable"
paymentTerm={intl.formatMessage({ id: "Pay now" })}
product={saveProduct}
/>
<FlexibilityOption
name={intl.formatMessage({ id: "Free rebooking" })}
value="free-rebooking"
paymentTerm={intl.formatMessage({ id: "Pay now" })}
product={changeProduct}
/>
<FlexibilityOption
name={intl.formatMessage({ id: "Free cancellation" })}
value="free-cancellation"
paymentTerm={intl.formatMessage({ id: "Pay later" })}
product={flexProduct}
/>
<Button
type="submit"
size="small"
theme="primaryDark"
className={styles.button}
>
{intl.formatMessage({ id: "Choose room" })}
</Button>
</div>
{/* TODO: maybe use the `Image` component instead of the `img` tag. Waiting until we know how to get the image */}
{/* eslint-disable-next-line @next/next/no-img-element */}

View File

@@ -8,14 +8,33 @@
}
.cardBody {
padding: var(--Spacing-x1);
display: flex;
flex-direction: column;
gap: var(--Spacing-x1);
}
.specification {
padding: var(--Spacing-x1);
display: flex;
flex-direction: row;
align-items: center;
gap: var(--Spacing-x1);
padding: 0 var(--Spacing-x1) 0 var(--Spacing-x-one-and-half);
height: 40px;
}
.specification .guests {
border-right: 1px solid var(--Base-Border-Subtle);
padding-right: var(--Spacing-x1);
}
.specification .button {
margin-left: auto;
padding: 0 0 0 var(--Spacing-x-half);
text-decoration: none;
}
.container {
padding: var(--Spacing-x1) var(--Spacing-x2) var(--Spacing-x2);
display: flex;
flex-direction: column;
gap: var(--Spacing-x1);
@@ -25,10 +44,6 @@
display: inline-block;
}
.card .button {
display: inline;
}
.card img {
max-width: 100%;
aspect-ratio: 16/9;

View File

@@ -8,8 +8,7 @@
list-style: none;
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
column-gap: var(--Spacing-x2);
row-gap: var(--Spacing-x4);
gap: var(--Spacing-x3);
}
.roomList > li {

View File

@@ -75,6 +75,10 @@ p.caption {
color: var(--UI-Text-High-contrast);
}
.uiTextPlaceholder {
color: var(--UI-Text-Placeholder);
}
.disabled {
color: var(--Base-Text-Disabled);
}

View File

@@ -15,6 +15,7 @@ const config = {
uiTextHighContrast: styles.uiTextHighContrast,
uiTextActive: styles.uiTextActive,
uiTextMediumContrast: styles.uiTextMediumContrast,
uiTextPlaceholder: styles.uiTextPlaceholder,
disabled: styles.disabled,
},
textTransform: {

View File

@@ -13,12 +13,13 @@
"Already a friend?": "Allerede en ven?",
"Amenities": "Faciliteter",
"Amusement park": "Forlystelsespark",
"An error occurred when adding a credit card, please try again later.": "Der opstod en fejl under tilføjelse af et kreditkort. Prøv venligst igen senere.",
"An error occurred trying to manage your preferences, please try again later.": "Der opstod en fejl under forsøget på at administrere dine præferencer. Prøv venligst igen senere.",
"An error occurred when adding a credit card, please try again later.": "Der opstod en fejl under tilføjelse af et kreditkort. Prøv venligst igen senere.",
"An error occurred when trying to update profile.": "Der opstod en fejl under forsøg på at opdatere profilen.",
"Any changes you've made will be lost.": "Alle ændringer, du har foretaget, går tabt.",
"Are you sure you want to remove the card ending with {lastFourDigits} from your member profile?": "Er du sikker på, at du vil fjerne kortet, der slutter me {lastFourDigits} fra din medlemsprofil?",
"Arrival date": "Ankomstdato",
"Approx.": "Ca.",
"as of today": "pr. dags dato",
"As our": "Som vores {level}",
"As our Close Friend": "Som vores nære ven",
@@ -31,14 +32,19 @@
"Book": "Book",
"Book reward night": "Book bonusnat",
"Booking number": "Bookingnummer",
"booking.adults": "{totalAdults, plural, one {# voksen} other {# voksne}}",
"booking.nights": "{totalNights, plural, one {# nat} other {# nætter}}",
"booking.rooms": "{totalRooms, plural, one {# værelse} other {# værelser}}",
"Breakfast": "Morgenmad",
"Breakfast buffet": "Morgenbuffet",
"Breakfast excluded": "Morgenmad ikke inkluderet",
"Breakfast included": "Morgenmad inkluderet",
"Breakfast restaurant": "Breakfast restaurant",
"Bus terminal": "Busstation",
"Business": "Forretning",
"Breakfast restaurant": "Breakfast restaurant",
"by": "inden",
"Cancel": "Afbestille",
"characters": "tegn",
"Check in": "Check ind",
"Check out": "Check ud",
"Check out the credit cards saved to your profile. Pay with a saved card when signed in for a smoother web experience.": "Tjek de kreditkort, der er gemt på din profil. Betal med et gemt kort, når du er logget ind for en mere jævn weboplevelse.",
@@ -83,16 +89,16 @@
"Edit profile": "Rediger profil",
"Email": "E-mail",
"Email address": "E-mailadresse",
"Enjoy relaxed restaurant experiences": "Enjoy relaxed restaurant experiences",
"Enter destination or hotel": "Indtast destination eller hotel",
"Enter your details": "Indtast dine oplysninger",
"Enjoy relaxed restaurant experiences": "Enjoy relaxed restaurant experiences",
"Events that make an impression": "Events that make an impression",
"Explore all levels and benefits": "Udforsk alle niveauer og fordele",
"Explore nearby": "Udforsk i nærheden",
"Extras to your booking": "Tillæg til din booking",
"FAQ": "Ofte stillede spørgsmål",
"Failed to delete credit card, please try again later.": "Kunne ikke slette kreditkort. Prøv venligst igen senere.",
"Fair": "Messe",
"FAQ": "Ofte stillede spørgsmål",
"Find booking": "Find booking",
"Find hotels": "Find hotel",
"Firstname": "Fornavn",
@@ -113,13 +119,16 @@
"Hotel": "Hotel",
"Hotel facilities": "Hotel faciliteter",
"Hotel surroundings": "Hotel omgivelser",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "personer",
"hotelPages.rooms.roomCard.seeRoomDetails": "Se værelsesdetaljer",
"Hotels": "Hoteller",
"How do you want to sleep?": "Hvordan vil du sove?",
"How it works": "Hvordan det virker",
"Image gallery": "Billedgalleri",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Det er ikke muligt at administrere dine kommunikationspræferencer lige nu, prøv venligst igen senere eller kontakt support, hvis problemet fortsætter.",
"Join Scandic Friends": "Tilmeld dig Scandic Friends",
"Join at no cost": "Tilmeld dig uden omkostninger",
"Join Scandic Friends": "Tilmeld dig Scandic Friends",
"King bed": "Kingsize-seng",
"km to city center": "km til byens centrum",
"Language": "Sprog",
@@ -149,9 +158,9 @@
"Member price": "Medlemspris",
"Member price from": "Medlemspris fra",
"Members": "Medlemmer",
"Membership cards": "Medlemskort",
"Membership ID": "Medlems-id",
"Membership ID copied to clipboard": "Medlems-ID kopieret til udklipsholder",
"Membership cards": "Medlemskort",
"Menu": "Menu",
"Modify": "Ændre",
"Month": "Måned",
@@ -166,6 +175,9 @@
"Nearby companies": "Nærliggende virksomheder",
"New password": "Nyt kodeord",
"Next": "Næste",
"next level:": "Næste niveau:",
"night": "nat",
"nights": "nætter",
"Nights needed to level up": "Nætter nødvendige for at komme i niveau",
"No breakfast": "Ingen morgenmad",
"No content published": "Intet indhold offentliggjort",
@@ -177,11 +189,14 @@
"Non-refundable": "Ikke-refunderbart",
"Not found": "Ikke fundet",
"Nr night, nr adult": "{nights, number} nat, {adults, number} voksen",
"number": "nummer",
"n/a": "n/a",
"On your journey": "På din rejse",
"Open": "Åben",
"Open language menu": "Åbn sprogmenuen",
"Open menu": "Åbn menuen",
"Open my pages menu": "Åbn mine sider menuen",
"or": "eller",
"Overview": "Oversigt",
"Parking": "Parkering",
"Parking / Garage": "Parkering / Garage",
@@ -193,6 +208,7 @@
"Phone is required": "Telefonnummer er påkrævet",
"Phone number": "Telefonnummer",
"Please enter a valid phone number": "Indtast venligst et gyldigt telefonnummer",
"points": "Point",
"Points": "Point",
"Points being calculated": "Point udregnes",
"Points earned prior to May 1, 2021": "Point optjent inden 1. maj 2021",
@@ -209,11 +225,11 @@
"Read more about the hotel": "Læs mere om hotellet",
"Read more about wellness & exercise": "Read more about wellness & exercise",
"Remove card from member profile": "Fjern kortet fra medlemsprofilen",
"Request bedtype": "Anmod om sengetype",
"Restaurant": "{count, plural, one {#Restaurant} other {#Restaurants}}",
"Restaurant & Bar": "Restaurant & Bar",
"Restaurants & Bars": "Restaurants & Bars",
"Retype new password": "Gentag den nye adgangskode",
"Request bedtype": "Anmod om sengetype",
"Room & Terms": "Værelse & Vilkår",
"Room facilities": "Værelsesfaciliteter",
"Rooms": "Værelser",
@@ -246,25 +262,29 @@
"Something went wrong and we couldn't add your card. Please try again later.": "Noget gik galt, og vi kunne ikke tilføje dit kort. Prøv venligst igen senere.",
"Something went wrong and we couldn't remove your card. Please try again later.": "Noget gik galt, og vi kunne ikke fjerne dit kort. Prøv venligst igen senere.",
"Something went wrong!": "Noget gik galt!",
"special character": "speciel karakter",
"spendable points expiring by": "{points} Brugbare point udløber den {date}",
"Sports": "Sport",
"Standard price": "Standardpris",
"Street": "Gade",
"Successfully updated profile!": "Profilen er opdateret med succes!",
"Summary": "Opsummering",
"TUI Points": "TUI Points",
"Tell us what information and updates you'd like to receive, and how, by clicking the link below.": "Fortæl os, hvilke oplysninger og opdateringer du gerne vil modtage, og hvordan, ved at klikke på linket nedenfor.",
"Thank you": "Tak",
"Theatre": "Teater",
"There are no transactions to display": "Der er ingen transaktioner at vise",
"Things nearby HOTEL_NAME": "Ting i nærheden af {hotelName}",
"to": "til",
"Total Points": "Samlet antal point",
"Tourist": "Turist",
"Transaction date": "Overførselsdato",
"Transactions": "Transaktioner",
"Transportations": "Transport",
"Tripadvisor reviews": "{rating} ({count} anmeldelser på Tripadvisor)",
"TUI Points": "TUI Points",
"Type of bed": "Sengtype",
"Type of room": "Værelsestype",
"uppercase letter": "stort bogstav",
"Use bonus cheque": "Brug Bonus Cheque",
"Use code/voucher": "Brug kode/voucher",
"User information": "Brugeroplysninger",
@@ -292,9 +312,9 @@
"You canceled adding a new credit card.": "Du har annulleret tilføjelsen af et nyt kreditkort.",
"You have no previous stays.": "Du har ingen tidligere ophold.",
"You have no upcoming stays.": "Du har ingen kommende ophold.",
"Your Challenges Conquer & Earn!": "Dine udfordringer Overvind og tjen!",
"Your card was successfully removed!": "Dit kort blev fjernet!",
"Your card was successfully saved!": "Dit kort blev gemt!",
"Your Challenges Conquer & Earn!": "Dine udfordringer Overvind og tjen!",
"Your current level": "Dit nuværende niveau",
"Your details": "Dine oplysninger",
"Your level": "Dit niveau",
@@ -303,26 +323,6 @@
"Zoo": "Zoo",
"Zoom in": "Zoom ind",
"Zoom out": "Zoom ud",
"as of today": "fra idag",
"booking.adults": "{totalAdults, plural, one {# voksen} other {# voksne}}",
"booking.nights": "{totalNights, plural, one {# nat} other {# nætter}}",
"booking.rooms": "{totalRooms, plural, one {# værelse} other {# værelser}}",
"by": "inden",
"characters": "tegn",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "personer",
"hotelPages.rooms.roomCard.seeRoomDetails": "Se værelsesdetaljer",
"km to city center": "km til byens centrum",
"next level:": "Næste niveau:",
"night": "nat",
"nights": "nætter",
"number": "nummer",
"or": "eller",
"points": "Point",
"special character": "speciel karakter",
"spendable points expiring by": "{points} Brugbare point udløber den {date}",
"to": "til",
"uppercase letter": "stort bogstav",
"{amount} {currency}": "{amount} {currency}",
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
"{width} cm × {length} cm": "{width} cm × {length} cm"

View File

@@ -17,8 +17,10 @@
"An error occurred when adding a credit card, please try again later.": "Beim Hinzufügen einer Kreditkarte ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.",
"An error occurred when trying to update profile.": "Beim Versuch, das Profil zu aktualisieren, ist ein Fehler aufgetreten.",
"Any changes you've made will be lost.": "Alle Änderungen, die Sie vorgenommen haben, gehen verloren.",
"Approx.": "Ca.",
"Are you sure you want to remove the card ending with {lastFourDigits} from your member profile?": "Möchten Sie die Karte mit der Endung {lastFourDigits} wirklich aus Ihrem Mitgliedsprofil entfernen?",
"Arrival date": "Ankunftsdatum",
"as of today": "Stand heute",
"As our": "Als unser {level}",
"As our Close Friend": "Als unser enger Freund",
"At latest": "Spätestens",
@@ -30,6 +32,9 @@
"Book": "Buchen",
"Book reward night": "Bonusnacht buchen",
"Booking number": "Buchungsnummer",
"booking.adults": "{totalAdults, plural, one {# erwachsene} other {# erwachsene}}",
"booking.nights": "{totalNights, plural, one {# nacht} other {# Nächte}}",
"booking.rooms": "{totalRooms, plural, one {# zimmer} other {# räume}}",
"Breakfast": "Frühstück",
"Breakfast buffet": "Frühstücksbuffet",
"Breakfast excluded": "Frühstück nicht inbegriffen",
@@ -37,7 +42,9 @@
"Breakfast restaurant": "Breakfast restaurant",
"Bus terminal": "Busbahnhof",
"Business": "Geschäft",
"by": "bis",
"Cancel": "Stornieren",
"characters": "figuren",
"Check in": "Einchecken",
"Check out": "Auschecken",
"Check out the credit cards saved to your profile. Pay with a saved card when signed in for a smoother web experience.": "Sehen Sie sich die in Ihrem Profil gespeicherten Kreditkarten an. Bezahlen Sie mit einer gespeicherten Karte, wenn Sie angemeldet sind, für ein reibungsloseres Web-Erlebnis.",
@@ -89,9 +96,9 @@
"Explore all levels and benefits": "Entdecken Sie alle Levels und Vorteile",
"Explore nearby": "Erkunden Sie die Umgebung",
"Extras to your booking": "Extras zu Ihrer Buchung",
"FAQ": "Häufig gestellte Fragen",
"Failed to delete credit card, please try again later.": "Kreditkarte konnte nicht gelöscht werden. Bitte versuchen Sie es später noch einmal.",
"Fair": "Messe",
"FAQ": "Häufig gestellte Fragen",
"Find booking": "Buchung finden",
"Find hotels": "Hotels finden",
"Firstname": "Vorname",
@@ -112,14 +119,18 @@
"Hotel": "Hotel",
"Hotel facilities": "Hotel-Infos",
"Hotel surroundings": "Umgebung des Hotels",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "personen",
"hotelPages.rooms.roomCard.seeRoomDetails": "Zimmerdetails ansehen",
"Hotels": "Hotels",
"How do you want to sleep?": "Wie möchtest du schlafen?",
"How it works": "Wie es funktioniert",
"Image gallery": "Bildergalerie",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Es ist derzeit nicht möglich, Ihre Kommunikationseinstellungen zu verwalten. Bitte versuchen Sie es später erneut oder wenden Sie sich an den Support, wenn das Problem weiterhin besteht.",
"Join Scandic Friends": "Treten Sie Scandic Friends bei",
"Join at no cost": "Kostenlos beitreten",
"Join Scandic Friends": "Treten Sie Scandic Friends bei",
"King bed": "Kingsize-Bett",
"km to city center": "km bis zum Stadtzentrum",
"Language": "Sprache",
"Lastname": "Nachname",
"Latest searches": "Letzte Suchanfragen",
@@ -147,9 +158,9 @@
"Member price": "Mitgliederpreis",
"Member price from": "Mitgliederpreis ab",
"Members": "Mitglieder",
"Membership cards": "Mitgliedskarten",
"Membership ID": "Mitglieds-ID",
"Membership ID copied to clipboard": "Mitglieds-ID in die Zwischenablage kopiert",
"Membership cards": "Mitgliedskarten",
"Menu": "Menu",
"Modify": "Ändern",
"Month": "Monat",
@@ -164,6 +175,9 @@
"Nearby companies": "Nahe gelegene Unternehmen",
"New password": "Neues Kennwort",
"Next": "Nächste",
"next level:": "Nächstes Level:",
"night": "nacht",
"nights": "Nächte",
"Nights needed to level up": "Nächte, die zum Levelaufstieg benötigt werden",
"No breakfast": "Kein Frühstück",
"No content published": "Kein Inhalt veröffentlicht",
@@ -175,11 +189,14 @@
"Non-refundable": "Nicht erstattungsfähig",
"Not found": "Nicht gefunden",
"Nr night, nr adult": "{nights, number} Nacht, {adults, number} Erwachsener",
"number": "nummer",
"n/a": "n/a",
"On your journey": "Auf deiner Reise",
"Open": "Offen",
"Open language menu": "Sprachmenü öffnen",
"Open menu": "Menü öffnen",
"Open my pages menu": "Meine Seiten Menü öffnen",
"or": "oder",
"Overview": "Übersicht",
"Parking": "Parken",
"Parking / Garage": "Parken / Garage",
@@ -191,6 +208,7 @@
"Phone is required": "Telefon ist erforderlich",
"Phone number": "Telefonnummer",
"Please enter a valid phone number": "Bitte geben Sie eine gültige Telefonnummer ein",
"points": "Punkte",
"Points": "Punkte",
"Points being calculated": "Punkte werden berechnet",
"Points earned prior to May 1, 2021": "Zusammengeführte Punkte vor dem 1. Mai 2021",
@@ -207,11 +225,11 @@
"Read more about the hotel": "Lesen Sie mehr über das Hotel",
"Read more about wellness & exercise": "Read more about wellness & exercise",
"Remove card from member profile": "Karte aus dem Mitgliedsprofil entfernen",
"Request bedtype": "Bettentyp anfragen",
"Restaurant": "{count, plural, one {#Restaurant} other {#Restaurants}}",
"Restaurant & Bar": "Restaurant & Bar",
"Restaurants & Bars": "Restaurants & Bars",
"Retype new password": "Neues Passwort erneut eingeben",
"Request bedtype": "Bettentyp anfragen",
"Room & Terms": "Zimmer & Bedingungen",
"Room facilities": "Zimmerausstattung",
"Rooms": "Räume",
@@ -244,25 +262,29 @@
"Something went wrong and we couldn't add your card. Please try again later.": "Ein Fehler ist aufgetreten und wir konnten Ihre Karte nicht hinzufügen. Bitte versuchen Sie es später erneut.",
"Something went wrong and we couldn't remove your card. Please try again later.": "Ein Fehler ist aufgetreten und wir konnten Ihre Karte nicht entfernen. Bitte versuchen Sie es später noch einmal.",
"Something went wrong!": "Etwas ist schief gelaufen!",
"special character": "sonderzeichen",
"spendable points expiring by": "{points} Einlösbare punkte verfallen bis zum {date}",
"Sports": "Sport",
"Standard price": "Standardpreis",
"Street": "Straße",
"Successfully updated profile!": "Profil erfolgreich aktualisiert!",
"Summary": "Zusammenfassung",
"TUI Points": "TUI Points",
"Tell us what information and updates you'd like to receive, and how, by clicking the link below.": "Teilen Sie uns mit, welche Informationen und Updates Sie wie erhalten möchten, indem Sie auf den unten stehenden Link klicken.",
"Thank you": "Danke",
"Theatre": "Theater",
"There are no transactions to display": "Es sind keine Transaktionen zum Anzeigen vorhanden",
"Things nearby HOTEL_NAME": "Dinge in der Nähe von {hotelName}",
"to": "zu",
"Total Points": "Gesamtpunktzahl",
"Tourist": "Tourist",
"Transaction date": "Transaktionsdatum",
"Transactions": "Transaktionen",
"Transportations": "Transportmittel",
"Tripadvisor reviews": "{rating} ({count} Bewertungen auf Tripadvisor)",
"TUI Points": "TUI Points",
"Type of bed": "Bettentyp",
"Type of room": "Zimmerart",
"uppercase letter": "großbuchstabe",
"Use bonus cheque": "Bonusscheck nutzen",
"Use code/voucher": "Code/Gutschein nutzen",
"User information": "Nutzerinformation",
@@ -290,9 +312,9 @@
"You canceled adding a new credit card.": "Sie haben das Hinzufügen einer neuen Kreditkarte abgebrochen.",
"You have no previous stays.": "Sie haben keine vorherigen Aufenthalte.",
"You have no upcoming stays.": "Sie haben keine bevorstehenden Aufenthalte.",
"Your Challenges Conquer & Earn!": "Meistern Sie Ihre Herausforderungen und verdienen Sie Geld!",
"Your card was successfully removed!": "Ihre Karte wurde erfolgreich entfernt!",
"Your card was successfully saved!": "Ihre Karte wurde erfolgreich gespeichert!",
"Your Challenges Conquer & Earn!": "Meistern Sie Ihre Herausforderungen und verdienen Sie Geld!",
"Your current level": "Ihr aktuelles Level",
"Your details": "Ihre Angaben",
"Your level": "Dein level",
@@ -301,26 +323,6 @@
"Zoo": "Zoo",
"Zoom in": "Vergrößern",
"Zoom out": "Verkleinern",
"as of today": "Stand heute",
"booking.adults": "{totalAdults, plural, one {# erwachsene} other {# erwachsene}}",
"booking.nights": "{totalNights, plural, one {# nacht} other {# Nächte}}",
"booking.rooms": "{totalRooms, plural, one {# zimmer} other {# räume}}",
"by": "bis",
"characters": "figuren",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "personen",
"hotelPages.rooms.roomCard.seeRoomDetails": "Zimmerdetails ansehen",
"km to city center": "km bis zum Stadtzentrum",
"next level:": "Nächstes Level:",
"night": "nacht",
"nights": "Nächte",
"number": "nummer",
"or": "oder",
"points": "Punkte",
"special character": "sonderzeichen",
"spendable points expiring by": "{points} Einlösbare punkte verfallen bis zum {date}",
"to": "zu",
"uppercase letter": "großbuchstabe",
"{amount} {currency}": "{amount} {currency}",
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
"{width} cm × {length} cm": "{width} cm × {length} cm"

View File

@@ -17,8 +17,10 @@
"An error occurred when adding a credit card, please try again later.": "An error occurred when adding a credit card, please try again later.",
"An error occurred when trying to update profile.": "An error occurred when trying to update profile.",
"Any changes you've made will be lost.": "Any changes you've made will be lost.",
"Approx.": "Approx.",
"Are you sure you want to remove the card ending with {lastFourDigits} from your member profile?": "Are you sure you want to remove the card ending with {lastFourDigits} from your member profile?",
"Arrival date": "Arrival date",
"as of today": "as of today",
"As our": "As our {level}",
"As our Close Friend": "As our Close Friend",
"At latest": "At latest",
@@ -30,6 +32,9 @@
"Book": "Book",
"Book reward night": "Book reward night",
"Booking number": "Booking number",
"booking.adults": "{totalAdults, plural, one {# adult} other {# adults}}",
"booking.nights": "{totalNights, plural, one {# night} other {# nights}}",
"booking.rooms": "{totalRooms, plural, one {# room} other {# rooms}}",
"Breakfast": "Breakfast",
"Breakfast buffet": "Breakfast buffet",
"Breakfast excluded": "Breakfast excluded",
@@ -37,7 +42,9 @@
"Breakfast restaurant": "Breakfast restaurant",
"Bus terminal": "Bus terminal",
"Business": "Business",
"by": "by",
"Cancel": "Cancel",
"characters": "characters",
"Check in": "Check in",
"Check out": "Check out",
"Check out the credit cards saved to your profile. Pay with a saved card when signed in for a smoother web experience.": "Check out the credit cards saved to your profile. Pay with a saved card when signed in for a smoother web experience.",
@@ -89,9 +96,9 @@
"Explore all levels and benefits": "Explore all levels and benefits",
"Explore nearby": "Explore nearby",
"Extras to your booking": "Extras to your booking",
"FAQ": "FAQ",
"Failed to delete credit card, please try again later.": "Failed to delete credit card, please try again later.",
"Fair": "Fair",
"FAQ": "FAQ",
"Find booking": "Find booking",
"Find hotels": "Find hotels",
"Firstname": "Firstname",
@@ -112,13 +119,16 @@
"Hotel": "Hotel",
"Hotel facilities": "Hotel facilities",
"Hotel surroundings": "Hotel surroundings",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "persons",
"hotelPages.rooms.roomCard.seeRoomDetails": "See room details",
"Hotels": "Hotels",
"How do you want to sleep?": "How do you want to sleep?",
"How it works": "How it works",
"Image gallery": "Image gallery",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.",
"Join Scandic Friends": "Join Scandic Friends",
"Join at no cost": "Join at no cost",
"Join Scandic Friends": "Join Scandic Friends",
"King bed": "King bed",
"km to city center": "km to city center",
"Language": "Language",
@@ -148,9 +158,9 @@
"Member price": "Member price",
"Member price from": "Member price from",
"Members": "Members",
"Membership cards": "Membership cards",
"Membership ID": "Membership ID",
"Membership ID copied to clipboard": "Membership ID copied to clipboard",
"Membership cards": "Membership cards",
"Menu": "Menu",
"Modify": "Modify",
"Month": "Month",
@@ -165,6 +175,9 @@
"Nearby companies": "Nearby companies",
"New password": "New password",
"Next": "Next",
"next level:": "next level:",
"night": "night",
"nights": "nights",
"Nights needed to level up": "Nights needed to level up",
"No breakfast": "No breakfast",
"No content published": "No content published",
@@ -176,11 +189,14 @@
"Non-refundable": "Non-refundable",
"Not found": "Not found",
"Nr night, nr adult": "{nights, number} night, {adults, number} adult",
"number": "number",
"n/a": "n/a",
"On your journey": "On your journey",
"Open": "Open",
"Open language menu": "Open language menu",
"Open menu": "Open menu",
"Open my pages menu": "Open my pages menu",
"or": "or",
"Overview": "Overview",
"Parking": "Parking",
"Parking / Garage": "Parking / Garage",
@@ -192,6 +208,7 @@
"Phone is required": "Phone is required",
"Phone number": "Phone number",
"Please enter a valid phone number": "Please enter a valid phone number",
"points": "Points",
"Points": "Points",
"Points being calculated": "Points being calculated",
"Points earned prior to May 1, 2021": "Points earned prior to May 1, 2021",
@@ -208,6 +225,7 @@
"Read more about the hotel": "Read more about the hotel",
"Read more about wellness & exercise": "Read more about wellness & exercise",
"Remove card from member profile": "Remove card from member profile",
"Request bedtype": "Request bedtype",
"Restaurant": "{count, plural, one {#Restaurant} other {#Restaurants}}",
"Restaurant & Bar": "Restaurant & Bar",
"Restaurants & Bars": "Restaurants & Bars",
@@ -226,10 +244,12 @@
"See room details": "See room details",
"See rooms": "See rooms",
"Select a country": "Select a country",
"Select breakfast options": "Select breakfast options",
"Select country of residence": "Select country of residence",
"Select date of birth": "Select date of birth",
"Select dates": "Select dates",
"Select language": "Select language",
"Select payment method": "Select payment method",
"Select your language": "Select your language",
"Shopping": "Shopping",
"Shopping & Dining": "Shopping & Dining",
@@ -242,25 +262,29 @@
"Something went wrong and we couldn't add your card. Please try again later.": "Something went wrong and we couldn't add your card. Please try again later.",
"Something went wrong and we couldn't remove your card. Please try again later.": "Something went wrong and we couldn't remove your card. Please try again later.",
"Something went wrong!": "Something went wrong!",
"special character": "special character",
"spendable points expiring by": "{points} spendable points expiring by {date}",
"Sports": "Sports",
"Standard price": "Standard price",
"Street": "Street",
"Successfully updated profile!": "Successfully updated profile!",
"Summary": "Summary",
"TUI Points": "TUI Points",
"Tell us what information and updates you'd like to receive, and how, by clicking the link below.": "Tell us what information and updates you'd like to receive, and how, by clicking the link below.",
"Thank you": "Thank you",
"Theatre": "Theatre",
"There are no transactions to display": "There are no transactions to display",
"Things nearby HOTEL_NAME": "Things nearby {hotelName}",
"to": "to",
"Total Points": "Total Points",
"Tourist": "Tourist",
"Transaction date": "Transaction date",
"Transactions": "Transactions",
"Transportations": "Transportations",
"Tripadvisor reviews": "{rating} ({count} reviews on Tripadvisor)",
"TUI Points": "TUI Points",
"Type of bed": "Type of bed",
"Type of room": "Type of room",
"uppercase letter": "uppercase letter",
"Use bonus cheque": "Use bonus cheque",
"Use code/voucher": "Use code/voucher",
"User information": "User information",
@@ -288,9 +312,9 @@
"You canceled adding a new credit card.": "You canceled adding a new credit card.",
"You have no previous stays.": "You have no previous stays.",
"You have no upcoming stays.": "You have no upcoming stays.",
"Your Challenges Conquer & Earn!": "Your Challenges Conquer & Earn!",
"Your card was successfully removed!": "Your card was successfully removed!",
"Your card was successfully saved!": "Your card was successfully saved!",
"Your Challenges Conquer & Earn!": "Your Challenges Conquer & Earn!",
"Your current level": "Your current level",
"Your details": "Your details",
"Your level": "Your level",
@@ -299,29 +323,6 @@
"Zoo": "Zoo",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"as of today": "as of today",
"booking.adults": "{totalAdults, plural, one {# adult} other {# adults}}",
"booking.nights": "{totalNights, plural, one {# night} other {# nights}}",
"booking.rooms": "{totalRooms, plural, one {# room} other {# rooms}}",
"by": "by",
"characters": "characters",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "persons",
"hotelPages.rooms.roomCard.seeRoomDetails": "See room details",
"km to city center": "km to city center",
"next level:": "next level:",
"night": "night",
"nights": "nights",
"number": "number",
"or": "or",
"points": "Points",
"Request bedtype": "Request bedtype",
"Select breakfast options": "Select breakfast options",
"Select payment method": "Select payment method",
"special character": "special character",
"spendable points expiring by": "{points} spendable points expiring by {date}",
"to": "to",
"uppercase letter": "uppercase letter",
"{amount} {currency}": "{amount} {currency}",
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
"{width} cm × {length} cm": "{width} cm × {length} cm"

View File

@@ -13,12 +13,14 @@
"Already a friend?": "Oletko jo ystävä?",
"Amenities": "Mukavuudet",
"Amusement park": "Huvipuisto",
"An error occurred when adding a credit card, please try again later.": "Luottokorttia lisättäessä tapahtui virhe. Yritä myöhemmin uudelleen.",
"An error occurred trying to manage your preferences, please try again later.": "Asetusten hallinnassa tapahtui virhe. Yritä myöhemmin uudelleen.",
"An error occurred when adding a credit card, please try again later.": "Luottokorttia lisättäessä tapahtui virhe. Yritä myöhemmin uudelleen.",
"An error occurred when trying to update profile.": "Profiilia päivitettäessä tapahtui virhe.",
"Any changes you've made will be lost.": "Kaikki tekemäsi muutokset menetetään.",
"Are you sure you want to remove the card ending with {lastFourDigits} from your member profile?": "Haluatko varmasti poistaa kortin, joka päättyy numeroon {lastFourDigits} jäsenprofiilistasi?",
"Arrival date": "Saapumispäivä",
"Approx.": "Noin",
"as of today": "tänään",
"As our": "{level}-etu",
"As our Close Friend": "Läheisenä ystävänämme",
"At latest": "Viimeistään",
@@ -30,14 +32,19 @@
"Book": "Varaa",
"Book reward night": "Kirjapalkinto-ilta",
"Booking number": "Varausnumero",
"booking.adults": "{totalAdults, plural, one {# aikuinen} other {# aikuiset}}",
"booking.nights": "{totalNights, plural, one {# yö} other {# yötä}}",
"booking.rooms": "{totalRooms, plural, one {# huone} other {# sviitti}}",
"Breakfast": "Aamiainen",
"Breakfast buffet": "Aamiaisbuffet",
"Breakfast excluded": "Aamiainen ei sisälly",
"Breakfast included": "Aamiainen sisältyy",
"Breakfast restaurant": "Breakfast restaurant",
"Bus terminal": "Bussiasema",
"Business": "Business",
"Breakfast restaurant": "Breakfast restaurant",
"by": "mennessä",
"Cancel": "Peruuttaa",
"characters": "hahmoja",
"Check in": "Sisäänkirjautuminen",
"Check out": "Uloskirjautuminen",
"Check out the credit cards saved to your profile. Pay with a saved card when signed in for a smoother web experience.": "Tarkista profiiliisi tallennetut luottokortit. Maksa tallennetulla kortilla kirjautuneena, jotta verkkokokemus on sujuvampi.",
@@ -82,16 +89,16 @@
"Edit profile": "Muokkaa profiilia",
"Email": "Sähköposti",
"Email address": "Sähköpostiosoite",
"Enjoy relaxed restaurant experiences": "Enjoy relaxed restaurant experiences",
"Enter destination or hotel": "Anna kohde tai hotelli",
"Enter your details": "Anna tietosi",
"Enjoy relaxed restaurant experiences": "Enjoy relaxed restaurant experiences",
"Events that make an impression": "Events that make an impression",
"Explore all levels and benefits": "Tutustu kaikkiin tasoihin ja etuihin",
"Explore nearby": "Tutustu lähialueeseen",
"Extras to your booking": "Varauksessa lisäpalveluita",
"FAQ": "UKK",
"Failed to delete credit card, please try again later.": "Luottokortin poistaminen epäonnistui, yritä myöhemmin uudelleen.",
"Fair": "Messukeskus",
"FAQ": "UKK",
"Find booking": "Etsi varaus",
"Find hotels": "Etsi hotelleja",
"Firstname": "Etunimi",
@@ -112,13 +119,16 @@
"Hotel": "Hotelli",
"Hotel facilities": "Hotellin palvelut",
"Hotel surroundings": "Hotellin ympäristö",
"hotelPages.rooms.roomCard.person": "henkilö",
"hotelPages.rooms.roomCard.persons": "Henkilöä",
"hotelPages.rooms.roomCard.seeRoomDetails": "Katso huoneen tiedot",
"Hotels": "Hotellit",
"How do you want to sleep?": "Kuinka haluat nukkua?",
"How it works": "Kuinka se toimii",
"Image gallery": "Kuvagalleria",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Viestintäasetuksiasi ei voi hallita juuri nyt. Yritä myöhemmin uudelleen tai ota yhteyttä tukeen, jos ongelma jatkuu.",
"Join Scandic Friends": "Liity jäseneksi",
"Join at no cost": "Liity maksutta",
"Join Scandic Friends": "Liity jäseneksi",
"King bed": "King-vuode",
"km to city center": "km keskustaan",
"Language": "Kieli",
@@ -148,9 +158,9 @@
"Member price": "Jäsenhinta",
"Member price from": "Jäsenhinta alkaen",
"Members": "Jäsenet",
"Membership cards": "Jäsenkortit",
"Membership ID": "Jäsentunnus",
"Membership ID copied to clipboard": "Jäsenyystunnus kopioitu leikepöydälle",
"Membership cards": "Jäsenkortit",
"Menu": "Valikko",
"Modify": "Muokkaa",
"Month": "Kuukausi",
@@ -165,6 +175,9 @@
"Nearby companies": "Läheiset yritykset",
"New password": "Uusi salasana",
"Next": "Seuraava",
"next level:": "pistettä tasolle:",
"night": "yö",
"nights": "yötä",
"Nights needed to level up": "Yöt, joita tarvitaan tasolle",
"No breakfast": "Ei aamiaista",
"No content published": "Ei julkaistua sisältöä",
@@ -176,11 +189,14 @@
"Non-refundable": "Ei palautettavissa",
"Not found": "Ei löydetty",
"Nr night, nr adult": "{nights, number} yö, {adults, number} aikuinen",
"number": "määrä",
"n/a": "n/a",
"On your journey": "Matkallasi",
"Open": "Avata",
"Open language menu": "Avaa kielivalikko",
"Open menu": "Avaa valikko",
"Open my pages menu": "Avaa omat sivut -valikko",
"or": "tai",
"Overview": "Yleiskatsaus",
"Parking": "Pysäköinti",
"Parking / Garage": "Pysäköinti / Autotalli",
@@ -192,6 +208,7 @@
"Phone is required": "Puhelin vaaditaan",
"Phone number": "Puhelinnumero",
"Please enter a valid phone number": "Ole hyvä ja näppäile voimassaoleva puhelinnumero",
"points": "pistettä",
"Points": "Pisteet",
"Points being calculated": "Pisteitä lasketaan",
"Points earned prior to May 1, 2021": "Pisteet, jotka ansaittu ennen 1.5.2021",
@@ -208,6 +225,7 @@
"Read more about the hotel": "Lue lisää hotellista",
"Read more about wellness & exercise": "Read more about wellness & exercise",
"Remove card from member profile": "Poista kortti jäsenprofiilista",
"Request bedtype": "Pyydä sänkytyyppiä",
"Restaurant": "{count, plural, one {#Ravintola} other {#Restaurants}}",
"Restaurant & Bar": "Ravintola & Baari",
"Restaurants & Bars": "Restaurants & Bars",
@@ -217,7 +235,6 @@
"Rooms": "Huoneet",
"Rooms & Guests": "Huoneet & Vieraat",
"Rooms & Guestss": "Huoneet & Vieraat",
"Request bedtype": "Pyydä sänkytyyppiä",
"Sauna and gym": "Sauna and gym",
"Save": "Tallenna",
"Scandic Friends Mastercard": "Scandic Friends Mastercard",
@@ -246,25 +263,29 @@
"Something went wrong and we couldn't add your card. Please try again later.": "Jotain meni pieleen, emmekä voineet lisätä korttiasi. Yritä myöhemmin uudelleen.",
"Something went wrong and we couldn't remove your card. Please try again later.": "Jotain meni pieleen, emmekä voineet poistaa korttiasi. Yritä myöhemmin uudelleen.",
"Something went wrong!": "Jotain meni pieleen!",
"special character": "erikoishahmo",
"spendable points expiring by": "{points} pistettä vanhenee {date} mennessä",
"Sports": "Urheilu",
"Standard price": "Normaali hinta",
"Street": "Katu",
"Successfully updated profile!": "Profiilin päivitys onnistui!",
"Summary": "Yhteenveto",
"TUI Points": "TUI Points",
"Tell us what information and updates you'd like to receive, and how, by clicking the link below.": "Kerro meille, mitä tietoja ja päivityksiä haluat saada ja miten, napsauttamalla alla olevaa linkkiä.",
"Thank you": "Kiitos",
"Theatre": "Teatteri",
"There are no transactions to display": "Näytettäviä tapahtumia ei ole",
"Things nearby HOTEL_NAME": "Lähellä olevia asioita {hotelName}",
"to": "to",
"Total Points": "Kokonaispisteet",
"Tourist": "Turisti",
"Transaction date": "Tapahtuman päivämäärä",
"Transactions": "Tapahtumat",
"Transportations": "Kuljetukset",
"Tripadvisor reviews": "{rating} ({count} arvostelua TripAdvisorissa)",
"TUI Points": "TUI Points",
"Type of bed": "Vuodetyyppi",
"Type of room": "Huonetyyppi",
"uppercase letter": "iso kirjain",
"Use bonus cheque": "Käytä bonussekkiä",
"Use code/voucher": "Käytä koodia/voucheria",
"User information": "Käyttäjän tiedot",
@@ -292,9 +313,9 @@
"You canceled adding a new credit card.": "Peruutit uuden luottokortin lisäämisen.",
"You have no previous stays.": "Sinulla ei ole aiempia majoituksia.",
"You have no upcoming stays.": "Sinulla ei ole tulevia majoituksia.",
"Your Challenges Conquer & Earn!": "Voita ja ansaitse haasteesi!",
"Your card was successfully removed!": "Korttisi poistettiin onnistuneesti!",
"Your card was successfully saved!": "Korttisi tallennettu onnistuneesti!",
"Your Challenges Conquer & Earn!": "Voita ja ansaitse haasteesi!",
"Your current level": "Nykyinen tasosi",
"Your details": "Tietosi",
"Your level": "Tasosi",
@@ -303,26 +324,6 @@
"Zoo": "Eläintarha",
"Zoom in": "Lähennä",
"Zoom out": "Loitonna",
"as of today": "tänään",
"booking.adults": "{totalAdults, plural, one {# aikuinen} other {# aikuiset}}",
"booking.nights": "{totalNights, plural, one {# yö} other {# yötä}}",
"booking.rooms": "{totalRooms, plural, one {# huone} other {# sviitti}}",
"by": "mennessä",
"characters": "hahmoja",
"hotelPages.rooms.roomCard.person": "henkilö",
"hotelPages.rooms.roomCard.persons": "Henkilöä",
"hotelPages.rooms.roomCard.seeRoomDetails": "Katso huoneen tiedot",
"km to city center": "km keskustaan",
"next level:": "pistettä tasolle:",
"night": "yö",
"nights": "yötä",
"number": "määrä",
"or": "tai",
"points": "pistettä",
"special character": "erikoishahmo",
"spendable points expiring by": "{points} pistettä vanhenee {date} mennessä",
"to": "to",
"uppercase letter": "iso kirjain",
"{amount} {currency}": "{amount} {currency}",
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
"{width} cm × {length} cm": "{width} cm × {length} cm"

View File

@@ -13,10 +13,11 @@
"Already a friend?": "Allerede Friend?",
"Amenities": "Fasiliteter",
"Amusement park": "Tivoli",
"An error occurred when adding a credit card, please try again later.": "Det oppstod en feil ved å legge til et kredittkort. Prøv igjen senere.",
"An error occurred trying to manage your preferences, please try again later.": "Det oppstod en feil under forsøket på å administrere innstillingene dine. Prøv igjen senere.",
"An error occurred when adding a credit card, please try again later.": "Det oppstod en feil ved å legge til et kredittkort. Prøv igjen senere.",
"An error occurred when trying to update profile.": "Det oppstod en feil under forsøk på å oppdatere profilen.",
"Any changes you've made will be lost.": "Eventuelle endringer du har gjort, går tapt.",
"Approx.": "Ca.",
"Are you sure you want to remove the card ending with {lastFourDigits} from your member profile?": "Er du sikker på at du vil fjerne kortet som slutter på {lastFourDigits} fra medlemsprofilen din?",
"Arrival date": "Ankomstdato",
"as of today": "per i dag",
@@ -31,13 +32,18 @@
"Book": "Bestill",
"Book reward night": "Bestill belønningskveld",
"Booking number": "Bestillingsnummer",
"booking.adults": "{totalAdults, plural, one {# voksen} other {# voksne}}",
"booking.nights": "{totalNights, plural, one {# natt} other {# netter}}",
"booking.rooms": "{totalRooms, plural, one {# rom} other {# rom}}",
"Breakfast": "Frokost",
"Breakfast buffet": "Breakfast buffet",
"Breakfast excluded": "Frokost ekskludert",
"Breakfast included": "Frokost inkludert",
"Bus terminal": "Bussterminal",
"Business": "Forretnings",
"by": "innen",
"Cancel": "Avbryt",
"characters": "tegn",
"Check in": "Sjekk inn",
"Check out": "Sjekk ut",
"Check out the credit cards saved to your profile. Pay with a saved card when signed in for a smoother web experience.": "Sjekk ut kredittkortene som er lagret på profilen din. Betal med et lagret kort når du er pålogget for en jevnere nettopplevelse.",
@@ -82,9 +88,9 @@
"Edit profile": "Rediger profil",
"Email": "E-post",
"Email address": "E-postadresse",
"Enjoy relaxed restaurant experiences": "Enjoy relaxed restaurant experiences",
"Enter destination or hotel": "Skriv inn destinasjon eller hotell",
"Enter your details": "Skriv inn detaljene dine",
"Enjoy relaxed restaurant experiences": "Enjoy relaxed restaurant experiences",
"Events that make an impression": "Events that make an impression",
"Explore all levels and benefits": "Utforsk alle nivåer og fordeler",
"Explore nearby": "Utforsk i nærheten",
@@ -112,13 +118,16 @@
"Hotel": "Hotel",
"Hotel facilities": "Hotelfaciliteter",
"Hotel surroundings": "Hotellomgivelser",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "personer",
"hotelPages.rooms.roomCard.seeRoomDetails": "Se detaljer om rommet",
"Hotels": "Hoteller",
"How do you want to sleep?": "Hvordan vil du sove?",
"How it works": "Hvordan det fungerer",
"Image gallery": "Bildegalleri",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Det er ikke mulig å administrere kommunikasjonspreferansene dine akkurat nå, prøv igjen senere eller kontakt support hvis problemet vedvarer.",
"Join Scandic Friends": "Bli med i Scandic Friends",
"Join at no cost": "Bli med uten kostnad",
"Join Scandic Friends": "Bli med i Scandic Friends",
"King bed": "King-size-seng",
"km to city center": "km til sentrum",
"Language": "Språk",
@@ -148,9 +157,9 @@
"Member price": "Medlemspris",
"Member price from": "Medlemspris fra",
"Members": "Medlemmer",
"Membership cards": "Medlemskort",
"Membership ID": "Medlems-ID",
"Membership ID copied to clipboard": "Medlems-ID kopiert til utklippstavlen",
"Membership cards": "Medlemskort",
"Menu": "Menu",
"Modify": "Endre",
"Month": "Måned",
@@ -165,6 +174,9 @@
"Nearby companies": "Nærliggende selskaper",
"New password": "Nytt passord",
"Next": "Neste",
"next level:": "Neste nivå:",
"night": "natt",
"nights": "netter",
"Nights needed to level up": "Netter som trengs for å komme opp i nivå",
"No breakfast": "Ingen frokost",
"No content published": "Ingen innhold publisert",
@@ -176,11 +188,14 @@
"Non-refundable": "Ikke-refunderbart",
"Not found": "Ikke funnet",
"Nr night, nr adult": "{nights, number} natt, {adults, number} voksen",
"number": "antall",
"n/a": "n/a",
"On your journey": "På reisen din",
"Open": "Åpen",
"Open language menu": "Åpne språkmenyen",
"Open menu": "Åpne menyen",
"Open my pages menu": "Åpne mine sider menyen",
"or": "eller",
"Overview": "Oversikt",
"Parking": "Parkering",
"Parking / Garage": "Parkering / Garasje",
@@ -192,6 +207,7 @@
"Phone is required": "Telefon kreves",
"Phone number": "Telefonnummer",
"Please enter a valid phone number": "Vennligst oppgi et gyldig telefonnummer",
"points": "poeng",
"Points": "Poeng",
"Points being calculated": "Poeng beregnes",
"Points earned prior to May 1, 2021": "Opptjente poeng før 1. mai 2021",
@@ -208,11 +224,11 @@
"Read more about the hotel": "Les mer om hotellet",
"Read more about wellness & exercise": "Read more about wellness & exercise",
"Remove card from member profile": "Fjern kortet fra medlemsprofilen",
"Request bedtype": "Be om sengetype",
"Restaurant": "{count, plural, one {#Restaurant} other {#Restaurants}}",
"Restaurant & Bar": "Restaurant & Bar",
"Restaurants & Bars": "Restaurants & Bars",
"Retype new password": "Skriv inn nytt passord på nytt",
"Request bedtype": "Be om sengetype",
"Room & Terms": "Rom & Vilkår",
"Room facilities": "Romfasiliteter",
"Rooms": "Rom",
@@ -245,25 +261,29 @@
"Something went wrong and we couldn't add your card. Please try again later.": "Noe gikk galt, og vi kunne ikke legge til kortet ditt. Prøv igjen senere.",
"Something went wrong and we couldn't remove your card. Please try again later.": "Noe gikk galt, og vi kunne ikke fjerne kortet ditt. Vennligst prøv igjen senere.",
"Something went wrong!": "Noe gikk galt!",
"special character": "spesiell karakter",
"spendable points expiring by": "{points} Brukbare poeng utløper innen {date}",
"Sports": "Sport",
"Standard price": "Standardpris",
"Street": "Gate",
"Successfully updated profile!": "Vellykket oppdatert profil!",
"Summary": "Sammendrag",
"TUI Points": "TUI Points",
"Tell us what information and updates you'd like to receive, and how, by clicking the link below.": "Fortell oss hvilken informasjon og hvilke oppdateringer du ønsker å motta, og hvordan, ved å klikke på lenken nedenfor.",
"Thank you": "Takk",
"Theatre": "Teater",
"There are no transactions to display": "Det er ingen transaksjoner å vise",
"Things nearby HOTEL_NAME": "Ting i nærheten av {hotelName}",
"to": "til",
"Total Points": "Totale poeng",
"Tourist": "Turist",
"Transaction date": "Transaksjonsdato",
"Transactions": "Transaksjoner",
"Transportations": "Transport",
"Tripadvisor reviews": "{rating} ({count} anmeldelser på Tripadvisor)",
"TUI Points": "TUI Points",
"Type of bed": "Sengtype",
"Type of room": "Romtype",
"uppercase letter": "stor bokstav",
"Use bonus cheque": "Bruk bonussjekk",
"Use code/voucher": "Bruk kode/voucher",
"User information": "Brukerinformasjon",
@@ -291,9 +311,9 @@
"You canceled adding a new credit card.": "Du kansellerte å legge til et nytt kredittkort.",
"You have no previous stays.": "Du har ingen tidligere opphold.",
"You have no upcoming stays.": "Du har ingen kommende opphold.",
"Your Challenges Conquer & Earn!": "Dine utfordringer Erobre og tjen!",
"Your card was successfully removed!": "Kortet ditt ble fjernet!",
"Your card was successfully saved!": "Kortet ditt ble lagret!",
"Your Challenges Conquer & Earn!": "Dine utfordringer Erobre og tjen!",
"Your current level": "Ditt nåværende nivå",
"Your details": "Dine detaljer",
"Your level": "Ditt nivå",
@@ -302,26 +322,6 @@
"Zoo": "Dyrehage",
"Zoom in": "Zoom inn",
"Zoom out": "Zoom ut",
"as of today": "per idag",
"booking.adults": "{totalAdults, plural, one {# voksen} other {# voksne}}",
"booking.nights": "{totalNights, plural, one {# natt} other {# netter}}",
"booking.rooms": "{totalRooms, plural, one {# rom} other {# rom}}",
"by": "innen",
"characters": "tegn",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "personer",
"hotelPages.rooms.roomCard.seeRoomDetails": "Se detaljer om rommet",
"km to city center": "km til sentrum",
"next level:": "Neste nivå:",
"night": "natt",
"nights": "netter",
"number": "antall",
"or": "eller",
"points": "poeng",
"special character": "spesiell karakter",
"spendable points expiring by": "{points} Brukbare poeng utløper innen {date}",
"to": "til",
"uppercase letter": "stor bokstav",
"{amount} {currency}": "{amount} {currency}",
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
"{width} cm × {length} cm": "{width} cm × {length} cm"

View File

@@ -13,10 +13,11 @@
"Already a friend?": "Är du redan en vän?",
"Amenities": "Bekvämligheter",
"Amusement park": "Nöjespark",
"An error occurred when adding a credit card, please try again later.": "Ett fel uppstod när ett kreditkort lades till, försök igen senare.",
"An error occurred trying to manage your preferences, please try again later.": "Ett fel uppstod när du försökte hantera dina inställningar, försök igen senare.",
"An error occurred when adding a credit card, please try again later.": "Ett fel uppstod när ett kreditkort lades till, försök igen senare.",
"An error occurred when trying to update profile.": "Ett fel uppstod när du försökte uppdatera profilen.",
"Any changes you've made will be lost.": "Alla ändringar du har gjort kommer att gå förlorade.",
"Approx.": "Ca.",
"Are you sure you want to remove the card ending with {lastFourDigits} from your member profile?": "Är du säker på att du vill ta bort kortet som slutar med {lastFourDigits} från din medlemsprofil?",
"Arrival date": "Ankomstdatum",
"as of today": "per idag",
@@ -31,14 +32,19 @@
"Book": "Boka",
"Book reward night": "Boka frinatt",
"Booking number": "Bokningsnummer",
"booking.adults": "{totalAdults, plural, one {# vuxen} other {# vuxna}}",
"booking.nights": "{totalNights, plural, one {# natt} other {# nätter}}",
"booking.rooms": "{totalRooms, plural, one {# rum} other {# rum}}",
"Breakfast": "Frukost",
"Breakfast buffet": "Frukostbuffé",
"Breakfast excluded": "Frukost ingår ej",
"Breakfast included": "Frukost ingår",
"Breakfast restaurant": "Breakfast restaurant",
"Bus terminal": "Bussterminal",
"Business": "Business",
"Breakfast restaurant": "Breakfast restaurant",
"by": "innan",
"Cancel": "Avbryt",
"characters": "tecken",
"Check in": "Checka in",
"Check out": "Checka ut",
"Check out the credit cards saved to your profile. Pay with a saved card when signed in for a smoother web experience.": "Kolla in kreditkorten som sparats i din profil. Betala med ett sparat kort när du är inloggad för en smidigare webbupplevelse.",
@@ -83,16 +89,16 @@
"Edit profile": "Redigera profil",
"Email": "E-post",
"Email address": "E-postadress",
"Enjoy relaxed restaurant experiences": "Enjoy relaxed restaurant experiences",
"Enter destination or hotel": "Ange destination eller hotell",
"Enter your details": "Ange dina uppgifter",
"Enjoy relaxed restaurant experiences": "Enjoy relaxed restaurant experiences",
"Events that make an impression": "Events that make an impression",
"Explore all levels and benefits": "Utforska alla nivåer och fördelar",
"Explore nearby": "Utforska i närheten",
"Extras to your booking": "Extra tillval till din bokning",
"FAQ": "FAQ",
"Failed to delete credit card, please try again later.": "Det gick inte att ta bort kreditkortet, försök igen senare.",
"Fair": "Mässa",
"FAQ": "FAQ",
"Find booking": "Hitta bokning",
"Find hotels": "Hitta hotell",
"Firstname": "Förnamn",
@@ -113,14 +119,16 @@
"Hotel": "Hotell",
"Hotel facilities": "Hotellfaciliteter",
"Hotel surroundings": "Hotellomgivning",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "personer",
"hotelPages.rooms.roomCard.seeRoomDetails": "Se information om rummet",
"Hotels": "Hotell",
"How do you want to sleep?": "Hur vill du sova?",
"How it works": "Hur det fungerar",
"Image gallery": "Bildgalleri",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Det gick inte att hantera dina kommunikationsinställningar just nu, försök igen senare eller kontakta supporten om problemet kvarstår.",
"Join Scandic Friends": "Gå med i Scandic Friends",
"Join at no cost": "Gå med utan kostnad",
"Join Scandic Friends": "Gå med i Scandic Friends",
"King bed": "King size-säng",
"km to city center": "km till stadens centrum",
"Language": "Språk",
@@ -150,9 +158,9 @@
"Member price": "Medlemspris",
"Member price from": "Medlemspris från",
"Members": "Medlemmar",
"Membership cards": "Medlemskort",
"Membership ID": "Medlems-ID",
"Membership ID copied to clipboard": "Medlems-ID kopierat till urklipp",
"Membership cards": "Medlemskort",
"Menu": "Meny",
"Modify": "Ändra",
"Month": "Månad",
@@ -167,6 +175,9 @@
"Nearby companies": "Närliggande företag",
"New password": "Nytt lösenord",
"Next": "Nästa",
"next level:": "Nästa nivå:",
"night": "natt",
"nights": "nätter",
"Nights needed to level up": "Nätter som behövs för att gå upp i nivå",
"No breakfast": "Ingen frukost",
"No content published": "Inget innehåll publicerat",
@@ -178,11 +189,14 @@
"Non-refundable": "Ej återbetalningsbar",
"Not found": "Hittades inte",
"Nr night, nr adult": "{nights, number} natt, {adults, number} vuxen",
"number": "nummer",
"n/a": "n/a",
"On your journey": "På din resa",
"Open": "Öppna",
"Open language menu": "Öppna språkmenyn",
"Open menu": "Öppna menyn",
"Open my pages menu": "Öppna mina sidor menyn",
"or": "eller",
"Overview": "Översikt",
"Parking": "Parkering",
"Parking / Garage": "Parkering / Garage",
@@ -194,6 +208,7 @@
"Phone is required": "Telefonnummer är obligatorisk",
"Phone number": "Telefonnummer",
"Please enter a valid phone number": "Var vänlig och ange ett giltigt telefonnummer",
"points": "poäng",
"Points": "Poäng",
"Points being calculated": "Poäng beräknas",
"Points earned prior to May 1, 2021": "Intjänade poäng före den 1 maj 2021",
@@ -210,11 +225,11 @@
"Read more about the hotel": "Läs mer om hotellet",
"Read more about wellness & exercise": "Read more about wellness & exercise",
"Remove card from member profile": "Ta bort kortet från medlemsprofilen",
"Request bedtype": "Request bedtype",
"Restaurant": "{count, plural, one {#Restaurang} other {#Restauranger}}",
"Restaurant & Bar": "Restaurang & Bar",
"Restaurants & Bars": "Restaurants & Bars",
"Retype new password": "Upprepa nytt lösenord",
"Request bedtype": "Request bedtype",
"Room & Terms": "Rum & Villkor",
"Room facilities": "Rumfaciliteter",
"Rooms": "Rum",
@@ -247,23 +262,26 @@
"Something went wrong and we couldn't add your card. Please try again later.": "Något gick fel och vi kunde inte lägga till ditt kort. Försök igen senare.",
"Something went wrong and we couldn't remove your card. Please try again later.": "Något gick fel och vi kunde inte ta bort ditt kort. Försök igen senare.",
"Something went wrong!": "Något gick fel!",
"special character": "speciell karaktär",
"spendable points expiring by": "{points} poäng förfaller {date}",
"Sports": "Sport",
"Standard price": "Standardpris",
"Street": "Gata",
"Successfully updated profile!": "Profilen har uppdaterats framgångsrikt!",
"Summary": "Sammanfattning",
"TUI Points": "TUI Points",
"Tell us what information and updates you'd like to receive, and how, by clicking the link below.": "Berätta för oss vilken information och vilka uppdateringar du vill få och hur genom att klicka på länken nedan.",
"Thank you": "Tack",
"Theatre": "Teater",
"There are no transactions to display": "Det finns inga transaktioner att visa",
"Things nearby HOTEL_NAME": "Saker i närheten av {hotelName}",
"to": "till",
"Total Points": "Poäng totalt",
"Tourist": "Turist",
"Transaction date": "Transaktionsdatum",
"Transactions": "Transaktioner",
"Transportations": "Transport",
"Tripadvisor reviews": "{rating} ({count} recensioner på Tripadvisor)",
"TUI Points": "TUI Points",
"Type of bed": "Sängtyp",
"Type of room": "Rumstyp",
"uppercase letter": "stor bokstav",
@@ -294,9 +312,9 @@
"You canceled adding a new credit card.": "Du avbröt att lägga till ett nytt kreditkort.",
"You have no previous stays.": "Du har inga tidigare vistelser.",
"You have no upcoming stays.": "Du har inga planerade resor.",
"Your Challenges Conquer & Earn!": "Dina utmaningar Erövra och tjäna!",
"Your card was successfully removed!": "Ditt kort har tagits bort!",
"Your card was successfully saved!": "Ditt kort har sparats!",
"Your Challenges Conquer & Earn!": "Dina utmaningar Erövra och tjäna!",
"Your current level": "Din nuvarande nivå",
"Your details": "Dina uppgifter",
"Your level": "Din nivå",
@@ -305,26 +323,6 @@
"Zoo": "Djurpark",
"Zoom in": "Zooma in",
"Zoom out": "Zooma ut",
"as of today": "från och med idag",
"booking.adults": "{totalAdults, plural, one {# vuxen} other {# vuxna}}",
"booking.nights": "{totalNights, plural, one {# natt} other {# nätter}}",
"booking.rooms": "{totalRooms, plural, one {# rum} other {# rum}}",
"by": "innan",
"characters": "tecken",
"hotelPages.rooms.roomCard.person": "person",
"hotelPages.rooms.roomCard.persons": "personer",
"hotelPages.rooms.roomCard.seeRoomDetails": "Se information om rummet",
"km to city center": "km till stadens centrum",
"next level:": "Nästa nivå:",
"night": "natt",
"nights": "nätter",
"number": "nummer",
"or": "eller",
"points": "poäng",
"special character": "speciell karaktär",
"spendable points expiring by": "{points} poäng förfaller {date}",
"to": "till",
"uppercase letter": "stor bokstav",
"{amount} {currency}": "{amount} {currency}",
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
"{width} cm × {length} cm": "{width} cm × {length} cm"

View File

@@ -572,40 +572,31 @@ export type HotelsAvailability = z.infer<typeof hotelsAvailabilitySchema>
export type HotelsAvailabilityPrices =
HotelsAvailability["data"][number]["attributes"]["bestPricePerNight"]
const priceSchema = z.object({
pricePerNight: z.string(),
pricePerStay: z.string(),
currency: z.string(),
})
export type Price = z.infer<typeof priceSchema>
const productSchema = z.object({
productType: z.object({
public: z.object({
rateCode: z.string(),
rateType: z.string().optional(),
localPrice: z.object({
pricePerNight: z.string(),
pricePerStay: z.string(),
currency: z.string(),
}),
requestedPrice: z
.object({
pricePerNight: z.string(),
pricePerStay: z.string(),
currency: z.string(),
})
.optional(),
}),
member: z.object({
rateCode: z.string(),
rateType: z.string().optional(),
localPrice: z.object({
pricePerNight: z.string(),
pricePerStay: z.string(),
currency: z.string(),
}),
requestedPrice: z
.object({
pricePerNight: z.string(),
pricePerStay: z.string(),
currency: z.string(),
})
.optional(),
}),
public: z
.object({
rateCode: z.string(),
rateType: z.string().optional(),
localPrice: priceSchema,
requestedPrice: priceSchema.optional(),
})
.optional(),
member: z
.object({
rateCode: z.string(),
rateType: z.string().optional(),
localPrice: priceSchema,
requestedPrice: priceSchema.optional(),
})
.optional(),
}),
})

View File

@@ -1,4 +1,4 @@
import { Product, RateDefinition } from "@/server/routers/hotels/output"
import { Price, Product } from "@/server/routers/hotels/output"
export type FlexibilityOptionProps = {
product: Product | undefined
@@ -6,3 +6,8 @@ export type FlexibilityOptionProps = {
value: string
paymentTerm: string
}
export interface PriceTableProps {
publicPrice?: Product["productType"]["public"]
memberPrice?: Product["productType"]["member"]
}