diff --git a/components/TempDesignSystem/Form/Phone/index.tsx b/components/TempDesignSystem/Form/Phone/index.tsx
index 9c413fc0a..5ff8f3482 100644
--- a/components/TempDesignSystem/Form/Phone/index.tsx
+++ b/components/TempDesignSystem/Form/Phone/index.tsx
@@ -78,67 +78,69 @@ export default function Phone({
}
return (
-
-
(
-
-
- {intl.formatMessage({ id: "Country code" })}
-
-
- {props.children}
-
-
+
+
(
+
+
+ {intl.formatMessage({ id: "Country code" })}
+
+
+ {props.children}
+
+
+
+
-
-
-
-
- )}
- />
-
-
+
+ )}
/>
-
-
+
+
+
+
+
)
}
diff --git a/components/TempDesignSystem/Form/Phone/phone.module.css b/components/TempDesignSystem/Form/Phone/phone.module.css
index f2b75136b..31de5be30 100644
--- a/components/TempDesignSystem/Form/Phone/phone.module.css
+++ b/components/TempDesignSystem/Form/Phone/phone.module.css
@@ -1,3 +1,7 @@
+.wrapper {
+ container-name: phoneContainer;
+ container-type: inline-size;
+}
.phone {
display: grid;
gap: var(--Spacing-x2);
@@ -100,3 +104,10 @@
justify-self: flex-start;
padding: 0;
}
+
+@container phoneContainer (max-width: 350px) {
+ .phone {
+ display: flex;
+ flex-direction: column;
+ }
+}
diff --git a/components/TempDesignSystem/Link/link.module.css b/components/TempDesignSystem/Link/link.module.css
index 138c8094e..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: 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: 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);
}
@@ -128,6 +128,15 @@
color: #000;
}
+.uiTextPlaceholder {
+ color: var(--Base-Text-Placeholder);
+}
+
+.uiTextPlaceholder:hover,
+.uiTextPlaceholder:active {
+ color: var(--Base-Text-Medium-contrast);
+}
+
.burgundy {
color: var(--Base-Text-High-contrast);
}
@@ -211,6 +220,14 @@
line-height: var(--typography-Caption-Regular-lineHeight);
}
+.tiny {
+ font-family: var(--typography-Footnote-Regular-fontFamily);
+ font-size: var(--typography-Footnote-Regular-fontSize);
+ font-weight: var(--typography-Footnote-Regular-fontWeight);
+ letter-spacing: var(--typography-Footnote-Regular-letterSpacing);
+ line-height: var(--typography-Footnote-Regular-lineHeight);
+}
+
.activeSmall {
font-family: var(--typography-Caption-Bold-fontFamily);
font-size: var(--typography-Caption-Bold-fontSize);
diff --git a/components/TempDesignSystem/Link/variants.ts b/components/TempDesignSystem/Link/variants.ts
index 61c7f8493..0a0c1dd6d 100644
--- a/components/TempDesignSystem/Link/variants.ts
+++ b/components/TempDesignSystem/Link/variants.ts
@@ -17,10 +17,12 @@ export const linkVariants = cva(styles.link, {
peach80: styles.peach80,
white: styles.white,
red: styles.red,
+ uiTextPlaceholder: styles.uiTextPlaceholder,
},
size: {
small: styles.small,
regular: styles.regular,
+ tiny: styles.tiny,
},
textDecoration: {
none: styles.noDecoration,
diff --git a/components/TempDesignSystem/Tooltip/index.tsx b/components/TempDesignSystem/Tooltip/index.tsx
index 033fc9a04..d73252161 100644
--- a/components/TempDesignSystem/Tooltip/index.tsx
+++ b/components/TempDesignSystem/Tooltip/index.tsx
@@ -28,6 +28,7 @@ export function Tooltip({
role="tooltip"
aria-label={text}
onClick={handleToggle}
+ onTouchStart={handleToggle}
data-active={isActive}
>
diff --git a/components/TempDesignSystem/Tooltip/tooltip.module.css b/components/TempDesignSystem/Tooltip/tooltip.module.css
index e25433f7c..b0ae8cf4f 100644
--- a/components/TempDesignSystem/Tooltip/tooltip.module.css
+++ b/components/TempDesignSystem/Tooltip/tooltip.module.css
@@ -16,6 +16,7 @@
transition: opacity 0.3s;
max-width: 200px;
min-width: 150px;
+ height: fit-content;
}
.tooltipContainer:hover .tooltip {
diff --git a/constants/routes/hotelReservation.js b/constants/routes/hotelReservation.js
index c7882f159..ed7ae99c5 100644
--- a/constants/routes/hotelReservation.js
+++ b/constants/routes/hotelReservation.js
@@ -48,7 +48,7 @@ export function selectHotel(lang) {
* @param {Lang} lang
*/
export function selectHotelMap(lang) {
- return `${base(lang)}/map`
+ return `${base(lang)}/select-hotel/map`
}
/**
diff --git a/i18n/dictionaries/da.json b/i18n/dictionaries/da.json
index 336f5eef9..a9fdcfae4 100644
--- a/i18n/dictionaries/da.json
+++ b/i18n/dictionaries/da.json
@@ -47,8 +47,10 @@
"Booking number": "Bookingnummer",
"Breakfast": "Morgenmad",
"Breakfast buffet": "Morgenbuffet",
+ "Breakfast deal can be purchased at the hotel.": "Morgenmad kan købes på hotellet.",
"Breakfast excluded": "Morgenmad ikke inkluderet",
"Breakfast included": "Morgenmad inkluderet",
+ "Breakfast is included.": "Morgenmad er inkluderet.",
"Breakfast restaurant": "Breakfast restaurant",
"Breakfast selection in next step.": "Valg af morgenmad i næste trin.",
"Bus terminal": "Busstation",
@@ -152,6 +154,7 @@
"Hotel": "Hotel",
"Hotel facilities": "Hotel faciliteter",
"Hotel surroundings": "Hotel omgivelser",
+ "Hotel(s)": "{amount} {amount, plural, one {hotel} other {hoteller}}",
"Hotels": "Hoteller",
"How do you want to sleep?": "Hvordan vil du sove?",
"How it works": "Hvordan det virker",
@@ -236,6 +239,7 @@
"Number of parking spots": "Antal parkeringspladser",
"OTHER PAYMENT METHODS": "ANDRE BETALINGSMETODER",
"On your journey": "På din rejse",
+ "Only pay {amount} {currency}": "Betal kun {amount} {currency}",
"Open": "Åben",
"Open gift(s)": "Åbne {amount, plural, one {gave} other {gaver}}",
"Open image gallery": "Åbn billedgalleri",
@@ -333,6 +337,7 @@
"Show wellness & exercise": "Vis velvære og motion",
"Sign up bonus": "Velkomstbonus",
"Sign up to Scandic Friends": "Tilmeld dig Scandic Friends",
+ "Signing up...": "Tilmelder...",
"Skip to main content": "Spring over og gå til hovedindhold",
"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.",
@@ -456,6 +461,5 @@
"to": "til",
"uppercase letter": "stort bogstav",
"{amount} out of {total}": "{amount} ud af {total}",
- "{amount} {currency}": "{amount} {currency}",
- "{difference}{amount} {currency}": "{difference}{amount} {currency}"
+ "{amount} {currency}": "{amount} {currency}"
}
diff --git a/i18n/dictionaries/de.json b/i18n/dictionaries/de.json
index 78d9fd5cb..96bcef2de 100644
--- a/i18n/dictionaries/de.json
+++ b/i18n/dictionaries/de.json
@@ -47,8 +47,10 @@
"Booking number": "Buchungsnummer",
"Breakfast": "Frühstück",
"Breakfast buffet": "Frühstücksbuffet",
+ "Breakfast deal can be purchased at the hotel.": "Frühstücksangebot kann im Hotel gekauft werden.",
"Breakfast excluded": "Frühstück nicht inbegriffen",
"Breakfast included": "Frühstück inbegriffen",
+ "Breakfast is included.": "Frühstück ist inbegriffen.",
"Breakfast restaurant": "Breakfast restaurant",
"Breakfast selection in next step.": "Frühstücksauswahl in nächsten Schritt.",
"Bus terminal": "Busbahnhof",
@@ -152,6 +154,7 @@
"Hotel": "Hotel",
"Hotel facilities": "Hotel-Infos",
"Hotel surroundings": "Umgebung des Hotels",
+ "Hotel(s)": "{amount} {amount, plural, one {hotel} other {hotels}}",
"Hotels": "Hotels",
"How do you want to sleep?": "Wie möchtest du schlafen?",
"How it works": "Wie es funktioniert",
@@ -234,6 +237,7 @@
"Number of parking spots": "Anzahl der Parkplätze",
"OTHER PAYMENT METHODS": "ANDERE BEZAHLMETHODE",
"On your journey": "Auf deiner Reise",
+ "Only pay {amount} {currency}": "Nur bezahlen {amount} {currency}",
"Open": "Offen",
"Open gift(s)": "{amount, plural, one {Geschenk} other {Geschenke}} öffnen",
"Open image gallery": "Bildergalerie öffnen",
@@ -332,6 +336,7 @@
"Show wellness & exercise": "Zeige Wellness und Bewegung",
"Sign up bonus": "Anmelde-Bonus",
"Sign up to Scandic Friends": "Treten Sie Scandic Friends bei",
+ "Signing up...": "Registrierung läuft...",
"Skip to main content": "Direkt zum Inhalt",
"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.",
@@ -454,6 +459,5 @@
"to": "zu",
"uppercase letter": "großbuchstabe",
"{amount} out of {total}": "{amount} von {total}",
- "{amount} {currency}": "{amount} {currency}",
- "{difference}{amount} {currency}": "{difference}{amount} {currency}"
+ "{amount} {currency}": "{amount} {currency}"
}
diff --git a/i18n/dictionaries/en.json b/i18n/dictionaries/en.json
index cb8a071d9..385861316 100644
--- a/i18n/dictionaries/en.json
+++ b/i18n/dictionaries/en.json
@@ -51,8 +51,10 @@
"Booking number": "Booking number",
"Breakfast": "Breakfast",
"Breakfast buffet": "Breakfast buffet",
+ "Breakfast deal can be purchased at the hotel.": "Breakfast deal can be purchased at the hotel.",
"Breakfast excluded": "Breakfast excluded",
"Breakfast included": "Breakfast included",
+ "Breakfast is included.": "Breakfast is included.",
"Breakfast restaurant": "Breakfast restaurant",
"Breakfast selection in next step.": "Breakfast selection in next step.",
"Bus terminal": "Bus terminal",
@@ -164,6 +166,7 @@
"Hotel": "Hotel",
"Hotel facilities": "Hotel facilities",
"Hotel surroundings": "Hotel surroundings",
+ "Hotel(s)": "{amount} {amount, plural, one {hotel} other {hotels}}",
"Hotels": "Hotels",
"How do you want to sleep?": "How do you want to sleep?",
"How it works": "How it works",
@@ -253,6 +256,7 @@
"Number of parking spots": "Number of parking spots",
"OTHER PAYMENT METHODS": "OTHER PAYMENT METHODS",
"On your journey": "On your journey",
+ "Only pay {amount} {currency}": "Only pay {amount} {currency}",
"Open": "Open",
"Open gift(s)": "Open {amount, plural, one {gift} other {gifts}}",
"Open image gallery": "Open image gallery",
@@ -362,6 +366,7 @@
"Show wellness & exercise": "Show wellness & exercise",
"Sign up bonus": "Sign up bonus",
"Sign up to Scandic Friends": "Sign up to Scandic Friends",
+ "Signing up...": "Signing up...",
"Skip to main content": "Skip to main content",
"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.",
@@ -425,7 +430,6 @@
"Which room class suits you the best?": "Which room class suits you the best?",
"Year": "Year",
"Yes": "Yes",
- "Yes, I accept the Terms and conditions for Scandic Friends and understand that Scandic will process my personal data in accordance with": "Yes, I accept the Terms and conditions for Scandic Friends and understand that Scandic will process my personal data in accordance with",
"Yes, discard changes": "Yes, discard changes",
"Yes, remove my card": "Yes, remove my card",
"You can always change your mind later and add breakfast at the hotel.": "You can always change your mind later and add breakfast at the hotel.",
@@ -488,12 +492,12 @@
"points": "Points",
"room type": "room type",
"room types": "room types",
+ "signup.terms": "By signing up you accept the Scandic Friends Terms and Conditions . Your membership is valid until further notice, and you can terminate your membership at any time by sending an email to Scandic’s customer service",
"special character": "special character",
"spendable points expiring by": "{points} spendable points expiring by {date}",
"to": "to",
"uppercase letter": "uppercase letter",
"{amount} out of {total}": "{amount} out of {total}",
"{amount} {currency}": "{amount} {currency}",
- "{card} ending with {cardno}": "{card} ending with {cardno}",
- "{difference}{amount} {currency}": "{difference}{amount} {currency}"
+ "{card} ending with {cardno}": "{card} ending with {cardno}"
}
diff --git a/i18n/dictionaries/fi.json b/i18n/dictionaries/fi.json
index 48931f7f2..09fb8a403 100644
--- a/i18n/dictionaries/fi.json
+++ b/i18n/dictionaries/fi.json
@@ -47,8 +47,10 @@
"Booking number": "Varausnumero",
"Breakfast": "Aamiainen",
"Breakfast buffet": "Aamiaisbuffet",
+ "Breakfast deal can be purchased at the hotel.": "Aamiaisdeali voidaan ostaa hotellissa.",
"Breakfast excluded": "Aamiainen ei sisälly",
"Breakfast included": "Aamiainen sisältyy",
+ "Breakfast is included.": "Aamiainen sisältyy.",
"Breakfast restaurant": "Breakfast restaurant",
"Breakfast selection in next step.": "Aamiaisvalinta seuraavassa vaiheessa.",
"Bus terminal": "Bussiasema",
@@ -152,6 +154,7 @@
"Hotel": "Hotelli",
"Hotel facilities": "Hotellin palvelut",
"Hotel surroundings": "Hotellin ympäristö",
+ "Hotel(s)": "{amount} {amount, plural, one {hotelli} other {hotellit}}",
"Hotels": "Hotellit",
"How do you want to sleep?": "Kuinka haluat nukkua?",
"How it works": "Kuinka se toimii",
@@ -236,6 +239,7 @@
"Number of parking spots": "Pysäköintipaikkojen määrä",
"OTHER PAYMENT METHODS": "MUISE KORT",
"On your journey": "Matkallasi",
+ "Only pay {amount} {currency}": "Vain maksaa {amount} {currency}",
"Open": "Avata",
"Open gift(s)": "{amount, plural, one {Avoin lahja} other {Avoimet lahjat}}",
"Open image gallery": "Avaa kuvagalleria",
@@ -334,6 +338,7 @@
"Show wellness & exercise": "Näytä hyvinvointi ja liikunta",
"Sign up bonus": "Liittymisbonus",
"Sign up to Scandic Friends": "Liity Scandic Friends -jäseneksi",
+ "Signing up...": "Rekisteröidytään...",
"Skip to main content": "Siirry pääsisältöön",
"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.",
@@ -454,6 +459,5 @@
"to": "to",
"uppercase letter": "iso kirjain",
"{amount} out of {total}": "{amount}/{total}",
- "{amount} {currency}": "{amount} {currency}",
- "{difference}{amount} {currency}": "{difference}{amount} {currency}"
+ "{amount} {currency}": "{amount} {currency}"
}
diff --git a/i18n/dictionaries/no.json b/i18n/dictionaries/no.json
index 313d0799d..dcbcdddf4 100644
--- a/i18n/dictionaries/no.json
+++ b/i18n/dictionaries/no.json
@@ -47,8 +47,10 @@
"Booking number": "Bestillingsnummer",
"Breakfast": "Frokost",
"Breakfast buffet": "Breakfast buffet",
+ "Breakfast deal can be purchased at the hotel.": "Frokostdeal kan kjøpes på hotellet.",
"Breakfast excluded": "Frokost ekskludert",
"Breakfast included": "Frokost inkludert",
+ "Breakfast is included.": "Frokost er inkludert.",
"Breakfast restaurant": "Breakfast restaurant",
"Breakfast selection in next step.": "Frokostvalg i neste steg.",
"Bus terminal": "Bussterminal",
@@ -151,6 +153,7 @@
"Hotel": "Hotel",
"Hotel facilities": "Hotelfaciliteter",
"Hotel surroundings": "Hotellomgivelser",
+ "Hotel(s)": "{amount} {amount, plural, one {hotell} other {hoteller}}",
"Hotels": "Hoteller",
"How do you want to sleep?": "Hvordan vil du sove?",
"How it works": "Hvordan det fungerer",
@@ -234,6 +237,7 @@
"Number of parking spots": "Antall parkeringsplasser",
"OTHER PAYMENT METHODS": "ANDRE BETALINGSMETODER",
"On your journey": "På reisen din",
+ "Only pay {amount} {currency}": "Bare betal {amount} {currency}",
"Open": "Åpen",
"Open gift(s)": "{amount, plural, one {Åpen gave} other {Åpnen gaver}}",
"Open image gallery": "Åpne bildegalleri",
@@ -331,6 +335,7 @@
"Show wellness & exercise": "Vis velvære og trening",
"Sign up bonus": "Velkomstbonus",
"Sign up to Scandic Friends": "Bli med i Scandic Friends",
+ "Signing up...": "Registrerer...",
"Skip to main content": "Gå videre til hovedsiden",
"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.",
@@ -452,6 +457,5 @@
"to": "til",
"uppercase letter": "stor bokstav",
"{amount} out of {total}": "{amount} av {total}",
- "{amount} {currency}": "{amount} {currency}",
- "{difference}{amount} {currency}": "{difference}{amount} {currency}"
+ "{amount} {currency}": "{amount} {currency}"
}
diff --git a/i18n/dictionaries/sv.json b/i18n/dictionaries/sv.json
index 878bce352..404896e15 100644
--- a/i18n/dictionaries/sv.json
+++ b/i18n/dictionaries/sv.json
@@ -47,8 +47,10 @@
"Booking number": "Bokningsnummer",
"Breakfast": "Frukost",
"Breakfast buffet": "Frukostbuffé",
+ "Breakfast deal can be purchased at the hotel.": "Frukostdeal kan köpas på hotellet.",
"Breakfast excluded": "Frukost ingår ej",
"Breakfast included": "Frukost ingår",
+ "Breakfast is included.": "Frukost ingår.",
"Breakfast restaurant": "Breakfast restaurant",
"Breakfast selection in next step.": "Frukostval i nästa steg.",
"Bus terminal": "Bussterminal",
@@ -151,6 +153,7 @@
"Hotel": "Hotell",
"Hotel facilities": "Hotellfaciliteter",
"Hotel surroundings": "Hotellomgivning",
+ "Hotel(s)": "{amount} hotell",
"Hotels": "Hotell",
"How do you want to sleep?": "Hur vill du sova?",
"How it works": "Hur det fungerar",
@@ -234,6 +237,7 @@
"Number of parking spots": "Antal parkeringsplatser",
"OTHER PAYMENT METHODS": "ANDRE BETALINGSMETODER",
"On your journey": "På din resa",
+ "Only pay {amount} {currency}": "Betala endast {amount} {currency}",
"Open": "Öppna",
"Open gift(s)": "Öppna {amount, plural, one {gåva} other {gåvor}}",
"Open image gallery": "Öppna bildgalleri",
@@ -331,6 +335,7 @@
"Show wellness & exercise": "Visa välbefinnande och träning",
"Sign up bonus": "Välkomstbonus",
"Sign up to Scandic Friends": "Bli medlem i Scandic Friends",
+ "Signing up...": "Registrerar...",
"Skip to main content": "Fortsätt till huvudinnehåll",
"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.",
@@ -455,6 +460,5 @@
"types": "typer",
"uppercase letter": "stor bokstav",
"{amount} out of {total}": "{amount} av {total}",
- "{amount} {currency}": "{amount} {currency}",
- "{difference}{amount} {currency}": "{difference}{amount} {currency}"
+ "{amount} {currency}": "{amount} {currency}"
}
diff --git a/next-env.d.ts b/next-env.d.ts
index 4f11a03dc..40c3d6809 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -2,4 +2,4 @@
///
// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
+// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
diff --git a/package-lock.json b/package-lock.json
index a2d63c0f7..e611379b4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -41,7 +41,7 @@
"graphql-tag": "^2.12.6",
"immer": "10.1.1",
"libphonenumber-js": "^1.10.60",
- "next": "^14.2.7",
+ "next": "^14.2.18",
"next-auth": "^5.0.0-beta.19",
"react": "^18",
"react-day-picker": "^9.0.8",
@@ -3425,9 +3425,9 @@
}
},
"node_modules/@next/env": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.7.tgz",
- "integrity": "sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.18.tgz",
+ "integrity": "sha512-2vWLOUwIPgoqMJKG6dt35fVXVhgM09tw4tK3/Q34GFXDrfiHlG7iS33VA4ggnjWxjiz9KV5xzfsQzJX6vGAekA==",
"license": "MIT"
},
"node_modules/@next/eslint-plugin-next": {
@@ -3440,9 +3440,9 @@
}
},
"node_modules/@next/swc-darwin-arm64": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.7.tgz",
- "integrity": "sha512-UhZGcOyI9LE/tZL3h9rs/2wMZaaJKwnpAyegUVDGZqwsla6hMfeSj9ssBWQS9yA4UXun3pPhrFLVnw5KXZs3vw==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.18.tgz",
+ "integrity": "sha512-tOBlDHCjGdyLf0ube/rDUs6VtwNOajaWV+5FV/ajPgrvHeisllEdymY/oDgv2cx561+gJksfMUtqf8crug7sbA==",
"cpu": [
"arm64"
],
@@ -3456,9 +3456,9 @@
}
},
"node_modules/@next/swc-darwin-x64": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.7.tgz",
- "integrity": "sha512-ys2cUgZYRc+CbyDeLAaAdZgS7N1Kpyy+wo0b/gAj+SeOeaj0Lw/q+G1hp+DuDiDAVyxLBCJXEY/AkhDmtihUTA==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.18.tgz",
+ "integrity": "sha512-uJCEjutt5VeJ30jjrHV1VIHCsbMYnEqytQgvREx+DjURd/fmKy15NaVK4aR/u98S1LGTnjq35lRTnRyygglxoA==",
"cpu": [
"x64"
],
@@ -3472,9 +3472,9 @@
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.7.tgz",
- "integrity": "sha512-2xoWtE13sUJ3qrC1lwE/HjbDPm+kBQYFkkiVECJWctRASAHQ+NwjMzgrfqqMYHfMxFb5Wws3w9PqzZJqKFdWcQ==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.18.tgz",
+ "integrity": "sha512-IL6rU8vnBB+BAm6YSWZewc+qvdL1EaA+VhLQ6tlUc0xp+kkdxQrVqAnh8Zek1ccKHlTDFRyAft0e60gteYmQ4A==",
"cpu": [
"arm64"
],
@@ -3488,9 +3488,9 @@
}
},
"node_modules/@next/swc-linux-arm64-musl": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.7.tgz",
- "integrity": "sha512-+zJ1gJdl35BSAGpkCbfyiY6iRTaPrt3KTl4SF/B1NyELkqqnrNX6cp4IjjjxKpd64/7enI0kf6b9O1Uf3cL0pw==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.18.tgz",
+ "integrity": "sha512-RCaENbIZqKKqTlL8KNd+AZV/yAdCsovblOpYFp0OJ7ZxgLNbV5w23CUU1G5On+0fgafrsGcW+GdMKdFjaRwyYA==",
"cpu": [
"arm64"
],
@@ -3504,9 +3504,9 @@
}
},
"node_modules/@next/swc-linux-x64-gnu": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.7.tgz",
- "integrity": "sha512-m6EBqrskeMUzykBrv0fDX/28lWIBGhMzOYaStp0ihkjzIYJiKUOzVYD1gULHc8XDf5EMSqoH/0/TRAgXqpQwmw==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.18.tgz",
+ "integrity": "sha512-3kmv8DlyhPRCEBM1Vavn8NjyXtMeQ49ID0Olr/Sut7pgzaQTo4h01S7Z8YNE0VtbowyuAL26ibcz0ka6xCTH5g==",
"cpu": [
"x64"
],
@@ -3520,9 +3520,9 @@
}
},
"node_modules/@next/swc-linux-x64-musl": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.7.tgz",
- "integrity": "sha512-gUu0viOMvMlzFRz1r1eQ7Ql4OE+hPOmA7smfZAhn8vC4+0swMZaZxa9CSIozTYavi+bJNDZ3tgiSdMjmMzRJlQ==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.18.tgz",
+ "integrity": "sha512-mliTfa8seVSpTbVEcKEXGjC18+TDII8ykW4a36au97spm9XMPqQTpdGPNBJ9RySSFw9/hLuaCMByluQIAnkzlw==",
"cpu": [
"x64"
],
@@ -3536,9 +3536,9 @@
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.7.tgz",
- "integrity": "sha512-PGbONHIVIuzWlYmLvuFKcj+8jXnLbx4WrlESYlVnEzDsa3+Q2hI1YHoXaSmbq0k4ZwZ7J6sWNV4UZfx1OeOlbQ==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.18.tgz",
+ "integrity": "sha512-J5g0UFPbAjKYmqS3Cy7l2fetFmWMY9Oao32eUsBPYohts26BdrMUyfCJnZFQkX9npYaHNDOWqZ6uV9hSDPw9NA==",
"cpu": [
"arm64"
],
@@ -3552,9 +3552,9 @@
}
},
"node_modules/@next/swc-win32-ia32-msvc": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.7.tgz",
- "integrity": "sha512-BiSY5umlx9ed5RQDoHcdbuKTUkuFORDqzYKPHlLeS+STUWQKWziVOn3Ic41LuTBvqE0TRJPKpio9GSIblNR+0w==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.18.tgz",
+ "integrity": "sha512-Ynxuk4ZgIpdcN7d16ivJdjsDG1+3hTvK24Pp8DiDmIa2+A4CfhJSEHHVndCHok6rnLUzAZD+/UOKESQgTsAZGg==",
"cpu": [
"ia32"
],
@@ -3568,9 +3568,9 @@
}
},
"node_modules/@next/swc-win32-x64-msvc": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.7.tgz",
- "integrity": "sha512-pxsI23gKWRt/SPHFkDEsP+w+Nd7gK37Hpv0ngc5HpWy2e7cKx9zR/+Q2ptAUqICNTecAaGWvmhway7pj/JLEWA==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.18.tgz",
+ "integrity": "sha512-dtRGMhiU9TN5nyhwzce+7c/4CCeykYS+ipY/4mIrGzJ71+7zNo55ZxCB7cAVuNqdwtYniFNR2c9OFQ6UdFIMcg==",
"cpu": [
"x64"
],
@@ -15460,12 +15460,12 @@
}
},
"node_modules/next": {
- "version": "14.2.7",
- "resolved": "https://registry.npmjs.org/next/-/next-14.2.7.tgz",
- "integrity": "sha512-4Qy2aK0LwH4eQiSvQWyKuC7JXE13bIopEQesWE0c/P3uuNRnZCQanI0vsrMLmUQJLAto+A+/8+sve2hd+BQuOQ==",
+ "version": "14.2.18",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.2.18.tgz",
+ "integrity": "sha512-H9qbjDuGivUDEnK6wa+p2XKO+iMzgVgyr9Zp/4Iv29lKa+DYaxJGjOeEA+5VOvJh/M7HLiskehInSa0cWxVXUw==",
"license": "MIT",
"dependencies": {
- "@next/env": "14.2.7",
+ "@next/env": "14.2.18",
"@swc/helpers": "0.5.5",
"busboy": "1.6.0",
"caniuse-lite": "^1.0.30001579",
@@ -15480,15 +15480,15 @@
"node": ">=18.17.0"
},
"optionalDependencies": {
- "@next/swc-darwin-arm64": "14.2.7",
- "@next/swc-darwin-x64": "14.2.7",
- "@next/swc-linux-arm64-gnu": "14.2.7",
- "@next/swc-linux-arm64-musl": "14.2.7",
- "@next/swc-linux-x64-gnu": "14.2.7",
- "@next/swc-linux-x64-musl": "14.2.7",
- "@next/swc-win32-arm64-msvc": "14.2.7",
- "@next/swc-win32-ia32-msvc": "14.2.7",
- "@next/swc-win32-x64-msvc": "14.2.7"
+ "@next/swc-darwin-arm64": "14.2.18",
+ "@next/swc-darwin-x64": "14.2.18",
+ "@next/swc-linux-arm64-gnu": "14.2.18",
+ "@next/swc-linux-arm64-musl": "14.2.18",
+ "@next/swc-linux-x64-gnu": "14.2.18",
+ "@next/swc-linux-x64-musl": "14.2.18",
+ "@next/swc-win32-arm64-msvc": "14.2.18",
+ "@next/swc-win32-ia32-msvc": "14.2.18",
+ "@next/swc-win32-x64-msvc": "14.2.18"
},
"peerDependencies": {
"@opentelemetry/api": "^1.1.0",
diff --git a/package.json b/package.json
index 4afcb9bf1..5871b48b4 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"graphql-tag": "^2.12.6",
"immer": "10.1.1",
"libphonenumber-js": "^1.10.60",
- "next": "^14.2.7",
+ "next": "^14.2.18",
"next-auth": "^5.0.0-beta.19",
"react": "^18",
"react-day-picker": "^9.0.8",
diff --git a/providers/StepsProvider.tsx b/providers/StepsProvider.tsx
index 87594be02..9aaf6166f 100644
--- a/providers/StepsProvider.tsx
+++ b/providers/StepsProvider.tsx
@@ -1,4 +1,5 @@
"use client"
+import { useRouter } from "next/navigation"
import { useRef } from "react"
import { useDetailsStore } from "@/stores/details"
@@ -14,6 +15,7 @@ export default function StepsProvider({
breakfastPackages,
children,
isMember,
+ searchParams,
step,
}: StepsProviderProps) {
const storeRef = useRef()
@@ -21,6 +23,7 @@ export default function StepsProvider({
const updateBreakfast = useDetailsStore(
(state) => state.actions.updateBreakfast
)
+ const router = useRouter()
if (!storeRef.current) {
const noBedChoices = bedTypes.length === 1
@@ -41,7 +44,9 @@ export default function StepsProvider({
step,
isMember,
noBedChoices,
- noBreakfast
+ noBreakfast,
+ searchParams,
+ router.push
)
}
diff --git a/server/routers/hotels/output.ts b/server/routers/hotels/output.ts
index d4f3d89c9..41f9a6b52 100644
--- a/server/routers/hotels/output.ts
+++ b/server/routers/hotels/output.ts
@@ -13,7 +13,6 @@ import { AlertTypeEnum } from "@/types/enums/alert"
import { CurrencyEnum } from "@/types/enums/currency"
import { FacilityEnum } from "@/types/enums/facilities"
import { PackageTypeEnum } from "@/types/enums/packages"
-import { PointOfInterestCategoryNameEnum } from "@/types/hotel"
const ratingsSchema = z
.object({
@@ -199,14 +198,12 @@ const rewardNightSchema = z.object({
}),
})
-const poiCategoryNames = z.nativeEnum(PointOfInterestCategoryNameEnum)
-
export const pointOfInterestSchema = z
.object({
name: z.string(),
distance: z.number(),
category: z.object({
- name: poiCategoryNames,
+ name: z.string(),
group: z.string(),
}),
location: locationSchema,
@@ -515,7 +512,16 @@ export const productTypePriceSchema = z.object({
const productSchema = z.object({
productType: z.object({
- public: productTypePriceSchema,
+ public: productTypePriceSchema.default({
+ rateCode: "",
+ rateType: "",
+ localPrice: {
+ currency: "SEK",
+ pricePerNight: 0,
+ pricePerStay: 0,
+ },
+ requestedPrice: undefined,
+ }),
member: productTypePriceSchema.optional(),
}),
})
diff --git a/server/routers/hotels/query.ts b/server/routers/hotels/query.ts
index 7f2ef84c0..34a1b3722 100644
--- a/server/routers/hotels/query.ts
+++ b/server/routers/hotels/query.ts
@@ -731,7 +731,7 @@ export const hotelQueryRouter = router({
const rateTypes = selectedRoom.products.find(
(rate) =>
- rate.productType.public.rateCode === rateCode ||
+ rate.productType.public?.rateCode === rateCode ||
rate.productType.member?.rateCode === rateCode
)
diff --git a/server/routers/hotels/utils.ts b/server/routers/hotels/utils.ts
index 6d384b3cf..c3e785a59 100644
--- a/server/routers/hotels/utils.ts
+++ b/server/routers/hotels/utils.ts
@@ -12,39 +12,34 @@ import {
type Countries,
} from "./output"
-import type { RequestOptionsWithOutBody } from "@/types/fetch"
-import {
- PointOfInterestCategoryNameEnum,
- PointOfInterestGroupEnum,
-} from "@/types/hotel"
-import { HotelLocation } from "@/types/trpc/routers/hotel/locations"
import type { Lang } from "@/constants/languages"
import type { Endpoint } from "@/lib/api/endpoints"
+import type { RequestOptionsWithOutBody } from "@/types/fetch"
+import { PointOfInterestGroupEnum } from "@/types/hotel"
+import { HotelLocation } from "@/types/trpc/routers/hotel/locations"
-export function getPoiGroupByCategoryName(
- category: PointOfInterestCategoryNameEnum
-) {
+export function getPoiGroupByCategoryName(category: string) {
switch (category) {
- case PointOfInterestCategoryNameEnum.AIRPORT:
- case PointOfInterestCategoryNameEnum.BUS_TERMINAL:
- case PointOfInterestCategoryNameEnum.TRANSPORTATIONS:
+ case "Airport":
+ case "Bus terminal":
+ case "Transportations":
return PointOfInterestGroupEnum.PUBLIC_TRANSPORT
- case PointOfInterestCategoryNameEnum.AMUSEMENT_PARK:
- case PointOfInterestCategoryNameEnum.MUSEUM:
- case PointOfInterestCategoryNameEnum.SPORTS:
- case PointOfInterestCategoryNameEnum.THEATRE:
- case PointOfInterestCategoryNameEnum.TOURIST:
- case PointOfInterestCategoryNameEnum.ZOO:
+ case "Amusement park":
+ case "Museum":
+ case "Sports":
+ case "Theatre":
+ case "Tourist":
+ case "Zoo":
return PointOfInterestGroupEnum.ATTRACTIONS
- case PointOfInterestCategoryNameEnum.NEARBY_COMPANIES:
- case PointOfInterestCategoryNameEnum.FAIR:
+ case "Nearby companies":
+ case "Fair":
return PointOfInterestGroupEnum.BUSINESS
- case PointOfInterestCategoryNameEnum.PARKING_GARAGE:
+ case "Parking / Garage":
return PointOfInterestGroupEnum.PARKING
- case PointOfInterestCategoryNameEnum.SHOPPING:
- case PointOfInterestCategoryNameEnum.RESTAURANT:
+ case "Shopping":
+ case "Restaurant":
return PointOfInterestGroupEnum.SHOPPING_DINING
- case PointOfInterestCategoryNameEnum.HOSPITAL:
+ case "Hospital":
default:
return PointOfInterestGroupEnum.LOCATION
}
diff --git a/server/routers/user/input.ts b/server/routers/user/input.ts
index d84875ea3..1e9fee267 100644
--- a/server/routers/user/input.ts
+++ b/server/routers/user/input.ts
@@ -1,5 +1,9 @@
import { z } from "zod"
+import { Lang } from "@/constants/languages"
+
+import { signUpSchema } from "@/components/Forms/Signup/schema"
+
// Query
export const staysInput = z
.object({
@@ -35,3 +39,19 @@ export const saveCreditCardInput = z.object({
transactionId: z.string(),
merchantId: z.string().optional(),
})
+
+export const signupInput = signUpSchema
+ .extend({
+ language: z.nativeEnum(Lang),
+ })
+ .omit({ termsAccepted: true })
+ .transform((data) => ({
+ ...data,
+ phoneNumber: data.phoneNumber.replace(/\s+/g, ""),
+ address: {
+ ...data.address,
+ city: "",
+ country: "",
+ streetAddress: "",
+ },
+ }))
diff --git a/server/routers/user/mutation.ts b/server/routers/user/mutation.ts
index b03e6a68e..689c43a26 100644
--- a/server/routers/user/mutation.ts
+++ b/server/routers/user/mutation.ts
@@ -1,17 +1,20 @@
import { metrics } from "@opentelemetry/api"
+import { signupVerify } from "@/constants/routes/signup"
import { env } from "@/env/server"
import * as api from "@/lib/api"
+import { serverErrorByStatus } from "@/server/errors/trpc"
import {
initiateSaveCardSchema,
subscriberIdSchema,
} from "@/server/routers/user/output"
-import { protectedProcedure, router } from "@/server/trpc"
+import { protectedProcedure, router, serviceProcedure } from "@/server/trpc"
import {
addCreditCardInput,
deleteCreditCardInput,
saveCreditCardInput,
+ signupInput,
} from "./input"
const meter = metrics.getMeter("trpc.user")
@@ -24,6 +27,9 @@ const generatePreferencesLinkSuccessCounter = meter.createCounter(
const generatePreferencesLinkFailCounter = meter.createCounter(
"trpc.user.generatePreferencesLink-fail"
)
+const signupCounter = meter.createCounter("trpc.user.signup")
+const signupSuccessCounter = meter.createCounter("trpc.user.signup-success")
+const signupFailCounter = meter.createCounter("trpc.user.signup-fail")
export const userMutationRouter = router({
creditCard: router({
@@ -208,4 +214,46 @@ export const userMutationRouter = router({
generatePreferencesLinkSuccessCounter.add(1)
return preferencesLink.toString()
}),
+ signup: serviceProcedure.input(signupInput).mutation(async function ({
+ ctx,
+ input,
+ }) {
+ signupCounter.add(1)
+
+ const apiResponse = await api.post(api.endpoints.v1.Profile.profile, {
+ body: input,
+ headers: {
+ Authorization: `Bearer ${ctx.serviceToken}`,
+ },
+ })
+
+ if (!apiResponse.ok) {
+ const text = await apiResponse.text()
+ signupFailCounter.add(1, {
+ error_type: "http_error",
+ error: JSON.stringify({
+ status: apiResponse.status,
+ statusText: apiResponse.statusText,
+ error: text,
+ }),
+ })
+ console.error(
+ "api.user.signup api error",
+ JSON.stringify({
+ error: {
+ status: apiResponse.status,
+ statusText: apiResponse.statusText,
+ error: text,
+ },
+ })
+ )
+ throw serverErrorByStatus(apiResponse.status, text)
+ }
+ signupSuccessCounter.add(1)
+ console.info("api.user.signup success")
+ return {
+ success: true,
+ redirectUrl: signupVerify[input.language],
+ }
+ }),
})
diff --git a/server/routers/user/output.ts b/server/routers/user/output.ts
index a9e7a0416..616419047 100644
--- a/server/routers/user/output.ts
+++ b/server/routers/user/output.ts
@@ -1,6 +1,8 @@
import { z } from "zod"
import { countriesMap } from "@/components/TempDesignSystem/Form/Country/countries"
+import { passwordValidator } from "@/utils/passwordValidator"
+import { phoneValidator } from "@/utils/phoneValidator"
import { getMembership } from "@/utils/user"
export const membershipSchema = z.object({
diff --git a/server/trpc.ts b/server/trpc.ts
index 688ea01cf..3fc3a10a6 100644
--- a/server/trpc.ts
+++ b/server/trpc.ts
@@ -121,7 +121,7 @@ export const safeProtectedProcedure = t.procedure.use(async function (opts) {
})
})
-export const serviceProcedure = t.procedure.use(async (opts) => {
+export const serviceProcedure = t.procedure.use(async function (opts) {
const { access_token } = await getServiceToken()
if (!access_token) {
throw internalServerError(`[serviceProcedure] No service token`)
diff --git a/stores/details.ts b/stores/details.ts
index 5d23248e5..a382ad7d7 100644
--- a/stores/details.ts
+++ b/stores/details.ts
@@ -94,7 +94,6 @@ export function createDetailsStore(
state.data.membershipNo = data.membershipNo
}
state.data.phoneNumber = data.phoneNumber
- state.data.termsAccepted = data.termsAccepted
state.data.zipCode = data.zipCode
})
)
diff --git a/stores/steps.ts b/stores/steps.ts
index f1e456af2..cf14f6768 100644
--- a/stores/steps.ts
+++ b/stores/steps.ts
@@ -1,6 +1,7 @@
"use client"
import merge from "deepmerge"
import { produce } from "immer"
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime"
import { useContext } from "react"
import { create, useStore } from "zustand"
@@ -18,17 +19,13 @@ import { StepEnum } from "@/types/enums/step"
import type { DetailsState } from "@/types/stores/details"
import type { StepState } from "@/types/stores/steps"
-function push(data: Record, url: string) {
- if (typeof window !== "undefined") {
- window.history.pushState(data, "", url + window.location.search)
- }
-}
-
export function createStepsStore(
currentStep: StepEnum,
isMember: boolean,
noBedChoices: boolean,
- noBreakfast: boolean
+ noBreakfast: boolean,
+ searchParams: string,
+ push: AppRouterInstance["push"]
) {
const isBrowser = typeof window !== "undefined"
const steps = [
@@ -51,14 +48,14 @@ export function createStepsStore(
steps.splice(1, 1)
if (currentStep === StepEnum.breakfast) {
currentStep = steps[1]
- push({ step: currentStep }, currentStep)
+ push(`${currentStep}?${searchParams}`)
}
}
if (noBedChoices) {
if (currentStep === StepEnum.selectBed) {
currentStep = steps[1]
- push({ step: currentStep }, currentStep)
+ push(`${currentStep}?${searchParams}`)
}
}
@@ -94,7 +91,7 @@ export function createStepsStore(
if (!validPaths.includes(currentStep) && isBrowser) {
// We will always have at least one valid path
currentStep = validPaths.pop()!
- push({ step: currentStep }, currentStep)
+ push(`${currentStep}?${searchParams}`)
}
}
diff --git a/types/components/form/bookingwidget.ts b/types/components/form/bookingwidget.ts
index 887c4eae2..bded82de3 100644
--- a/types/components/form/bookingwidget.ts
+++ b/types/components/form/bookingwidget.ts
@@ -4,7 +4,7 @@ import type { Location, Locations } from "@/types/trpc/routers/hotel/locations"
export interface BookingWidgetFormProps {
locations: Locations
type?: BookingWidgetType
- setIsOpen: (isOpen: boolean) => void
+ onClose: () => void
}
export interface BookingWidgetFormContentProps {
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
}
diff --git a/types/components/hotelReservation/selectHotel/hotelFilters.ts b/types/components/hotelReservation/selectHotel/hotelFilters.ts
index 200b960e5..fbfd926cf 100644
--- a/types/components/hotelReservation/selectHotel/hotelFilters.ts
+++ b/types/components/hotelReservation/selectHotel/hotelFilters.ts
@@ -16,3 +16,7 @@ export type Filter = {
sortOrder: number
filter?: string
}
+
+export type HotelFilterModalProps = {
+ filters: CategorizedFilters
+}
diff --git a/types/components/hotelReservation/selectHotel/map.ts b/types/components/hotelReservation/selectHotel/map.ts
index 810dba573..490f8d06e 100644
--- a/types/components/hotelReservation/selectHotel/map.ts
+++ b/types/components/hotelReservation/selectHotel/map.ts
@@ -6,7 +6,7 @@ import {
} from "@/server/routers/hotels/schemas/image"
import { HotelData } from "./hotelCardListingProps"
-import { Filter } from "./hotelFilters"
+import { CategorizedFilters, Filter } from "./hotelFilters"
import type { Coordinates } from "@/types/components/maps/coordinates"
@@ -21,6 +21,7 @@ export interface SelectHotelMapProps {
hotelPins: HotelPin[]
mapId: string
hotels: HotelData[]
+ filterList: CategorizedFilters
}
type ImageSizes = z.infer
diff --git a/types/components/maps/poiMarker.ts b/types/components/maps/poiMarker.ts
index 34fad0e6f..abab6fc9d 100644
--- a/types/components/maps/poiMarker.ts
+++ b/types/components/maps/poiMarker.ts
@@ -2,14 +2,11 @@ import { poiVariants } from "@/components/Maps/Markers/Poi/variants"
import type { VariantProps } from "class-variance-authority"
-import {
- PointOfInterestCategoryNameEnum,
- PointOfInterestGroupEnum,
-} from "@/types/hotel"
+import type { PointOfInterestGroupEnum } from "@/types/hotel"
export interface PoiMarkerProps extends VariantProps {
group: PointOfInterestGroupEnum
- categoryName?: PointOfInterestCategoryNameEnum
+ categoryName?: string
size?: number
className?: string
}
diff --git a/types/components/tracking.ts b/types/components/tracking.ts
index aa42ae5fe..fa6e82a95 100644
--- a/types/components/tracking.ts
+++ b/types/components/tracking.ts
@@ -80,3 +80,4 @@ export type TrackingPosition =
| "hamburger menu"
| "join scandic friends sidebar"
| "sign up verification"
+ | "enter details"
diff --git a/types/hotel.ts b/types/hotel.ts
index 5052caded..aadaab740 100644
--- a/types/hotel.ts
+++ b/types/hotel.ts
@@ -26,26 +26,6 @@ export type GalleryImage = z.infer
export type PointOfInterest = z.output
-export enum PointOfInterestCategoryNameEnum {
- AIRPORT = "Airport",
- AMUSEMENT_PARK = "Amusement park",
- BUS_TERMINAL = "Bus terminal",
- FAIR = "Fair",
- HOSPITAL = "Hospital",
- HOTEL = "Hotel",
- MARKETING_CITY = "Marketing city",
- MUSEUM = "Museum",
- NEARBY_COMPANIES = "Nearby companies",
- PARKING_GARAGE = "Parking / Garage",
- RESTAURANT = "Restaurant",
- SHOPPING = "Shopping",
- SPORTS = "Sports",
- THEATRE = "Theatre",
- TOURIST = "Tourist",
- TRANSPORTATIONS = "Transportations",
- ZOO = "Zoo",
-}
-
export enum PointOfInterestGroupEnum {
PUBLIC_TRANSPORT = "Public transport",
ATTRACTIONS = "Attractions",
diff --git a/types/providers/steps.ts b/types/providers/steps.ts
index 8c24fdc8f..9ba0361eb 100644
--- a/types/providers/steps.ts
+++ b/types/providers/steps.ts
@@ -6,5 +6,6 @@ export interface StepsProviderProps extends React.PropsWithChildren {
bedTypes: BedTypeSelection[]
breakfastPackages: BreakfastPackage[] | null
isMember: boolean
+ searchParams: string
step: StepEnum
}