diff --git a/components/Blocks/Table/index.tsx b/components/Blocks/Table/index.tsx index 0f95abfca..ae918400d 100644 --- a/components/Blocks/Table/index.tsx +++ b/components/Blocks/Table/index.tsx @@ -100,7 +100,7 @@ export default function TableBlock({ data }: TableBlockProps) { ) : null} diff --git a/components/ContentType/HotelPage/SidePeeks/MeetingsAndConferences/index.tsx b/components/ContentType/HotelPage/SidePeeks/MeetingsAndConferences/index.tsx index 733c1953b..c2a66cd79 100644 --- a/components/ContentType/HotelPage/SidePeeks/MeetingsAndConferences/index.tsx +++ b/components/ContentType/HotelPage/SidePeeks/MeetingsAndConferences/index.tsx @@ -21,7 +21,7 @@ export default async function MeetingsAndConferencesSidePeek({ meetingFacilities, descriptions, hotelId, - link, + meetingPageUrl, }: MeetingsAndConferencesSidePeekProps) { const lang = getLang() const [intl, meetingRooms] = await Promise.all([ @@ -83,10 +83,15 @@ export default async function MeetingsAndConferencesSidePeek({ ) : null} - {link && ( + {meetingPageUrl && (
diff --git a/components/ContentType/HotelPage/index.tsx b/components/ContentType/HotelPage/index.tsx index b3b4e1e58..e4a37df6f 100644 --- a/components/ContentType/HotelPage/index.tsx +++ b/components/ContentType/HotelPage/index.tsx @@ -88,6 +88,7 @@ export default async function HotelPage({ hotelId }: HotelPageProps) { hotelRoomElevatorPitchText, gallery, hotelParking, + meetingRooms, displayWebPage, hotelSpecialNeeds, } = hotelData.additionalData @@ -259,6 +260,9 @@ export default async function HotelPage({ hotelId }: HotelPageProps) { meetingFacilities={conferencesAndMeetings} descriptions={hotelContent.texts.meetingDescription} hotelId={hotelId} + meetingPageUrl={ + displayWebPage.meetingRoom ? meetingRooms.nameInUrl : undefined + } /> {roomCategories.map((room) => ( diff --git a/components/ContentType/HotelSubpage/AdditionalContent/Meetings/index.tsx b/components/ContentType/HotelSubpage/AdditionalContent/Meetings/index.tsx new file mode 100644 index 000000000..d035080aa --- /dev/null +++ b/components/ContentType/HotelSubpage/AdditionalContent/Meetings/index.tsx @@ -0,0 +1,56 @@ +"use client" +import { useRef, useState } from "react" +import { useIntl } from "react-intl" + +import Grids from "@/components/TempDesignSystem/Grids" +import MeetingRoomCard from "@/components/TempDesignSystem/MeetingRoomCard" +import ShowMoreButton from "@/components/TempDesignSystem/ShowMoreButton" + +import styles from "./meetingsAdditionalContent.module.css" + +import type { MeetingRooms } from "@/types/components/hotelPage/meetingRooms" + +interface MeetingsAdditionalContentProps { + rooms: MeetingRooms +} + +export default function MeetingsAdditionalContent({ + rooms, +}: MeetingsAdditionalContentProps) { + const intl = useIntl() + const showToggleButton = rooms.length > 3 + const [allRoomsVisible, setAllRoomsVisible] = useState(!showToggleButton) + + const scrollRef = useRef(null) + + function handleShowMore() { + if (scrollRef.current && allRoomsVisible) { + scrollRef.current.scrollIntoView({ behavior: "smooth" }) + } + setAllRoomsVisible((state) => !state) + } + + return ( +
+ + {rooms.map((room) => ( + + ))} + + {showToggleButton ? ( + + ) : null} +
+ ) +} diff --git a/components/ContentType/HotelSubpage/AdditionalContent/Meetings/meetingsAdditionalContent.module.css b/components/ContentType/HotelSubpage/AdditionalContent/Meetings/meetingsAdditionalContent.module.css new file mode 100644 index 000000000..27ffde06f --- /dev/null +++ b/components/ContentType/HotelSubpage/AdditionalContent/Meetings/meetingsAdditionalContent.module.css @@ -0,0 +1,9 @@ +.grid:not(.allVisible) > :nth-child(n + 4) { + display: none; +} + +.section { + display: grid; + gap: var(--Spacing-x4); + z-index: 0; +} diff --git a/components/ContentType/HotelSubpage/AdditionalContent/index.tsx b/components/ContentType/HotelSubpage/AdditionalContent/index.tsx index 971087815..677998c12 100644 --- a/components/ContentType/HotelSubpage/AdditionalContent/index.tsx +++ b/components/ContentType/HotelSubpage/AdditionalContent/index.tsx @@ -1,5 +1,3 @@ -import { getLang } from "@/i18n/serverContext" - import AccessibilityAdditionalContent from "./Accessibility" import ParkingAdditionalContent from "./Parking" diff --git a/components/ContentType/HotelSubpage/Sidebar/MeetingsSidebar.tsx b/components/ContentType/HotelSubpage/Sidebar/MeetingsSidebar.tsx new file mode 100644 index 000000000..737dbb550 --- /dev/null +++ b/components/ContentType/HotelSubpage/Sidebar/MeetingsSidebar.tsx @@ -0,0 +1,47 @@ +import Link from "@/components/TempDesignSystem/Link" +import Body from "@/components/TempDesignSystem/Text/Body" +import Title from "@/components/TempDesignSystem/Text/Title" +import { getIntl } from "@/i18n" + +import styles from "./sidebar.module.css" + +import { Country } from "@/types/enums/country" + +interface MeetingsSidebarProps { + phoneNumber: string + email?: string + country: string +} + +export default async function MeetingsSidebar({ + phoneNumber, + email, + country, +}: MeetingsSidebarProps) { + const intl = await getIntl() + + return ( + + ) +} diff --git a/components/ContentType/HotelSubpage/Sidebar/index.tsx b/components/ContentType/HotelSubpage/Sidebar/index.tsx index 00a0de03b..a235e4b03 100644 --- a/components/ContentType/HotelSubpage/Sidebar/index.tsx +++ b/components/ContentType/HotelSubpage/Sidebar/index.tsx @@ -1,7 +1,9 @@ import RestaurantSidebar from "./RestaurantSidebar/RestaurantSidebar" +import MeetingsSidebar from "./MeetingsSidebar" import ParkingSidebar from "./ParkingSidebar" import WellnessSidebar from "./WellnessSidebar" +import type { MeetingRooms } from "@/types/components/hotelPage/meetingRooms" import type { AdditionalData, Hotel, Restaurant } from "@/types/hotel" interface HotelSubpageSidebarProps { @@ -9,6 +11,7 @@ interface HotelSubpageSidebarProps { hotel: Hotel additionalData: AdditionalData restaurants: Restaurant[] + meetingRooms: MeetingRooms | undefined } export default function HotelSubpageSidebar({ @@ -16,6 +19,7 @@ export default function HotelSubpageSidebar({ hotel, additionalData, restaurants, + meetingRooms, }: HotelSubpageSidebarProps) { const restaurantSubPage = restaurants.find( (restaurant) => restaurant.nameInUrl === subpage @@ -32,6 +36,17 @@ export default function HotelSubpageSidebar({ return case additionalData.hotelSpecialNeeds.nameInUrl: return null + case additionalData.meetingRooms.nameInUrl: + if (!meetingRooms) { + return null + } + return ( + + ) default: return null } diff --git a/components/ContentType/HotelSubpage/Sidebar/sidebar.module.css b/components/ContentType/HotelSubpage/Sidebar/sidebar.module.css index 93630cf7e..e596ce352 100644 --- a/components/ContentType/HotelSubpage/Sidebar/sidebar.module.css +++ b/components/ContentType/HotelSubpage/Sidebar/sidebar.module.css @@ -1,4 +1,13 @@ .sidebar { display: grid; gap: var(--Spacing-x2); + grid-column: 1; +} + +@media (min-width: 1367px) { + .sidebar { + grid-column: 2; + grid-row: 1; + align-items: start; + } } diff --git a/components/ContentType/HotelSubpage/hotelSubpage.module.css b/components/ContentType/HotelSubpage/hotelSubpage.module.css index 3d2348269..1476a78a2 100644 --- a/components/ContentType/HotelSubpage/hotelSubpage.module.css +++ b/components/ContentType/HotelSubpage/hotelSubpage.module.css @@ -29,6 +29,7 @@ display: grid; width: 100%; gap: var(--Spacing-x4); + grid-column: 1; } .intro { @@ -36,6 +37,10 @@ gap: var(--Spacing-x2); } +.meetingsContent { + grid-column: 1; +} + @media (min-width: 1367px) { .contentContainer { grid-template-columns: var(--max-width-text-block) 1fr; @@ -47,4 +52,8 @@ max-width: none; margin: 0; } + + .meetingsContent { + grid-column: 1 / span 2; + } } diff --git a/components/ContentType/HotelSubpage/index.tsx b/components/ContentType/HotelSubpage/index.tsx index 76154ef87..82f0dad18 100644 --- a/components/ContentType/HotelSubpage/index.tsx +++ b/components/ContentType/HotelSubpage/index.tsx @@ -1,7 +1,11 @@ import { notFound } from "next/navigation" import { Suspense } from "react" -import { getHotel, getHotelPage } from "@/lib/trpc/memoizedRequests" +import { + getHotel, + getHotelPage, + getMeetingRooms, +} from "@/lib/trpc/memoizedRequests" import Breadcrumbs from "@/components/Breadcrumbs" import Hero from "@/components/Hero" @@ -11,6 +15,7 @@ import Title from "@/components/TempDesignSystem/Text/Title" import { getIntl } from "@/i18n" import { getLang } from "@/i18n/serverContext" +import MeetingsAdditionalContent from "./AdditionalContent/Meetings" import HotelSubpageAdditionalContent from "./AdditionalContent" import HtmlContent from "./HtmlContent" import HotelSubpageSidebar from "./Sidebar" @@ -18,10 +23,7 @@ import { getSubpageData } from "./utils" import styles from "./hotelSubpage.module.css" -interface HotelSubpageProps { - hotelId: string - subpage: string -} +import type { HotelSubpageProps } from "@/types/components/hotelPage/subpage" export default async function HotelSubpage({ hotelId, @@ -45,6 +47,11 @@ export default async function HotelSubpage({ const { hotel, restaurants, additionalData } = hotelData + let meetingRooms + if (hotelData.additionalData.meetingRooms.nameInUrl === subpage) { + meetingRooms = await getMeetingRooms({ hotelId: hotelId, language: lang }) + } + return ( <>
@@ -80,11 +87,18 @@ export default async function HotelSubpage({ /> + {meetingRooms && ( +
+ +
+ )} +
diff --git a/components/ContentType/HotelSubpage/utils.ts b/components/ContentType/HotelSubpage/utils.ts index 70ba735e5..3521b2236 100644 --- a/components/ContentType/HotelSubpage/utils.ts +++ b/components/ContentType/HotelSubpage/utils.ts @@ -74,6 +74,19 @@ export function getSubpageData( } : null, } + case additionalData.meetingRooms.nameInUrl: + const meetingImage = hotel.conferencesAndMeetings?.heroImages[0] + return { + elevatorPitch: hotel.hotelContent.texts.meetingDescription?.medium, + mainBody: additionalData.meetingRooms.mainBody, + heading: intl.formatMessage({ id: "Meetings, Conferences & Events" }), + heroImage: meetingImage + ? { + src: meetingImage.imageSizes.medium, + alt: meetingImage.metaData.altText || "", + } + : null, + } default: return null } diff --git a/components/Icons/Measure.tsx b/components/Icons/Measure.tsx new file mode 100644 index 000000000..d535ac3ab --- /dev/null +++ b/components/Icons/Measure.tsx @@ -0,0 +1,23 @@ +import { iconVariants } from "./variants" + +import type { IconProps } from "@/types/components/icon" + +export default function MeasureIcon({ className, color, ...props }: IconProps) { + const classNames = iconVariants({ className, color }) + return ( + + + + ) +} diff --git a/components/Icons/index.tsx b/components/Icons/index.tsx index 4e7131d1b..686409df5 100644 --- a/components/Icons/index.tsx +++ b/components/Icons/index.tsx @@ -125,6 +125,7 @@ export { default as ScandicLogoIcon } from "./Logos/ScandicLogo" export { default as LuggageIcon } from "./Luggage" export { default as MagicWandIcon } from "./MagicWand" export { default as MapIcon } from "./Map" +export { default as MeasureIcon } from "./Measure" export { default as MicrowaveIcon } from "./Microwave" export { default as MinusIcon } from "./Minus" export { default as MirrorIcon } from "./Mirror" diff --git a/components/TempDesignSystem/MeetingRoomCard/index.tsx b/components/TempDesignSystem/MeetingRoomCard/index.tsx new file mode 100644 index 000000000..ec2ffbc08 --- /dev/null +++ b/components/TempDesignSystem/MeetingRoomCard/index.tsx @@ -0,0 +1,147 @@ +"use client" +import { useState } from "react" +import { useIntl } from "react-intl" + +import { MeasureIcon, PersonIcon } from "@/components/Icons" +import Image from "@/components/Image" + +import Divider from "../Divider" +import ShowMoreButton from "../ShowMoreButton" +import Caption from "../Text/Caption" +import Subtitle from "../Text/Subtitle" +import { translateRoomLighting, translateSeatingType } from "./utils" + +import styles from "./meetingRoomCard.module.css" + +import type { MeetingRoom } from "@/types/components/hotelPage/meetingRooms" + +interface MeetingRoomCardProps { + room: MeetingRoom +} +export default function MeetingRoomCard({ room }: MeetingRoomCardProps) { + const intl = useIntl() + const [opened, setOpened] = useState(false) + + const roomSeatings = room.seatings.map((seating) => { + return seating.capacity + }) + + const maxSeatings = Math.max(...roomSeatings) + const image = room.content.images[0] + + function handleShowMore() { + setOpened((state) => !state) + } + + return ( +
+ {image.metaData.altText +
+ + {room.name} + +
+
+ + {room.size} m2 +
+
+ + + {intl.formatMessage( + { id: "max {seatings} pers" }, + { seatings: maxSeatings } + )} + +
+
+ {opened && ( +
+
+ {room.seatings.map((seating, idx) => ( +
+ + {translateSeatingType(seating.type, intl)} + + + {intl.formatMessage( + { id: "{number} people" }, + { number: seating.capacity } + )} + +
+ ))} +
+ +
+
+ + {intl.formatMessage({ + id: "Location in hotel", + })} + + + {intl.formatMessage( + { id: "Floor {floorNumber}" }, + { + floorNumber: `${room.floorNumber}`, + } + )} + +
+
+ + {intl.formatMessage({ + id: "Lighting", + })} + + + {translateRoomLighting(room.lighting, intl)} + +
+ {room.doorHeight && room.doorWidth ? ( +
+ + {intl.formatMessage({ + id: "Access size", + })} + + + {room.doorHeight} x {room.doorWidth} m + +
+ ) : null} + {room.length && room.width && room.height ? ( +
+ + {intl.formatMessage({ + id: "Dimensions", + })} + + + {room.length} x {room.width} x {room.height} m + +
+ ) : null} +
+
+ )} + +
+
+ ) +} diff --git a/components/TempDesignSystem/MeetingRoomCard/meetingRoomCard.module.css b/components/TempDesignSystem/MeetingRoomCard/meetingRoomCard.module.css new file mode 100644 index 000000000..e4974c41e --- /dev/null +++ b/components/TempDesignSystem/MeetingRoomCard/meetingRoomCard.module.css @@ -0,0 +1,56 @@ +.card { + background-color: var(--Base-Surface-Primary-light-Normal); + border-radius: var(--Corner-radius-Medium); + border: 1px solid var(--Base-Border-Subtle); + display: flex; + flex-direction: column; + overflow: hidden; +} + +.capacity { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--Spacing-x1); +} + +.iconText { + display: flex; + gap: var(--Spacing-x-half); + align-items: center; +} + +.rowItem { + display: grid; + gap: var(--Spacing-x-half); +} + +.openedInfo { + background-color: var(--Base-Surface-Secondary-light-Normal); + border-radius: var(--Corner-radius-Medium); + padding: var(--Spacing-x2); + display: grid; + gap: var(--Spacing-x2); +} + +.image { + width: 100%; + object-fit: cover; +} + +.content { + display: grid; + gap: var(--Spacing-x2); + padding: var(--Spacing-x2); + grid-template-rows: auto 1fr auto; + flex-grow: 1; +} + +@media (min-width: 1367px) { + .card:not(.alwaysStack) .ctaContainer { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + + .card:not(.alwaysStack) .ctaContainer:has(:only-child) { + grid-template-columns: 1fr; + } +} diff --git a/components/TempDesignSystem/MeetingRoomCard/utils.ts b/components/TempDesignSystem/MeetingRoomCard/utils.ts new file mode 100644 index 000000000..e2d5a5a7a --- /dev/null +++ b/components/TempDesignSystem/MeetingRoomCard/utils.ts @@ -0,0 +1,79 @@ +import type { IntlShape } from "react-intl/src/types" + +import { RoomLighting, SeatingType } from "@/types/enums/meetingRooms" + +export function translateRoomLighting(option: string, intl: IntlShape) { + switch (option) { + case RoomLighting.WindowsNaturalDaylight: + return intl.formatMessage({ + id: "Windows with natural daylight", + }) + case RoomLighting.IndoorWindowsExcellentLighting: + return intl.formatMessage({ + id: "Indoor windows and excellent lighting", + }) + case RoomLighting.IndoorWindowsFacingHotel: + return intl.formatMessage({ + id: "Indoor windows facing the hotel", + }) + case RoomLighting.NoWindows: + return intl.formatMessage({ + id: "No windows", + }) + case RoomLighting.NoWindowsExcellentLighting: + return intl.formatMessage({ + id: "No windows but excellent lighting", + }) + case RoomLighting.WindowsNaturalDaylightBlackoutFacilities: + return intl.formatMessage({ + id: "Windows natural daylight and blackout facilities", + }) + case RoomLighting.WindowsNaturalDaylightExcellentView: + return intl.formatMessage({ + id: "Windows natural daylight and excellent view", + }) + default: + console.warn(`Unsupported conference room ligthing option: ${option}`) + return intl.formatMessage({ id: "N/A" }) + } +} + +export function translateSeatingType(type: string, intl: IntlShape) { + switch (type) { + case SeatingType.Boardroom: + return intl.formatMessage({ + id: "Boardroom", + }) + case SeatingType.Cabaret: + return intl.formatMessage({ + id: "Cabaret seating", + }) + case SeatingType.Classroom: + return intl.formatMessage({ + id: "Classroom", + }) + case SeatingType.FullCircle: + return intl.formatMessage({ + id: "Full circle", + }) + case SeatingType.HalfCircle: + return intl.formatMessage({ + id: "Half circle", + }) + case SeatingType.StandingTable: + return intl.formatMessage({ + id: "Standing table", + }) + case SeatingType.Theatre: + return intl.formatMessage({ + id: "Theatre", + }) + case SeatingType.UShape: + return intl.formatMessage({ + id: "U-shape", + }) + default: + console.warn(`Unsupported conference room type : ${type}`) + return intl.formatMessage({ id: "N/A" }) + } +} diff --git a/components/TempDesignSystem/ShowMoreButton/index.tsx b/components/TempDesignSystem/ShowMoreButton/index.tsx index 50e2bd457..ac6069102 100644 --- a/components/TempDesignSystem/ShowMoreButton/index.tsx +++ b/components/TempDesignSystem/ShowMoreButton/index.tsx @@ -13,6 +13,7 @@ import type { ShowMoreButtonProps } from "./showMoreButton" export default function ShowMoreButton({ className, + buttonIntent, intent, disabled, showLess, @@ -23,7 +24,7 @@ export default function ShowMoreButton({ const intl = useIntl() const classNames = showMoreButtonVariants({ className, - intent, + buttonIntent, }) if (!textShowMore) { @@ -47,7 +48,9 @@ export default function ShowMoreButton({ variant="icon" type="button" theme="base" - intent="text" + intent={intent ?? "text"} + fullWidth={intent ? true : false} + size={intent && "small"} > {showLess ? textShowLess : textShowMore} diff --git a/components/TempDesignSystem/ShowMoreButton/showMoreButton.ts b/components/TempDesignSystem/ShowMoreButton/showMoreButton.ts index 34d8bca82..71e1028d2 100644 --- a/components/TempDesignSystem/ShowMoreButton/showMoreButton.ts +++ b/components/TempDesignSystem/ShowMoreButton/showMoreButton.ts @@ -1,5 +1,6 @@ import type { VariantProps } from "class-variance-authority" +import type { ButtonPropsRAC } from "../Button/button" import type { showMoreButtonVariants } from "./variants" export interface ShowMoreButtonProps @@ -10,4 +11,5 @@ export interface ShowMoreButtonProps textShowMore?: string textShowLess?: string loadMoreData: () => void + intent?: ButtonPropsRAC["intent"] } diff --git a/components/TempDesignSystem/ShowMoreButton/variants.ts b/components/TempDesignSystem/ShowMoreButton/variants.ts index 17f8620f1..b230ed9a8 100644 --- a/components/TempDesignSystem/ShowMoreButton/variants.ts +++ b/components/TempDesignSystem/ShowMoreButton/variants.ts @@ -4,7 +4,7 @@ import styles from "./showMoreButton.module.css" export const showMoreButtonVariants = cva(styles.container, { variants: { - intent: { + buttonIntent: { table: styles.table, }, }, diff --git a/i18n/dictionaries/da.json b/i18n/dictionaries/da.json index 1d479cffb..2b6a87103 100644 --- a/i18n/dictionaries/da.json +++ b/i18n/dictionaries/da.json @@ -11,6 +11,7 @@ "About parking": "Om parkering", "About the hotel": "Om hotellet", "Accept new price": "Accepter ny pris", + "Access size": "Adgangsstørrelse", "Accessibility": "Tilgængelighed", "Accessibility at {hotel}": "Tilgængelighed på {hotel}", "Accessible room": "Tilgængelighedsrum", @@ -63,6 +64,7 @@ "Bike friendly": "Cykelvenlig", "Birth date": "Fødselsdato", "Birth date is required": "Birth date is required", + "Boardroom": "Boardroom", "Book": "Book", "Book Reward Night": "Book bonusnat", "Book a table online": "Book et bord online", @@ -91,6 +93,7 @@ "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.", "By paying with any of the payment methods available, I accept the terms for this booking and the general Terms & Conditions, and understand that Scandic will process my personal data for this booking in accordance with Scandic's Privacy policy. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Ved at betale med en af de tilgængelige betalingsmetoder, accepterer jeg vilkårene for denne booking og de generelle Vilkår og betingelser, og forstår, at Scandic vil behandle min personlige data i forbindelse med denne booking i henhold til Scandics Privatlivspolitik. Jeg accepterer, at Scandic kræver et gyldigt kreditkort under min besøg i tilfælde af, at noget er tilbagebetalt.", "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": "Ved at tilmelde dig accepterer du Scandic Friends vilkår og betingelser. Dit medlemskab er gyldigt indtil videre, og du kan til enhver tid opsige dit medlemskab ved at sende en e-mail til Scandics kundeservice", + "Cabaret seating": "Cabaret seating", "Campaign": "Kampagne", "Cancel": "Afbestille", "Cancellation policy": "Cancellation policy", @@ -112,6 +115,7 @@ "City": "By", "City pulse": "Byens puls", "City/State": "By/Stat", + "Classroom": "Classroom", "Clear all filters": "Ryd alle filtre", "Clear searches": "Ryd søgninger", "Click here to log in": "Klik her for at logge ind", @@ -153,6 +157,7 @@ "Details": "Detaljer", "Dialog": "Dialog", "Didn't receive a code? Resend code": "Didn't receive a code? Resend code", + "Dimensions": "Dimensioner", "Discard changes": "Kassér ændringer", "Discard unsaved changes?": "Slette ændringer, der ikke er gemt?", "Discover": "Opdag", @@ -202,6 +207,7 @@ "First name is required": "Fornavn er påkrævet", "Flexibility": "Fleksibilitet", "Floor preference": "Etagepræference", + "Floor {floorNumber}": "Etage {floorNumber}", "Follow us": "Følg os", "Food options": "Madvalg", "Former Scandic Hotel": "Tidligere Scandic Hotel", @@ -214,6 +220,7 @@ "Friendly room rates": "Optjen bonusnætter og point", "Friends with Benefits": "Friends with Benefits", "From": "Fra", + "Full circle": "Full circle", "Garage": "Garage", "Get inspired": "Bliv inspireret", "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.", @@ -227,6 +234,7 @@ "Guest information": "Gæsteinformation", "Guests & Rooms": "Gæster & værelser", "Gym": "Fitnesscenter", + "Half circle": "Half circle", "Hi {firstName}!": "Hei {firstName}!", "High floor": "Højt niveau", "Highest level": "Højeste niveau", @@ -255,6 +263,8 @@ "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.", "Included": "Inkluderet", "Indoor pool": "Indendørs pool", + "Indoor windows and excellent lighting": "Indoor windows and excellent lighting", + "Indoor windows facing the hotel": "Indoor windows facing the hotel", "Invalid booking code": "Ugyldig reservationskode", "Is there anything else you would like us to know before your arrival?": "Er der andet, du gerne vil have os til at vide, før din ankomst?", "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.", @@ -282,9 +292,11 @@ "Level up to unlock": "Stig i niveau for at låse op", "Level upgraded": "Level upgraded", "Level {level}": "Niveau {level}", + "Lighting": "Belysning", "Link my accounts": "Link my accounts", "Link your accounts": "Link your accounts", "Location": "Beliggenhed", + "Location in hotel": "Plassering på hotellet", "Locations": "Placeringer", "Log in": "Log på", "Log in here": "Log ind her", @@ -357,6 +369,8 @@ "No prices available": "Ingen tilgængelige priser", "No results": "Ingen resultater", "No transactions available": "Ingen tilgængelige transaktioner", + "No windows": "No windows", + "No windows but excellent lighting": "No windows but excellent lighting", "No, keep card": "Nej, behold kortet", "Non refundable": "Ikke-refunderbart", "Non-refundable": "Ikke-refunderbart", @@ -414,6 +428,7 @@ "Previous": "Forudgående", "Previous victories": "Tidligere sejre", "Price": "Pris", + "Price 0,16 €/min + local call charges": "Pris 0,16 €/min + lokale opkaldstakster", "Price details": "Prisoplysninger", "Price excl VAT": "Price excl VAT", "Price excluding VAT": "Pris ekskl. moms", @@ -514,6 +529,7 @@ "Spice things up": "Krydre tingene", "Sports": "Sport", "Standard price": "Standardpris", + "Standing table": "Standing table", "Stay at {hotelName} | Hotel in {destination}": "Bo på {hotelName} | Hotel i {destination}", "Street": "Gade", "Submit": "Submit", @@ -555,9 +571,11 @@ "Tuesday": "Tirsdag", "Type of bed": "Sengtype", "Type of room": "Værelsestype", + "U-shape": "U-form", "Unlink accounts": "Unlink accounts", "Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}", "Use Bonus Cheque": "Brug Bonus Cheque", + "Use bonus cheque": "Brug Bonus Cheque", "Use code/voucher": "Brug kode/voucher", "User information": "Brugeroplysninger", "VAT": "VAT", @@ -601,6 +619,9 @@ "Where should you go next?": "Find inspiration til dit næste ophold", "Where to?": "Hvor?", "Which room class suits you the best?": "Hvilken rumklasse passer bedst til dig", + "Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities", + "Windows natural daylight and excellent view": "Windows natural daylight and excellent view", + "Windows with natural daylight": "Vinduer med naturligt dagslys", "Year": "År", "Yes": "Ja", "Yes, discard changes": "Ja, kasser ændringer", @@ -639,6 +660,7 @@ "booking.selectRoom": "Zimmer auswählen", "booking.thisRoomIsEquippedWith": "Dette værelse er udstyret med", "friday": "fredag", + "max {seatings} pers": "max {seatings} pers", "monday": "mandag", "next level: {nextLevel}": "next level: {nextLevel}", "night": "nat", @@ -674,6 +696,7 @@ "{min} to {max} characters": "{min} til {max} tegn", "{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} tilgængelig", "{number} km to city center": "{number} km til centrum", + "{number} people": "{number} people", "{points, number} Bonus points": "{points, number} Bonus points", "{pointsAmount, number} points": "{pointsAmount, number} point", "{points} spendable points expiring by {date}": "{points} Brugbare point udløber den {date}", diff --git a/i18n/dictionaries/de.json b/i18n/dictionaries/de.json index 4e9896b97..8bb1f865d 100644 --- a/i18n/dictionaries/de.json +++ b/i18n/dictionaries/de.json @@ -11,6 +11,7 @@ "About parking": "Über das Parken", "About the hotel": "Über das Hotel", "Accept new price": "Neuen Preis akzeptieren", + "Access size": "Zugriffsgröße", "Accessibility": "Zugänglichkeit", "Accessibility at {hotel}": "Barrierefreiheit im {hotel}", "Accessible room": "Barrierefreies Zimmer", @@ -64,6 +65,7 @@ "Bike friendly": "Fahrradfreundlich", "Birth date": "Geburtsdatum", "Birth date is required": "Birth date is required", + "Boardroom": "Boardroom", "Book": "Buchen", "Book Reward Night": "Bonusnacht buchen", "Book a table online": "Tisch online buchen", @@ -92,6 +94,7 @@ "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.", "By paying with any of the payment methods available, I accept the terms for this booking and the general Terms & Conditions, and understand that Scandic will process my personal data for this booking in accordance with Scandic's Privacy policy. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Mit der Zahlung über eine der verfügbaren Zahlungsmethoden akzeptiere ich die Buchungsbedingungen und die allgemeinen Geschäftsbedingungen und verstehe, dass Scandic meine personenbezogenen Daten im Zusammenhang mit dieser Buchung gemäß der Scandic Datenschutzrichtlinie verarbeitet. Ich akzeptiere, dass Scandic während meines Aufenthalts eine gültige Kreditkarte für eventuelle Rückerstattungen benötigt.", "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": "Mit Ihrer Anmeldung akzeptieren Sie die Allgemeinen Geschäftsbedingungen von Scandic Friends. Ihre Mitgliedschaft ist bis auf Weiteres gültig und Sie können sie jederzeit kündigen, indem Sie eine E-Mail an den Kundenservice von Scandic senden.", + "Cabaret seating": "Cabaret seating", "Campaign": "Kampagne", "Cancel": "Stornieren", "Cancellation policy": "Cancellation policy", @@ -113,6 +116,7 @@ "City": "Stadt", "City pulse": "Stadtpuls", "City/State": "Stadt/Zustand", + "Classroom": "Classroom", "Clear all filters": "Alle Filter löschen", "Clear searches": "Suche löschen", "Click here to log in": "Klicken Sie hier, um sich einzuloggen", @@ -154,6 +158,7 @@ "Details": "Details", "Dialog": "Dialog", "Didn't receive a code? Resend code": "Didn't receive a code? Resend code", + "Dimensions": "Abmessungen", "Discard changes": "Änderungen verwerfen", "Discard unsaved changes?": "Nicht gespeicherte Änderungen verwerfen?", "Discover": "Entdecken", @@ -203,6 +208,7 @@ "First name is required": "Vorname ist erforderlich", "Flexibility": "Flexibilität", "Floor preference": "Etagenpräferenzen", + "Floor {floorNumber}": "Etage {floorNumber}", "Follow us": "Folgen Sie uns", "Food options": "Speisen & Getränke", "Former Scandic Hotel": "Ehemaliges Scandic Hotel", @@ -215,6 +221,7 @@ "Friendly room rates": "Sammeln Sie Bonusnächte und -punkte", "Friends with Benefits": "Friends with Benefits", "From": "Fromm", + "Full circle": "Full circle", "Garage": "Garage", "Get inspired": "Lassen Sie sich inspieren", "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.", @@ -228,6 +235,7 @@ "Guest information": "Informationen für Gäste", "Guests & Rooms": "Gäste & Zimmer", "Gym": "Fitnessstudio", + "Half circle": "Half circle", "Hi {firstName}!": "Hallo {firstName}!", "High floor": "Hohes Level", "Highest level": "Höchstes Level", @@ -256,6 +264,8 @@ "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.", "Included": "Iinklusive", "Indoor pool": "Innenpool", + "Indoor windows and excellent lighting": "Indoor windows and excellent lighting", + "Indoor windows facing the hotel": "Indoor windows facing the hotel", "Invalid booking code": "Ungültiger Buchungscode", "Is there anything else you would like us to know before your arrival?": "Gibt es noch etwas, das Sie uns vor Ihrer Ankunft mitteilen möchten?", "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.", @@ -283,9 +293,11 @@ "Level up to unlock": "Zum Freischalten aufsteigen", "Level upgraded": "Level upgraded", "Level {level}": "Level {level}", + "Lighting": "Beleuchtung", "Link my accounts": "Link my accounts", "Link your accounts": "Link your accounts", "Location": "Ort", + "Location in hotel": "Lage im Hotel", "Locations": "Orte", "Log in": "Anmeldung", "Log in here": "Hier einloggen", @@ -358,6 +370,8 @@ "No prices available": "Keine Preise verfügbar", "No results": "Keine Ergebnisse", "No transactions available": "Keine Transaktionen verfügbar", + "No windows": "No windows", + "No windows but excellent lighting": "No windows but excellent lighting", "No, keep card": "Nein, Karte behalten", "Non refundable": "Nicht erstattungsfähig", "Non-refundable": "Nicht erstattungsfähig", @@ -415,6 +429,7 @@ "Previous": "Früher", "Previous victories": "Bisherige Siege", "Price": "Preis", + "Price 0,16 €/min + local call charges": "Preis 0,16 €/Min. + Ortsgesprächsgebühren", "Price details": "Preisdetails", "Price excl VAT": "Price excl VAT", "Price excluding VAT": "Preis ohne MwSt.", @@ -515,6 +530,7 @@ "Spice things up": "Würzen Sie die Dinge auf", "Sports": "Sport", "Standard price": "Standardpreis", + "Standing table": "Standing table", "Stay at {hotelName} | Hotel in {destination}": "Übernachten Sie im {hotelName} | Hotel in {destination}", "Street": "Straße", "Submit": "Submit", @@ -555,9 +571,11 @@ "Tuesday": "Dienstag", "Type of bed": "Bettentyp", "Type of room": "Zimmerart", + "U-shape": "U-shape", "Unlink accounts": "Unlink accounts", "Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}", "Use Bonus Cheque": "Bonusscheck nutzen", + "Use bonus cheque": "Bonusscheck nutzen", "Use code/voucher": "Code/Gutschein nutzen", "User information": "Nutzerinformation", "VAT": "VAT", @@ -601,6 +619,9 @@ "Where should you go next?": "Wo geht es als Nächstes hin?", "Where to?": "Wohin?", "Which room class suits you the best?": "Welche Zimmerklasse passt am besten zu Ihnen?", + "Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities", + "Windows natural daylight and excellent view": "Windows natural daylight and excellent view", + "Windows with natural daylight": "Fenster mit natürlichem Tageslicht", "Year": "Jahr", "Yes": "Ja", "Yes, discard changes": "Ja, Änderungen verwerfen", @@ -639,6 +660,7 @@ "booking.selectRoom": "Vælg værelse", "booking.thisRoomIsEquippedWith": "Dieses Zimmer ist ausgestattet mit", "friday": "freitag", + "max {seatings} pers": "max {seatings} pers", "monday": "montag", "next level: {nextLevel}": "next level: {nextLevel}", "night": "nacht", @@ -674,6 +696,7 @@ "{min} to {max} characters": "{min} zu {max} figuren", "{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} verfügbar", "{number} km to city center": "{number} km zum Stadtzentrum", + "{number} people": "{number} people", "{points, number} Bonus points": "{points, number} Bonus points", "{pointsAmount, number} points": "{pointsAmount, number} punkte", "{points} spendable points expiring by {date}": "{points} Einlösbare punkte verfallen bis zum {date}", diff --git a/i18n/dictionaries/en.json b/i18n/dictionaries/en.json index 24d0635a8..a5fcd9d6a 100644 --- a/i18n/dictionaries/en.json +++ b/i18n/dictionaries/en.json @@ -12,6 +12,7 @@ "About parking": "About parking", "About the hotel": "About the hotel", "Accept new price": "Accept new price", + "Access size": "Access size", "Accessibility": "Accessibility", "Accessibility at {hotel}": "Accessibility at {hotel}", "Accessible room": "Accessibility room", @@ -64,6 +65,7 @@ "Bike friendly": "Bike friendly", "Birth date": "Birth date", "Birth date is required": "Birth date is required", + "Boardroom": "Boardroom", "Book": "Book", "Book Reward Night": "Book Reward Night", "Book a table online": "Book a table online", @@ -92,6 +94,7 @@ "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.", "By paying with any of the payment methods available, I accept the terms for this booking and the general Terms & Conditions, and understand that Scandic will process my personal data for this booking in accordance with Scandic's Privacy policy. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "By paying with any of the payment methods available, I accept the terms for this booking and the general Terms & Conditions, and understand that Scandic will process my personal data for this booking in accordance with Scandic's Privacy policy. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.", "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": "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", + "Cabaret seating": "Cabaret seating", "Campaign": "Campaign", "Cancel": "Cancel", "Cancel booking": "Cancel booking", @@ -115,6 +118,7 @@ "City": "City", "City pulse": "City pulse", "City/State": "City/State", + "Classroom": "Classroom", "Clear all filters": "Clear all filters", "Clear searches": "Clear searches", "Click here to log in": "Click here to log in", @@ -157,6 +161,7 @@ "Details": "Details", "Dialog": "Dialog", "Didn't receive a code? Resend code": "Didn't receive a code? Resend code", + "Dimensions": "Dimensions", "Discard changes": "Discard changes", "Discard unsaved changes?": "Discard unsaved changes?", "Discover": "Discover", @@ -206,6 +211,7 @@ "First name is required": "First name is required", "Flexibility": "Flexibility", "Floor preference": "Floor preference", + "Floor {floorNumber}": "Floor {floorNumber}", "Follow us": "Follow us", "Food options": "Food options", "Former Scandic Hotel": "Former Scandic Hotel", @@ -218,6 +224,7 @@ "Friendly room rates": "Friendly room rates", "Friends with Benefits": "Friends with Benefits", "From": "From", + "Full circle": "Full circle", "Garage": "Garage", "Get inspired": "Get inspired", "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.", @@ -231,6 +238,7 @@ "Guest information": "Guest information", "Guests & Rooms": "Guests & Rooms", "Gym": "Gym", + "Half circle": "Half circle", "Hi {firstName}!": "Hi {firstName}!", "High floor": "High floor", "Highest level": "Highest level", @@ -259,6 +267,8 @@ "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.", "Included": "Included", "Indoor pool": "Indoor pool", + "Indoor windows and excellent lighting": "Indoor windows and excellent lighting", + "Indoor windows facing the hotel": "Indoor windows facing the hotel", "Invalid booking code": "Invalid booking code", "Is there anything else you would like us to know before your arrival?": "Is there anything else you would like us to know before your arrival?", "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.", @@ -286,9 +296,11 @@ "Level up to unlock": "Level up to unlock", "Level upgraded": "Level upgraded", "Level {level}": "Level {level}", + "Lighting": "Lighting", "Link my accounts": "Link my accounts", "Link your accounts": "Link your accounts", "Location": "Location", + "Location in hotel": "Location in hotel", "Locations": "Locations", "Log in": "Log in", "Log in here": "Log in here", @@ -362,6 +374,8 @@ "No prices available": "No prices available", "No results": "No results", "No transactions available": "No transactions available", + "No windows": "No windows", + "No windows but excellent lighting": "No windows but excellent lighting", "No, keep card": "No, keep card", "Non refundable": "Non refundable", "Non-refundable": "Non-refundable", @@ -419,6 +433,7 @@ "Previous": "Previous", "Previous victories": "Previous victories", "Price": "Price", + "Price 0,16 €/min + local call charges": "Price 0,16 €/min + local call charges", "Price details": "Price details", "Price excl VAT": "Price excl VAT", "Price excluding VAT": "Price excluding VAT", @@ -520,6 +535,7 @@ "Spice things up": "Spice things up", "Sports": "Sports", "Standard price": "Standard price", + "Standing table": "Standing table", "Stay at {hotelName} | Hotel in {destination}": "Stay at {hotelName} | Hotel in {destination}", "Street": "Street", "Submit": "Submit", @@ -560,9 +576,11 @@ "Tuesday": "Tuesday", "Type of bed": "Type of bed", "Type of room": "Type of room", + "U-shape": "U-shape", "Unlink accounts": "Unlink accounts", "Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}", "Use Bonus Cheque": "Use Bonus Cheque", + "Use bonus cheque": "Use bonus cheque", "Use code/voucher": "Use code/voucher", "User information": "User information", "VAT": "VAT", @@ -606,6 +624,9 @@ "Where should you go next?": "Where should you go next?", "Where to?": "Where to?", "Which room class suits you the best?": "Which room class suits you the best?", + "Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities", + "Windows natural daylight and excellent view": "Windows natural daylight and excellent view", + "Windows with natural daylight": "Windows with natural daylight", "Year": "Year", "Yes": "Yes", "Yes, discard changes": "Yes, discard changes", @@ -641,6 +662,7 @@ "booking.selectRoom": "Select room", "booking.thisRoomIsEquippedWith": "This room is equipped with", "friday": "friday", + "max {seatings} pers": "max {seatings} pers", "monday": "monday", "next level: {nextLevel}": "next level: {nextLevel}", "night": "night", @@ -677,6 +699,7 @@ "{min} to {max} characters": "{min} to {max} characters", "{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} available", "{number} km to city center": "{number} km to city center", + "{number} people": "{number} people", "{points, number} Bonus points": "{points, number} Bonus points", "{pointsAmount, number} points": "{pointsAmount, number} points", "{points} spendable points expiring by {date}": "{points} spendable points expiring by {date}", diff --git a/i18n/dictionaries/fi.json b/i18n/dictionaries/fi.json index 30259bede..bd1311b63 100644 --- a/i18n/dictionaries/fi.json +++ b/i18n/dictionaries/fi.json @@ -11,6 +11,7 @@ "About parking": "Tietoja pysäköinnistä", "About the hotel": "Tietoja hotellista", "Accept new price": "Hyväksy uusi hinta", + "Access size": "Pääsyn koko", "Accessibility": "Saavutettavuus", "Accessibility at {hotel}": "Esteettömyys {hotel}", "Accessible room": "Esteetön huone", @@ -62,6 +63,7 @@ "Bike friendly": "Pyöräystävällinen", "Birth date": "Syntymäaika", "Birth date is required": "Birth date is required", + "Boardroom": "Boardroom", "Book": "Varaa", "Book Reward Night": "Kirjapalkinto-ilta", "Book a table online": "Varaa pöytä verkossa", @@ -90,6 +92,7 @@ "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.", "By paying with any of the payment methods available, I accept the terms for this booking and the general Terms & Conditions, and understand that Scandic will process my personal data for this booking in accordance with Scandic's Privacy policy. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Maksamalla minkä tahansa saatavilla olevan maksutavan avulla hyväksyn tämän varauksen ehdot ja yleiset ehdot ja ehtoja, ja ymmärrän, että Scandic käsittelee minun henkilötietoni tässä varauksessa mukaisesti Scandicin tietosuojavaltuuden mukaisesti. Hyväksyn myös, että Scandic vaatii validin luottokortin majoituksen ajan, jos jokin jää maksamatta.", "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": "Rekisteröitymällä hyväksyt Scandic Friendsin käyttöehdot. Jäsenyytesi on voimassa toistaiseksi ja voit lopettaa jäsenyytesi milloin tahansa lähettämällä sähköpostia Scandicin asiakaspalveluun", + "Cabaret seating": "Cabaret seating", "Campaign": "Kampanja", "Cancel": "Peruuttaa", "Cancellation policy": "Cancellation policy", @@ -111,6 +114,7 @@ "City": "Kaupunki", "City pulse": "Kaupungin syke", "City/State": "Kaupunki/Osavaltio", + "Classroom": "Classroom", "Clear all filters": "Tyhjennä kaikki suodattimet", "Clear searches": "Tyhjennä haut", "Click here to log in": "Napsauta tästä kirjautuaksesi sisään", @@ -153,6 +157,7 @@ "Details": "Tiedot", "Dialog": "Dialog", "Didn't receive a code? Resend code": "Didn't receive a code? Resend code", + "Dimensions": "Mitat", "Discard changes": "Hylkää muutokset", "Discard unsaved changes?": "Hylkäätkö tallentamattomat muutokset?", "Discover": "Löydä", @@ -202,6 +207,7 @@ "First name is required": "Etunimi vaaditaan", "Flexibility": "Joustavuus", "Floor preference": "Kerrostasotoive", + "Floor {floorNumber}": "Kerros {floorNumber}", "Follow us": "Seuraa meitä", "Food options": "Ruokavalio", "Former Scandic Hotel": "Entinen Scandic-hotelli", @@ -214,6 +220,7 @@ "Friendly room rates": "Ansaitse bonusöitä ja -pisteitä", "Friends with Benefits": "Friends with Benefits", "From": "From", + "Full circle": "Full circle", "Garage": "Autotalli", "Get inspired": "Inspiroidu", "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.", @@ -227,6 +234,7 @@ "Guest information": "Vieraan tiedot", "Guests & Rooms": "Vieraat & Huoneet", "Gym": "Kuntosali", + "Half circle": "Half circle", "Hi {firstName}!": "Hi {firstName}!", "High floor": "Korkea taso", "Highest level": "Korkein taso", @@ -255,6 +263,8 @@ "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.", "Included": "Sisälly hintaan", "Indoor pool": "Sisäuima-allas", + "Indoor windows and excellent lighting": "Indoor windows and excellent lighting", + "Indoor windows facing the hotel": "Indoor windows facing the hotel", "Invalid booking code": "Virheellinen varauskoodi", "Is there anything else you would like us to know before your arrival?": "Onko jotain muuta, mitä haluaisit meidän tietävän ennen saapumistasi?", "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.", @@ -282,9 +292,11 @@ "Level up to unlock": "Nosta taso avataksesi lukituksen", "Level upgraded": "Level upgraded", "Level {level}": "Taso {level}", + "Lighting": "Valaistus", "Link my accounts": "Link my accounts", "Link your accounts": "Link your accounts", "Location": "Sijainti", + "Location in hotel": "Sijainti hotellissa", "Locations": "Sijainnit", "Log in": "Kirjaudu sisään", "Log in here": "Kirjaudu sisään", @@ -357,6 +369,8 @@ "No prices available": "Hintoja ei ole saatavilla", "No results": "Ei tuloksia", "No transactions available": "Ei tapahtumia saatavilla", + "No windows": "No windows", + "No windows but excellent lighting": "No windows but excellent lighting", "No, keep card": "Ei, pidä kortti", "Non refundable": "Ei palautettavissa", "Non-refundable": "Ei palautettavissa", @@ -414,6 +428,7 @@ "Previous": "Aikaisempi", "Previous victories": "Edelliset voitot", "Price": "Hinta", + "Price 0,16 €/min + local call charges": "Hinta 0,16 €/min + pvm", "Price details": "Hintatiedot", "Price excl VAT": "Price excl VAT", "Price excluding VAT": "ALV ei sisälly hintaan", @@ -515,6 +530,7 @@ "Spice things up": "Mausta asioita", "Sports": "Urheilu", "Standard price": "Normaali hinta", + "Standing table": "Standing table", "Stay at {hotelName} | Hotel in {destination}": "Majoitu kohteessa {hotelName} | Hotelli kohteessa {destination}", "Street": "Katu", "Submit": "Submit", @@ -555,9 +571,11 @@ "Tuesday": "Tiistai", "Type of bed": "Vuodetyyppi", "Type of room": "Huonetyyppi", + "U-shape": "U-muoto", "Unlink accounts": "Unlink accounts", "Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}", "Use Bonus Cheque": "Käytä bonussekkiä", + "Use bonus cheque": "Käytä bonussekkiä", "Use code/voucher": "Käytä koodia/voucheria", "User information": "Käyttäjän tiedot", "VAT": "VAT", @@ -601,6 +619,9 @@ "Where should you go next?": "Mihin menisit seuraavaksi?", "Where to?": "Minne?", "Which room class suits you the best?": "Mikä huoneluokka sopii sinulle parhaiten?", + "Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities", + "Windows natural daylight and excellent view": "Windows natural daylight and excellent view", + "Windows with natural daylight": "Ikkunat luonnonvalolla", "Year": "Vuosi", "Yes": "Kyllä", "Yes, discard changes": "Kyllä, hylkää muutokset", @@ -639,6 +660,7 @@ "booking.selectRoom": "Valitse huone", "booking.thisRoomIsEquippedWith": "Tämä huone on varustettu", "friday": "perjantai", + "max {seatings} pers": "max {seatings} pers", "monday": "maanantai", "next level: {nextLevel}": "next level: {nextLevel}", "night": "yö", @@ -674,6 +696,7 @@ "{min} to {max} characters": "{min} to {max} hahmoja", "{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} saatavilla", "{number} km to city center": "{number} km Etäisyys kaupunkiin", + "{number} people": "{number} people", "{points, number} Bonus points": "{points, number} Bonus points", "{pointsAmount, number} points": "{pointsAmount, number} pistettä", "{points} spendable points expiring by {date}": "{points} pistettä vanhenee {date} mennessä", diff --git a/i18n/dictionaries/no.json b/i18n/dictionaries/no.json index 3ce8fb31b..571138b02 100644 --- a/i18n/dictionaries/no.json +++ b/i18n/dictionaries/no.json @@ -11,6 +11,7 @@ "About parking": "Om parkering", "About the hotel": "Om hotellet", "Accept new price": "Aksepterer ny pris", + "Access size": "Tilgangsstørrelse", "Accessibility": "Tilgjengelighet", "Accessibility at {hotel}": "Tilgjengelighet på {hotel}", "Accessible room": "Tilgjengelighetsrom", @@ -62,6 +63,7 @@ "Bike friendly": "Sykkelvennlig", "Birth date": "Fødselsdato", "Birth date is required": "Birth date is required", + "Boardroom": "Boardroom", "Book": "Bestill", "Book Reward Night": "Bestill belønningskveld", "Book a table online": "Bestill bord online", @@ -90,6 +92,7 @@ "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.", "By paying with any of the payment methods available, I accept the terms for this booking and the general Terms & Conditions, and understand that Scandic will process my personal data for this booking in accordance with Scandic's Privacy policy. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Ved å betale med en av de tilgjengelige betalingsmetodene godtar jeg vilkårene og betingelsene for denne bestillingen og de generelle vilkårene, og forstår at Scandic vil behandle mine personopplysninger i forbindelse med denne bestillingen i henhold til Scandics personvernpolicy. Jeg aksepterer at Scandic krever et gyldig kredittkort under mitt besøk i tilfelle noe blir refundert.", "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": "Ved å registrere deg godtar du Scandic Friends vilkår og betingelser. Medlemskapet ditt er gyldig inntil videre, og du kan si opp medlemskapet ditt når som helst ved å sende en e-post til Scandics kundeservice", + "Cabaret seating": "Cabaret seating", "Campaign": "Kampanje", "Cancel": "Avbryt", "Cancellation policy": "Cancellation policy", @@ -111,6 +114,7 @@ "City": "By", "City pulse": "Byens puls", "City/State": "By/Stat", + "Classroom": "Classroom", "Clear all filters": "Fjern alle filtre", "Clear searches": "Tømme søk", "Click here to log in": "Klikk her for å logge inn", @@ -152,6 +156,7 @@ "Details": "Detaljer", "Dialog": "Dialog", "Didn't receive a code? Resend code": "Didn't receive a code? Resend code", + "Dimensions": "Dimensjoner", "Discard changes": "Forkaste endringer", "Discard unsaved changes?": "Forkaste endringer som ikke er lagret?", "Discover": "Oppdag", @@ -201,6 +206,7 @@ "First name is required": "Fornavn kreves", "Flexibility": "Fleksibilitet", "Floor preference": "Etasjepreferans", + "Floor {floorNumber}": "Etasje {floorNumber}", "Follow us": "Følg oss", "Food options": "Matvalg", "Former Scandic Hotel": "Tidligere Scandic-hotell", @@ -213,6 +219,7 @@ "Friendly room rates": "Tjen bonusnetter og poeng", "Friends with Benefits": "Friends with Benefits", "From": "Fra", + "Full circle": "Full circle", "Garage": "Garasje", "Get inspired": "Bli inspirert", "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.", @@ -226,6 +233,7 @@ "Guest information": "Informasjon til gjester", "Guests & Rooms": "Gjester & rom", "Gym": "Treningsstudio", + "Half circle": "Half circle", "Hi {firstName}!": "Hei {firstName}!", "High floor": "Høy nivå", "Highest level": "Høyeste nivå", @@ -254,6 +262,8 @@ "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.", "Included": "Inkludert", "Indoor pool": "Innendørs basseng", + "Indoor windows and excellent lighting": "Indoor windows and excellent lighting", + "Indoor windows facing the hotel": "Indoor windows facing the hotel", "Invalid booking code": "Ugyldig bookingkode", "Is there anything else you would like us to know before your arrival?": "Er det noe annet du vil at vi skal vite før ankomsten din?", "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.", @@ -281,9 +291,11 @@ "Level up to unlock": "Nivå opp for å låse opp", "Level upgraded": "Level upgraded", "Level {level}": "Nivå {level}", + "Lighting": "Belysning", "Link my accounts": "Link my accounts", "Link your accounts": "Link your accounts", "Location": "Beliggenhet", + "Location in hotel": "Plassering på hotellet", "Locations": "Steder", "Log in": "Logg Inn", "Log in here": "Logg inn her", @@ -356,6 +368,8 @@ "No prices available": "Ingen priser tilgjengelig", "No results": "Ingen resultater", "No transactions available": "Ingen transaksjoner tilgjengelig", + "No windows": "No windows", + "No windows but excellent lighting": "No windows but excellent lighting", "No, keep card": "Nei, behold kortet", "Non refundable": "Ikke-refunderbart", "Non-refundable": "Ikke-refunderbart", @@ -413,6 +427,7 @@ "Previous": "Tidligere", "Previous victories": "Tidligere seire", "Price": "Pris", + "Price 0,16 €/min + local call charges": "Pris 0,16 €/min + lokale samtalekostnader", "Price details": "Prisdetaljer", "Price excl VAT": "Price excl VAT", "Price excluding VAT": "Pris exkludert mva", @@ -513,6 +528,7 @@ "Spice things up": "Krydre tingene", "Sports": "Sport", "Standard price": "Standardpris", + "Standing table": "Standing table", "Stay at {hotelName} | Hotel in {destination}": "Bo på {hotelName} | Hotell i {destination}", "Street": "Gate", "Submit": "Submit", @@ -553,9 +569,11 @@ "Tuesday": "Tirsdag", "Type of bed": "Sengtype", "Type of room": "Romtype", + "U-shape": "U-form", "Unlink accounts": "Unlink accounts", "Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}", "Use Bonus Cheque": "Bruk bonussjekk", + "Use bonus cheque": "Bruk bonussjekk", "Use code/voucher": "Bruk kode/voucher", "User information": "Brukerinformasjon", "VAT": "VAT", @@ -599,6 +617,9 @@ "Where should you go next?": "Hvor ønsker du å reise neste gang?", "Where to?": "Hvor skal du?", "Which room class suits you the best?": "Hvilken romklasse passer deg best?", + "Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities", + "Windows natural daylight and excellent view": "Windows natural daylight and excellent view", + "Windows with natural daylight": "Vinduer med naturlig dagslys", "Year": "År", "Yes": "Ja", "Yes, discard changes": "Ja, forkast endringer", @@ -637,6 +658,7 @@ "booking.selectRoom": "Velg rom", "booking.thisRoomIsEquippedWith": "Dette rommet er utstyrt med", "friday": "fredag", + "max {seatings} pers": "max {seatings} pers", "monday": "mandag", "next level: {nextLevel}": "next level: {nextLevel}", "night": "natt", @@ -672,6 +694,7 @@ "{min} to {max} characters": "{min} til {max} tegn", "{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} tilgjengelig", "{number} km to city center": "{number} km til sentrum", + "{number} people": "{number} people", "{points, number} Bonus points": "{points, number} Bonus points", "{pointsAmount, number} points": "{pointsAmount, number} poeng", "{points} spendable points expiring by {date}": "{points} Brukbare poeng utløper innen {date}", diff --git a/i18n/dictionaries/sv.json b/i18n/dictionaries/sv.json index ba1787cc8..08ca8b657 100644 --- a/i18n/dictionaries/sv.json +++ b/i18n/dictionaries/sv.json @@ -11,6 +11,7 @@ "About parking": "Om parkering", "About the hotel": "Om hotellet", "Accept new price": "Accepter ny pris", + "Access size": "Åtkomststorlek", "Accessibility": "Tillgänglighet", "Accessibility at {hotel}": "Tillgänglighet på {hotel}", "Accessible room": "Tillgänglighetsrum", @@ -62,6 +63,7 @@ "Bike friendly": "Cykelvänligt", "Birth date": "Födelsedatum", "Birth date is required": "Birth date is required", + "Boardroom": "Boardroom", "Book": "Boka", "Book Reward Night": "Boka frinatt", "Book a table online": "Boka ett bord online", @@ -90,6 +92,7 @@ "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the Scandic Friends & SAS Terms and Conditions. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.", "By paying with any of the payment methods available, I accept the terms for this booking and the general Terms & Conditions, and understand that Scandic will process my personal data for this booking in accordance with Scandic's Privacy policy. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Genom att betala med någon av de tillgängliga betalningsmetoderna accepterar jag villkoren för denna bokning och de generella Villkoren och villkoren, och förstår att Scandic kommer att behandla min personliga data i samband med denna bokning i enlighet med Scandics integritetspolicy. Jag accepterar att Scandic kräver ett giltigt kreditkort under min besök i fall att något är tillbaka betalt.", "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": "Genom att registrera dig accepterar du Scandic Friends Användarvillkor. Ditt medlemskap gäller tills vidare och du kan när som helst säga upp ditt medlemskap genom att skicka ett mejl till Scandics kundtjänst", + "Cabaret seating": "Cabaret seating", "Campaign": "Kampanj", "Cancel": "Avbryt", "Cancellation policy": "Cancellation policy", @@ -111,6 +114,7 @@ "City": "Ort", "City pulse": "Stadspuls", "City/State": "Ort", + "Classroom": "Klassrum", "Clear all filters": "Rensa alla filter", "Clear searches": "Rensa tidigare sökningar", "Click here to log in": "Klicka här för att logga in", @@ -152,6 +156,7 @@ "Details": "Detaljer", "Dialog": "Dialog", "Didn't receive a code? Resend code": "Didn't receive a code? Resend code", + "Dimensions": "Dimensioner", "Discard changes": "Ignorera ändringar", "Discard unsaved changes?": "Vill du ignorera ändringar som inte har sparats?", "Discover": "Upptäck", @@ -201,6 +206,7 @@ "First name is required": "Förnamn är obligatoriskt", "Flexibility": "Flexibilitet", "Floor preference": "Våningpreferens", + "Floor {floorNumber}": "Våning {floorNumber}", "Follow us": "Följ oss", "Food options": "Matval", "Former Scandic Hotel": "Tidigare Scandichotell", @@ -213,6 +219,7 @@ "Friendly room rates": "Tjäna bonusnätter och poäng", "Friends with Benefits": "Friends with Benefits", "From": "Från", + "Full circle": "Full circle", "Garage": "Garage", "Get inspired": "Bli inspirerad", "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.", @@ -226,6 +233,7 @@ "Guest information": "Information till gästerna", "Guests & Rooms": "Gäster & rum", "Gym": "Gym", + "Half circle": "Half circle", "Hi {firstName}!": "Hej {firstName}!", "High floor": "Högt upp", "Highest level": "Högsta nivå", @@ -254,6 +262,8 @@ "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.", "Included": "Inkluderad", "Indoor pool": "Inomhuspool", + "Indoor windows and excellent lighting": "Fönster inomhus och utmärkt belysning", + "Indoor windows facing the hotel": "Inomhusfönster mot hotellet", "Invalid booking code": "Ogiltig bokningskod", "Is there anything else you would like us to know before your arrival?": "Är det något mer du vill att vi ska veta innan din ankomst?", "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.", @@ -281,9 +291,11 @@ "Level up to unlock": "Levla upp för att låsa upp", "Level upgraded": "Level upgraded", "Level {level}": "Nivå {level}", + "Lighting": "Ljussättning", "Link my accounts": "Link my accounts", "Link your accounts": "Link your accounts", "Location": "Plats", + "Location in hotel": "Plats på hotellet", "Locations": "Platser", "Log in": "Logga in", "Log in here": "Logga in här", @@ -356,6 +368,8 @@ "No prices available": "Inga priser tillgängliga", "No results": "Inga resultat", "No transactions available": "Inga transaktioner tillgängliga", + "No windows": "Inga fönster", + "No windows but excellent lighting": "Inga fönster men utmärkt belysning", "No, keep card": "Nej, behåll kortet", "Non refundable": "Ej återbetalningsbar", "Non-refundable": "Ej återbetalningsbar", @@ -413,6 +427,7 @@ "Previous": "Föregående", "Previous victories": "Tidigare segrar", "Price": "Pris", + "Price 0,16 €/min + local call charges": "Pris 0,16 €/min + lokalsamtalsavgifter", "Price details": "Prisdetaljer", "Price excl VAT": "Price excl VAT", "Price excluding VAT": "Pris exkl. VAT", @@ -513,6 +528,7 @@ "Spice things up": "Krydda upp saker och ting", "Sports": "Sport", "Standard price": "Standardpris", + "Standing table": "Ståbord", "Stay at {hotelName} | Hotel in {destination}": "Bo på {hotelName} | Hotell i {destination}", "Street": "Gata", "Submit": "Submit", @@ -553,9 +569,11 @@ "Tuesday": "Tisdag", "Type of bed": "Sängtyp", "Type of room": "Rumstyp", + "U-shape": "U-form", "Unlink accounts": "Unlink accounts", "Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}", "Use Bonus Cheque": "Använd bonuscheck", + "Use bonus cheque": "Använd bonuscheck", "Use code/voucher": "Använd kod/voucher", "User information": "Användarinformation", "VAT": "VAT", @@ -599,6 +617,9 @@ "Where should you go next?": "Låter inte en spontanweekend härligt?", "Where to?": "Vart?", "Which room class suits you the best?": "Vilken rumsklass passar dig bäst?", + "Windows natural daylight and blackout facilities": "Fönster med naturligt dagsljus och mörkläggningsmöjligheter", + "Windows natural daylight and excellent view": "Fönster med naturligt dagsljus och utmärkt utsikt", + "Windows with natural daylight": "Fönster med naturligt dagsljus", "Year": "År", "Yes": "Ja", "Yes, discard changes": "Ja, ignorera ändringar", @@ -637,6 +658,7 @@ "booking.selectRoom": "Välj rum", "booking.thisRoomIsEquippedWith": "Detta rum är utrustat med", "friday": "fredag", + "max {seatings} pers": "max {seatings} pers", "monday": "måndag", "next level: {nextLevel}": "next level: {nextLevel}", "night": "natt", @@ -674,6 +696,7 @@ "{min} to {max} characters": "{min} till {max} tecken", "{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} tillgängliga", "{number} km to city center": "{number} km till centrum", + "{number} people": "{number} personer", "{points, number} Bonus points": "{points, number} Bonus points", "{pointsAmount, number} points": "{pointsAmount, number} poäng", "{points} spendable points expiring by {date}": "{points} poäng förfaller {date}", diff --git a/server/routers/hotels/schemas/hotel.ts b/server/routers/hotels/schemas/hotel.ts index 1a02ff18b..706c1d92f 100644 --- a/server/routers/hotels/schemas/hotel.ts +++ b/server/routers/hotels/schemas/hotel.ts @@ -23,6 +23,7 @@ import { facilitySchema } from "./additionalData" import { imageSchema } from "./image" export const attributesSchema = z.object({ + id: z.string().optional(), address: addressSchema, cityId: z.string(), cityName: z.string(), diff --git a/types/components/hotelPage/meetingRooms.ts b/types/components/hotelPage/meetingRooms.ts index 2be47b264..5fdf95f56 100644 --- a/types/components/hotelPage/meetingRooms.ts +++ b/types/components/hotelPage/meetingRooms.ts @@ -4,3 +4,4 @@ import type { meetingRoomsSchema } from "@/server/routers/hotels/schemas/meeting export type MeetingRoomData = z.output export type MeetingRooms = MeetingRoomData["data"] +export type MeetingRoom = MeetingRooms[number]["attributes"] diff --git a/types/components/hotelPage/sidepeek/meetingsAndConferences.ts b/types/components/hotelPage/sidepeek/meetingsAndConferences.ts index 075307f75..7e70dac7f 100644 --- a/types/components/hotelPage/sidepeek/meetingsAndConferences.ts +++ b/types/components/hotelPage/sidepeek/meetingsAndConferences.ts @@ -4,5 +4,5 @@ export type MeetingsAndConferencesSidePeekProps = { meetingFacilities: Hotel["conferencesAndMeetings"] descriptions: Hotel["hotelContent"]["texts"]["meetingDescription"] hotelId: string - link?: string + meetingPageUrl: string | undefined } diff --git a/types/components/hotelPage/subpage.ts b/types/components/hotelPage/subpage.ts new file mode 100644 index 000000000..c2c66a221 --- /dev/null +++ b/types/components/hotelPage/subpage.ts @@ -0,0 +1,4 @@ +export interface HotelSubpageProps { + hotelId: string + subpage: string +} diff --git a/types/enums/meetingRooms.ts b/types/enums/meetingRooms.ts new file mode 100644 index 000000000..f8b5acb36 --- /dev/null +++ b/types/enums/meetingRooms.ts @@ -0,0 +1,20 @@ +export enum RoomLighting { + WindowsNaturalDaylight = "WindowsNaturalDaylight", + WindowsNaturalDaylightExcellentView = "WindowsNaturalDaylightExcellentView", + WindowsNaturalDaylightBlackoutFacilities = "WindowsNaturalDaylightBlackoutFacilities", + NoWindows = "NoWindows", + NoWindowsExcellentLighting = "NoWindowsExcellentLighting", + IndoorWindowsFacingHotel = "IndoorWindowsFacingHotel", + IndoorWindowsExcellentLighting = "IndoorWindowsExcellentLighting", +} + +export enum SeatingType { + UShape = "UShape", + Classroom = "Classroom", + Boardroom = "Boardroom", + Theatre = "Theatre", + Cabaret = "Cabaret", + StandingTable = "StandingTable", + HalfCircle = "HalfCircle", + FullCircle = "FullCircle", +}