Merged in feat/sw-2863-move-contentstack-router-to-trpc-package (pull request #2389)

feat(SW-2863): Move contentstack router to trpc package

* Add exports to packages and lint rule to prevent relative imports

* Add env to trpc package

* Add eslint to trpc package

* Apply lint rules

* Use direct imports from trpc package

* Add lint-staged config to trpc

* Move lang enum to common

* Restructure trpc package folder structure

* WIP first step

* update internal imports in trpc

* Fix most errors in scandic-web

Just 100 left...

* Move Props type out of trpc

* Fix CategorizedFilters types

* Move more schemas in hotel router

* Fix deps

* fix getNonContentstackUrls

* Fix import error

* Fix entry error handling

* Fix generateMetadata metrics

* Fix alertType enum

* Fix duplicated types

* lint:fix

* Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package

* Fix broken imports

* Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package


Approved-by: Linus Flood
This commit is contained in:
Anton Gunnarsson
2025-06-26 07:53:01 +00:00
parent 0263ab8c87
commit 002d093af4
921 changed files with 3112 additions and 3008 deletions

View File

@@ -1,6 +1,12 @@
import { createEnv } from "@t3-oss/env-nextjs"
import { z } from "zod"
/*
* ⚠️ Remember to also add environment variables to the corresponding config in sites that uses this package. ⚠️
*/
const TWENTYFOUR_HOURS = 24 * 60 * 60
export const env = createEnv({
/**
* Due to t3-env only checking typeof window === "undefined"
@@ -9,10 +15,39 @@ export const env = createEnv({
*/
isServer: typeof window === "undefined" || "Deno" in window,
server: {
API_BASEURL: z.string(),
CACHE_TIME_HOTELS: z.coerce
.number()
.default(TWENTYFOUR_HOURS)
.transform((val) =>
process.env.CMS_ENVIRONMENT === "test" ? 5 * 60 : val
),
NODE_ENV: z.enum(["development", "test", "production"]),
CMS_ACCESS_TOKEN: z.string(),
CMS_BRANCH: z.enum(["development", "production"]),
CMS_URL: z.string(),
CMS_PREVIEW_URL: z.string(),
CMS_PREVIEW_TOKEN: z.string(),
SENTRY_ENVIRONMENT: z.string().default("development"),
PUBLIC_URL: z.string().default(""),
PRINT_QUERY: z
.string()
.refine((s) => s === "true" || s === "false")
.transform((s) => s === "true")
.default("false"),
},
emptyStringAsUndefined: true,
runtimeEnv: {
API_BASEURL: process.env.API_BASEURL,
CACHE_TIME_HOTELS: process.env.CACHE_TIME_HOTELS,
NODE_ENV: process.env.NODE_ENV,
CMS_ACCESS_TOKEN: process.env.CMS_ACCESS_TOKEN,
CMS_BRANCH: process.env.CMS_BRANCH,
CMS_URL: process.env.CMS_URL,
CMS_PREVIEW_URL: process.env.CMS_PREVIEW_URL,
CMS_PREVIEW_TOKEN: process.env.CMS_PREVIEW_TOKEN,
SENTRY_ENVIRONMENT: process.env.SENTRY_ENVIRONMENT,
PUBLIC_URL: process.env.NEXT_PUBLIC_PUBLIC_URL,
PRINT_QUERY: process.env.PRINT_QUERY,
},
})

View File

@@ -1,5 +1 @@
import type { DataCache } from "./dataCache/Cache"
declare global {
var cacheClient: Promise<DataCache> | undefined
}
import "@scandic-hotels/common/global.d.ts"

View File

@@ -0,0 +1,22 @@
import stringify from "json-stable-stringify-without-jsonify"
import { cache as reactCache } from "react"
/**
* Wrapper function to handle caching of memoized requests that recieve objects as args.
* React Cache will use shallow equality of the arguments to determine if there is a cache hit,
* therefore we need to stringify the arguments to ensure that the cache works as expected.
* This function will handle the stingification of the arguments, the caching of the function,
* and the parsing of the arguments back to their original form.
*
* @param fn - The function to memoize
*/
export function cache<T extends (...args: any[]) => any>(fn: T) {
const cachedFunction = reactCache((stringifiedParams: string) => {
return fn(...JSON.parse(stringifiedParams))
})
return (...args: Parameters<T>): ReturnType<T> => {
const stringifiedParams = stringify(args)
return cachedFunction(stringifiedParams)
}
}

View File

@@ -0,0 +1,228 @@
/**
* Nested enum requires namespace
*/
export namespace endpoints {
namespace base {
export const enum path {
availability = "availability",
booking = "booking",
hotel = "hotel",
package = "package",
profile = "profile",
}
export const enum enitity {
Ancillary = "Ancillary",
Availabilities = "availabilities",
Bookings = "Bookings",
Breakfast = "breakfast",
Cities = "Cities",
Countries = "Countries",
Hotels = "Hotels",
Locations = "Locations",
Packages = "packages",
Profile = "Profile",
Reward = "Reward",
Stays = "Stays",
Transaction = "Transaction",
RoomFeature = "RoomFeature",
}
}
export namespace v1 {
const version = "v1"
/**
* availability (Swagger)
* https://tstapi.scandichotels.com/availability/swagger/v1/index.html
*/
export namespace Availability {
export function city(cityId: string) {
return `${base.path.availability}/${version}/${base.enitity.Availabilities}/city/${cityId}`
}
export function hotels() {
return `${base.path.availability}/${version}/${base.enitity.Availabilities}/hotels`
}
export function hotel(hotelId: string) {
return `${base.path.availability}/${version}/${base.enitity.Availabilities}/hotel/${hotelId}`
}
export function roomFeatures(hotelId: string) {
return `${base.path.availability}/${version}/${base.enitity.RoomFeature}/features/hotel/${hotelId}`
}
}
/**
* booking (Swagger)
* https://tstapi.scandichotels.com/booking/swagger/v1/index.html
*/
export namespace Booking {
export const bookings = `${base.path.booking}/${version}/${base.enitity.Bookings}`
export function booking(confirmationNumber: string) {
return `${bookings}/${confirmationNumber}`
}
export function find(confirmationNumber: string) {
return `${bookings}/${confirmationNumber}/find`
}
export function cancel(confirmationNumber: string) {
return `${bookings}/${confirmationNumber}/cancel`
}
export function status(confirmationNumber: string) {
return `${bookings}/${confirmationNumber}/status`
}
export function priceChange(confirmationNumber: string) {
return `${bookings}/${confirmationNumber}/priceChange`
}
export function packages(confirmationNumber: string) {
return `${bookings}/${confirmationNumber}/packages`
}
export function guarantee(confirmationNumber: string) {
return `${bookings}/${confirmationNumber}/guarantee`
}
export const enum Stays {
future = `${base.path.booking}/${version}/${base.enitity.Stays}/future`,
past = `${base.path.booking}/${version}/${base.enitity.Stays}/past`,
}
}
/**
* hotel (Swagger)
* https://tstapi.scandichotels.com/hotel/swagger/v1/index.html
*/
export namespace Hotel {
export const cities = `${base.path.hotel}/${version}/${base.enitity.Cities}`
export namespace Cities {
export function city(cityId: string) {
return `${cities}/${cityId}`
}
export function country(countryId: string) {
return `${cities}/country/${countryId}`
}
export function hotel(hotelId: string) {
return `${cities}/hotel/${hotelId}`
}
}
export const countries = `${base.path.hotel}/${version}/${base.enitity.Countries}`
export namespace Countries {
export function country(countryId: string) {
return `${countries}/${countryId}`
}
}
export const hotels = `${base.path.hotel}/${version}/${base.enitity.Hotels}`
export namespace Hotels {
export function hotel(hotelId: string) {
return `${hotels}/${hotelId}`
}
export function meetingRooms(hotelId: string) {
return `${hotels}/${hotelId}/meetingRooms`
}
export function merchantInformation(hotelId: string) {
return `${hotels}/${hotelId}/merchantInformation`
}
export function nearbyHotels(hotelId: string) {
return `${hotels}/${hotelId}/nearbyHotels`
}
export function restaurants(hotelId: string) {
return `${hotels}/${hotelId}/restaurants`
}
export function roomCategories(hotelId: string) {
return `${hotels}/${hotelId}/roomCategories`
}
export function additionalData(hotelId: string) {
return `${hotels}/${hotelId}/additionalData`
}
}
export const locations = `${base.path.hotel}/${version}/${base.enitity.Locations}`
}
/**
* package (Swagger)
* https://tstapi.scandichotels.com/package/swagger/v1/index.html
*/
export namespace Package {
export namespace Ancillary {
export function hotel(hotelId: string) {
return `${base.path.package}/${version}/${base.enitity.Ancillary}/hotel/${hotelId}`
}
export function hotelAncillaries(hotelId: string) {
return `${base.path.package}/${version}/${base.enitity.Ancillary}/hotel/${hotelId}/ancillaries`
}
}
export namespace Breakfast {
export function hotel(hotelId: string) {
return `${base.path.package}/${version}/${base.enitity.Breakfast}/hotel/${hotelId}`
}
}
export namespace Packages {
export function hotel(hotelId: string) {
return `${base.path.package}/${version}/${base.enitity.Packages}/hotel/${hotelId}`
}
}
}
/**
* profile (Swagger)
* https://tstapi.scandichotels.com/profile/swagger/v1/index.html
*/
export namespace Profile {
export const invalidateSessions = `${base.path.profile}/${version}/${base.enitity.Profile}/invalidateSessions`
export const membership = `${base.path.profile}/${version}/${base.enitity.Profile}/membership`
export const profile = `${base.path.profile}/${version}/${base.enitity.Profile}`
export const subscriberId = `${base.path.profile}/${version}/${base.enitity.Profile}/SubscriberId`
export const link = `${base.path.profile}/${version}/${base.enitity.Profile}/link`
export const unlink = `${base.path.profile}/${version}/${base.enitity.Profile}/Unlink`
export const matchTier = `${base.path.profile}/${version}/${base.enitity.Profile}/MatchTier`
export const pointTransfer = `${base.path.profile}/${version}/${base.enitity.Profile}/PointTransfer/Partner`
export function deleteProfile(profileId: string) {
return `${profile}/${profileId}`
}
export const creditCards = `${base.path.profile}/${version}/${base.enitity.Profile}/creditCards`
export namespace CreditCards {
export const initiateSaveCard = `${creditCards}/initiateSaveCard`
export function deleteCreditCard(creditCardId: string) {
return `${creditCards}/${creditCardId}`
}
export function transaction(transactionId: string) {
return `${creditCards}/${transactionId}`
}
}
export namespace Reward {
export const allTiers = `${base.path.profile}/${version}/${base.enitity.Reward}/allTiers`
export const reward = `${base.path.profile}/${version}/${base.enitity.Reward}`
export const redeem = `${base.path.profile}/${version}/${base.enitity.Reward}/redeem`
export const unwrap = `${base.path.profile}/${version}/${base.enitity.Reward}/unwrap`
export function claim(rewardId: string) {
return `${base.path.profile}/${version}/${base.enitity.Reward}/Claim/${rewardId}`
}
}
export const enum Transaction {
friendTransactions = `${base.path.profile}/${version}/${base.enitity.Transaction}/friendTransactions`,
}
}
}
export namespace v2 {
const version = "v2"
/**
* profile (Swagger)
* https://tstapi.scandichotels.com/profile/swagger/v2/index.html
*/
export namespace Profile {
export const profile = `${base.path.profile}/${version}/${base.enitity.Profile}`
}
}
}
export type Endpoint = string

View File

@@ -0,0 +1,123 @@
import merge from "deepmerge"
import fetchRetry from "fetch-retry"
import { env } from "../../env/server"
import type { Endpoint } from "./endpoints"
export { endpoints } from "./endpoints"
interface RequestOptionsWithJSONBody
extends Omit<RequestInit, "body" | "method"> {
body?: Record<string, unknown>
}
interface RequestOptionsWithOutBody
extends Omit<RequestInit, "body" | "method"> {}
const defaultOptions: RequestInit = {
cache: "no-store",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
mode: "cors",
}
const wrappedFetch = fetchRetry(fetch, {
retries: 2,
retryDelay: function (attempt) {
return Math.pow(2, attempt) * 150 // 150, 300, 600
},
})
export async function get(
endpoint: Endpoint,
options: RequestOptionsWithOutBody,
params = {}
) {
const url = new URL(env.API_BASEURL)
url.pathname = endpoint
url.search = new URLSearchParams(params).toString()
return wrappedFetch(url, {
...merge.all([defaultOptions, { method: "GET" }, options]),
signal: AbortSignal.timeout(15_000),
})
}
export async function patch(
endpoint: Endpoint | `${Endpoint}/${string}`,
options: RequestOptionsWithJSONBody,
params = {}
) {
const { body, ...requestOptions } = options
const url = new URL(env.API_BASEURL)
url.pathname = endpoint
url.search = new URLSearchParams(params).toString()
return wrappedFetch(url, {
...merge.all([
defaultOptions,
{ body: JSON.stringify(body), method: "PATCH" },
requestOptions,
]),
signal: AbortSignal.timeout(30_000),
})
}
export async function post(
endpoint: Endpoint | `${Endpoint}/${string}`,
options: RequestOptionsWithJSONBody,
params = {}
) {
const { body, ...requestOptions } = options
const url = new URL(env.API_BASEURL)
url.pathname = endpoint
url.search = new URLSearchParams(params).toString()
return wrappedFetch(url, {
...merge.all([
defaultOptions,
{ body: JSON.stringify(body), method: "POST" },
requestOptions,
]),
signal: AbortSignal.timeout(30_000),
})
}
export async function put(
endpoint: Endpoint | `${Endpoint}/${string}`,
options: RequestOptionsWithJSONBody,
params = {}
) {
const { body, ...requestOptions } = options
const url = new URL(env.API_BASEURL)
url.pathname = endpoint
url.search = new URLSearchParams(params).toString()
return wrappedFetch(url, {
...merge.all([
defaultOptions,
{ body: JSON.stringify(body), method: "PUT" },
requestOptions,
]),
signal: AbortSignal.timeout(30_000),
})
}
export async function remove(
endpoint: Endpoint | `${Endpoint}/${string}`,
options: RequestOptionsWithJSONBody,
params = {}
) {
const { body, ...requestOptions } = options
const url = new URL(env.API_BASEURL)
url.pathname = endpoint
url.search = new URLSearchParams(params).toString()
return wrappedFetch(url, {
...merge.all([
defaultOptions,
{ body: JSON.stringify(body), method: "DELETE" },
requestOptions,
]),
signal: AbortSignal.timeout(30_000),
})
}

View File

@@ -0,0 +1,9 @@
export enum BreakfastPackageEnum {
FREE_MEMBER_BREAKFAST = "BRF0",
FREE_CHILD_BREAKFAST = "BRFINF",
REGULAR_BREAKFAST = "BRF1",
CHILD_PAYING_BREAKFAST = "BRF1C",
SPECIAL_PACKAGE_BREAKFAST = "F01S",
ANCILLARY_REGULAR_BREAKFAST = "BRF2",
ANCILLARY_CHILD_PAYING_BREAKFAST = "BRF2C",
}

View File

@@ -0,0 +1,6 @@
export enum ChildBedMapEnum {
IN_ADULTS_BED = 0,
IN_CRIB = 1,
IN_EXTRA_BED = 2,
UNKNOWN = 3,
}

View File

@@ -0,0 +1,6 @@
export enum ChildBedTypeEnum {
Crib = "Crib",
ExtraBed = "ExtraBed",
ParentsBed = "ParentsBed",
Unknown = "Unknown",
}

View File

@@ -0,0 +1,14 @@
export enum PageContentTypeEnum {
accountPage = "account_page",
campaignOverviewPage = "campaign_overview_page",
campaignPage = "campaign_page",
collectionPage = "collection_page",
contentPage = "content_page",
currentBlocksPage = "current_blocks_page",
destinationCityPage = "destination_city_page",
destinationCountryPage = "destination_country_page",
destinationOverviewPage = "destination_overview_page",
hotelPage = "hotel_page",
loyaltyPage = "loyalty_page",
startPage = "start_page",
}

View File

@@ -0,0 +1,6 @@
export enum SortOption {
Recommended = "recommended",
Distance = "distance",
Name = "name",
TripAdvisorRating = "tripadvisor",
}

View File

@@ -0,0 +1,266 @@
export enum FacilityEnum {
AccessibleBathingControls = 2065,
AccessibleBathtubs = 2062,
AccessibleElevators = 2067,
AccessibleLightSwitch = 2066,
AccessibleRoomsAtHotel1 = 2659,
AccessibleRoomsAtHotel2 = 3010,
AccessibleToilets = 2068,
AccessibleWashBasins = 2063,
AdaptedRoomDoors = 2080,
AdjoiningConventionCentre = 1560,
AirConAirCooling = 2660,
AirConditioningInRoom = 5763,
AirportMaxDistance8Km = 1856,
AlarmsContinuouslyMonitored = 1876,
AlarmsHaveStrobeLightsForDeafHardHearingInAllGuestRooms = 1877,
AlarmsHaveStrobeLightsForDeafHardHearingInAllHallways = 1878,
AlarmsHaveStrobeLightsForDeafHardHearingInAllPublicAreas = 1879,
AllAudibleSmokeAlarmsHardwired = 1884,
AllExteriorDoorsRequireKeyAccessAtNightOrAutomaticallyLock = 2004,
AllGuestRoomDoorsHaveViewports = 2006,
AllGuestRoomDoorsSelfClosing = 2007,
AllParkingAreasPatrolled = 1933,
AllParkingAreasWellLit = 2013,
AllStairsWellsVentilated = 2053,
ArmchairBed = 104126,
AudibleAlarms = 1880,
AudibleSmokeAlarmsInAllHalls = 1881,
AudibleSmokeAlarmsInAllPublicAreas = 1882,
AudibleSmokeAlarmsInAllRooms = 1883,
AudioVisualEquipmentAvailable = 961,
AutolinkFireDepartment = 1886,
AutomatedExternalDefibrillatorOnSiteAED = 1917,
AutomaticFireDoors = 1887,
AutoRecallElevators = 1885,
BalconiesAccessibleToAdjoiningRooms = 1962,
Ballroom = 1609,
Banquet = 1557,
Bar = 1014,
BasicMedicalEquipmentOnSite = 1920,
BathroomsAdaptedForDisabledGuests = 2064,
Beach = 1827,
Beach0To1Km = 1019,
BeautySalon = 1015,
BedroomsWithWheelchairAccess = 2081,
BikesForLoan = 5550,
Bowling = 185105,
BrailleLargePrintHotelLiterature = 2069,
BrailleLargePrintMenus = 2070,
Breakfast = 5807,
Business1 = 1385,
Business2 = 83715,
BusinessCentre = 962,
Cafe = 1381,
CashFree8pmTill6am = 327877,
CashFreeHotel = 345180,
ChildrenWelcome = 1828,
City = 1857,
CoffeeInReceptionAtCharge = 332224,
CoffeeShop = 956,
CoffeeTeaFacilities = 5776,
ColourTVInRoomsAllScandicHotels = 5773,
ComplimentaryColdRefreshments = 157965,
CongressHall = 1558,
ConventionCentre = 963,
Couples = 2663,
DeadboltsOnConnectingDoors = 1990,
DeadboltsSecondaryLocksOnAllGuestRoomDoors = 1985,
Defibrillator = 99872,
Desk = 5777,
DirectDialPhoneInRoomsAllScandic = 5772,
DisabledEmergencyPlan1 = 1888,
DisabledEmergencyPlan2 = 2074,
DisabledParking = 2072,
DiscoNightClub = 958,
DJLiveMusic = 162587,
DO_NOT_USE_Restaurant = 1377,
Downtown = 969,
DrinkableTapWater = 5553,
DVDPlayer = 5778,
EBikesChargingStation = 265711,
ElectronicKeyCards = 1994,
Elevator = 959,
EmergencyBackUpGenerators = 1889,
EmergencyCallButtonOnPhone = 1998,
EmergencyCodesOrButtonsInRooms = 2075,
EmergencyEvacuationPlan1 = 1890,
EmergencyEvacuationPlan2 = 1895,
EmergencyEvaluationDrillFrequency = 1896,
EmergencyInfoInAllRooms = 1897,
EmergencyLightingAllScandic = 952,
EmergencyLightningInAllPublicAreas = 1898,
EmergencyServiceResponseTimeInMinutes = 1899,
Entertainment = 970,
EventVenue = 1559,
ExchangeFacility = 1605,
ExitMapsInRooms = 1900,
ExitSignsLit = 1901,
ExtraFamilyFriendly = 242920,
Families = 2664,
FaxFacilityInRoom = 5764,
Financial = 1409,
FireDetectorsAllScandic = 1869,
FireDetectorsInAllHalls = 1903,
FireDetectorsInAllPublicAreas = 1905,
FireDetectorsInAllRooms = 1906,
FireExtinguishersInAllPublicAreas = 1907,
FireExtinguishersInPublicAreasAllScandic = 1870,
FireSafetyAllScandic = 1871,
FirstAidAvailable = 1915,
FoodDrinks247 = 324100,
FreeWiFi = 1833,
GiftShop = 1376,
Golf = 1016,
GolfCourse0To30Km = 1607,
GuestRoomDoorsHaveASecondLock = 2005,
Gym = 1829,
GymTrainingFacilities = 2669,
Hairdresser = 348860,
HairdryerInRoomAllScandic = 5765,
HandicapFacilities = 2076,
HandrailsInBathrooms = 2078,
HearingInductionLoops = 2077,
Highway1 = 1858,
Highway2 = 1864,
Hiking0To3Km = 239346,
HotelCompliesWithAAASecurityStandards = 2011,
HotelIsFollowingScandicsSafetySecurityPolicy = 5559,
HotelWorksAccordingToScandicsAccessibilityConcepts = 5560,
IceMachine = 1405,
IceMachineReception = 332194,
IDRequiredToReplaceAGuestRoomKey = 2024,
IfNoWhatAreTheHoursUse24ClockEx0000To0600 = 1912,
InCountry = 1867,
IndustrialPark = 1859,
InternetHighSpeedInternetConnectionAllScandic = 5804,
InternetHotSpotsAllScandic = 1832,
IroningRoom = 238849,
IronIroningBoardAllScandic = 5780,
Jacuzzi = 162573,
JacuzziInRoom = 5766,
KayaksForLoan = 162585,
KeyAccessOnlySecuredFloorsAvailable = 2050,
KeyAccessOnlyToHealthClubGym = 2061,
KidsPlayRoom = 239349,
KidsUpToAndIncluding12YearsStayForFree = 5561,
KitchenInRoom = 5767,
Lake0To1Km = 1865,
LakeOrSea0To1Km = 245437,
LaptopSafe = 5283,
LateCheckOutUntil1400Guaranteed = 324101,
LaundryRoom = 326031,
LaundryService = 1834,
LaundryServiceExpress = 162583,
Leisure = 83716,
LifestyleConcierge = 162584,
LuggageLockers = 324098,
LuggageStorageAdditionalCost = 375884,
LuggageStorageNoCost = 375885,
Massage = 348859,
MeetingArea = 1692,
MeetingConferenceFacilities = 5806,
MeetingRooms = 1017,
MinibarInRoom = 5768,
MobileLift = 113185,
Mountains0To1Km = 1866,
MovieChannelsInRoomAllScandic = 5770,
MultipleExitsOnEachFloor = 2012,
NonSmokingRoomsAllScandic = 5771,
OnSiteTrainingFacilities = 3014,
OtherExplainInBriefDescription = 1608,
OutdoorTerrace = 1382,
OvernightSecurity = 1913,
ParkingAdditionalCost = 1406,
ParkingAttendant = 1914,
ParkingElectricCharging = 5554,
ParkingFreeParking = 5562,
ParkingGarage = 2665,
ParkingOutdoor = 162574,
PCHookUpInRoom = 5769,
PetFriendlyRooms = 1835,
PillowAlarmsAvailable = 2079,
PlayStationInPlayArea = 175449,
Pool = 1831,
PoolSwimmingPoolJacuzziAtHotel = 2667,
PrintingService = 1380,
PropertyMeetsRequirementsFireSafety = 1875,
PublicAddressSystem = 2014,
RelaxationSuite = 5564,
Restaurant = 1383,
RestrictedRoomAccessAllScandic = 1872,
RooftopBar = 239348,
RoomsAccessibleFromTheInterior = 950,
RoomService = 1378,
RoomWindowsOpen = 2016,
RoomWindowsThatOpenHaveLockingDevice = 2020,
Rural1 = 1861,
Rural2 = 1868,
SafeDepositBoxInRoomsAllScandic = 5775,
SafeDepositBoxInRoomsCanHoldA17InchLaptop = 200124,
SafeDepositBoxInRoomsCannotHoldALaptop = 200123,
SafetyChainsOnGuestRoomDoor = 2047,
Sauna = 1379,
ScandicShop24Hrs = 1408,
SecondaryLocksOnSlidingGlassDoors = 2048,
SecondaryLocksOnWindows = 2049,
Security24Hours = 1911,
SecurityEscortsAvailableOnRequest = 1936,
SecurityPersonnelOnSite = 1934,
SeparateFloorsForWomen = 2051,
ServesBreakfastAlwaysIncluded = 1407,
ServesBreakfastNotAlwaysIncluded = 5556,
ServesOrganicBreakfastAlwaysIncluded = 5557,
ServesOrganicBreakfastNotAlwaysIncluded = 5558,
ServiceGuideDogsAllowed = 2071,
ServiceSecurity24Hrs = 326033,
Shopping = 971,
SkateboardsForLoan = 162586,
Skiing0To1Km = 245031,
Skybar = 1606,
SmokeDetectorsAllScandic = 1873,
Solarium = 1830,
SpecialNeedsMenus = 2082,
Sports = 83717,
SprinklersAllScandic = 1874,
SprinklersInAllHalls = 1908,
SprinklersInAllPublicAreas = 1909,
SprinklersInAllRooms = 1910,
StaffInDuplicateKeys = 1942,
StaffRedCrossCertifiedInCPR = 1941,
StaffTrainedForDisabledGuests = 1928,
StaffTrainedInAutomatedExternalDefibrillatorUsageAED = 1940,
StaffTrainedInCPR = 1923,
StaffTrainedInFirstAid = 1939,
StaffTrainedInFirstAidTechniques = 951,
StaffTrainedToCaterForDisabledGuestsAllScandic = 2073,
Suburbs = 1860,
SwingboltLock = 2052,
TeleConferencingFacilitiesAvailable = 1018,
TelevisionsWithSubtitlesOrClosedCaptions = 2083,
Tennis1 = 1836,
Tennis2 = 1838,
TennisPadel = 239350,
Theatre = 1862,
TrouserPress = 5779,
TVWithChromecast1 = 229127,
TVWithChromecast2 = 229144,
UniformSecurityOnPremises = 1935,
UtilityRoomForIroning = 324097,
VendingMachineWithNecessities = 324099,
VideoSurveillanceInHallways = 2056,
VideoSurveillanceInPublicAreas = 1386,
VideoSurveillanceMonitored24HrsADay = 2058,
VideoSurveillanceOfAllParkingAreas = 2055,
VideoSurveillanceOfExteriorFrontEntrance = 2054,
VideoSurveillanceRecorded24HrsADayParkingArea = 2059,
WallMountedCycleRack = 199642,
WellLitWalkways = 2060,
WellnessAndSaunaEntranceFeeAdmission16PlusYears = 267806,
WellnessPoolSaunaEntranceFeeAdmission16PlusYears = 307754,
WheelchairAccess = 2084,
WideCorridors = 2086,
WideEntrance = 2085,
WideRestaurantEntrance = 2087,
WiFiWirelessInternetAccessAllScandic = 5774,
}

View File

@@ -0,0 +1,5 @@
export enum HotelTypeEnum {
Signature = "signature",
ScandicGo = "scandicgo",
Regular = "regular",
}

View File

@@ -0,0 +1,16 @@
export namespace LoyaltyPageEnum {
export namespace ContentStack {
export const enum blocks {
CardsGrid = "LoyaltyPageBlocksCardsGrid",
Content = "LoyaltyPageBlocksContent",
DynamicContent = "LoyaltyPageBlocksDynamicContent",
Shortcuts = "LoyaltyPageBlocksShortcuts",
}
export const enum sidebar {
Content = "LoyaltyPageSidebarContent",
DynamicContent = "LoyaltyPageSidebarDynamicContent",
JoinLoyaltyContact = "LoyaltyPageSidebarJoinLoyaltyContact",
}
}
}

View File

@@ -0,0 +1,7 @@
export enum PackageTypeEnum {
AccessibleFriendlyRoom = "AccessibleFriendlyRoom",
AllergyRoom = "AllergyRoom",
BreakfastAdult = "BreakfastAdult",
BreakfastChildren = "BreakfastChildren",
PetRoom = "PetRoom",
}

View File

@@ -0,0 +1,8 @@
export enum PointOfInterestGroupEnum {
PUBLIC_TRANSPORT = "Public transport",
ATTRACTIONS = "Attractions",
BUSINESS = "Business",
LOCATION = "Location",
PARKING = "Parking",
SHOPPING_DINING = "Shopping & Dining",
}

View File

@@ -0,0 +1,5 @@
export enum RateEnum {
change = "change",
flex = "flex",
save = "save",
}

View File

@@ -0,0 +1,13 @@
// API keeps calling CorporateCheque BonusCheque
// (will be handled in transform later)
export enum RateTypeEnum {
Arb = "Arb",
Company = "Company",
CorporateCheque = "BonusCheque",
Promotion = "Promotion",
PublicPromotion = "PublicPromotion",
Redemption = "Redemption",
Regular = "Regular",
TravelAgent = "TravelAgent",
Voucher = "Voucher",
}

View File

@@ -0,0 +1,5 @@
export enum RoomPackageCodeEnum {
PET_ROOM = "PETR",
ALLERGY_ROOM = "ALLG",
ACCESSIBILITY_ROOM = "ACCE",
}

View File

@@ -0,0 +1,9 @@
export enum scriptedCardThemeEnum {
one = "one",
two = "two",
three = "three",
primaryDim = "primaryDim",
primaryDark = "primaryDark",
primaryInverted = "primaryInverted",
primaryStrong = "primaryStrong",
}

View File

@@ -0,0 +1,4 @@
export enum AvailabilityEnum {
Available = "Available",
NotAvailable = "NotAvailable",
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment AccountPageRef on AccountPage {
system {
...System
}
}

View File

@@ -0,0 +1,127 @@
#import "./PageLink/AccountPageLink.graphql"
#import "./PageLink/CampaignPageLink.graphql"
#import "./PageLink/CollectionPageLink.graphql"
#import "./PageLink/ContentPageLink.graphql"
#import "./PageLink/DestinationCityPageLink.graphql"
#import "./PageLink/DestinationCountryPageLink.graphql"
#import "./PageLink/DestinationOverviewPageLink.graphql"
#import "./PageLink/HotelPageLink.graphql"
#import "./PageLink/LoyaltyPageLink.graphql"
#import "./PageLink/StartPageLink.graphql"
#import "./AccountPage/Ref.graphql"
#import "./CampaignPage/Ref.graphql"
#import "./CollectionPage/Ref.graphql"
#import "./ContentPage/Ref.graphql"
#import "./DestinationCityPage/Ref.graphql"
#import "./DestinationCountryPage/Ref.graphql"
#import "./DestinationOverviewPage/Ref.graphql"
#import "./HotelPage/Ref.graphql"
#import "./LoyaltyPage/Ref.graphql"
#import "./StartPage/Ref.graphql"
fragment Alert on Alert {
type
heading
text
phone_contact {
display_text
phone_number
footnote
}
has_link
link {
title
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
has_sidepeek_button
sidepeek_button {
cta_text
}
sidepeek_content {
heading
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
json
}
}
}
fragment AlertRef on Alert {
link {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
sidepeek_content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
json
}
}
system {
...System
}
}

View File

@@ -0,0 +1,14 @@
#import "../Contact.graphql"
fragment ContactAside on CurrentBlocksPageAsideContact {
contact {
contactConnection {
edges {
node {
...Contact
}
}
totalCount
}
}
}

View File

@@ -0,0 +1,7 @@
#import "../Puff.graphql"
fragment PuffAside on CurrentBlocksPageAsidePuff {
puff {
...Puff
}
}

View File

@@ -0,0 +1,493 @@
#import "../SysAsset.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
#import "./Refs/Accordion.graphql"
fragment AccordionBlock on Accordion {
__typename
title
questions {
question
answer {
json
embedded_itemsConnection {
edges {
node {
...SysAsset
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment GlobalAccordionBlock on GlobalAccordion {
__typename
questions {
question
answer {
json
embedded_itemsConnection {
edges {
node {
__typename
...SysAsset
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment Accordion_ContentPage on ContentPageBlocksAccordion {
__typename
accordion {
title
accordions {
__typename
...GlobalAccordion_ContentPage
...SpecificAccordion_ContentPage
}
}
}
fragment GlobalAccordion_ContentPage on ContentPageBlocksAccordionBlockAccordionsGlobalAccordion {
__typename
global_accordion {
global_accordionConnection {
edges {
node {
...AccordionBlock
}
}
}
}
}
fragment SpecificAccordion_ContentPage on ContentPageBlocksAccordionBlockAccordionsSpecificAccordion {
__typename
specific_accordion {
questions {
question
answer {
json
embedded_itemsConnection {
edges {
node {
__typename
...SysAsset
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
}
fragment Accordion_ContentPageRefs on ContentPageBlocksAccordion {
accordion {
accordions {
__typename
...GlobalAccordion_ContentPageRefs
...SpecificAccordion_ContentPageRefs
}
}
}
fragment GlobalAccordion_ContentPageRefs on ContentPageBlocksAccordionBlockAccordionsGlobalAccordion {
global_accordion {
global_accordionConnection {
edges {
node {
...AccordionBlockRefs
}
}
}
}
}
fragment SpecificAccordion_ContentPageRefs on ContentPageBlocksAccordionBlockAccordionsSpecificAccordion {
specific_accordion {
questions {
answer {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
}
fragment Accordion_DestinationCityPage on DestinationCityPageBlocksAccordion {
__typename
accordion {
title
accordions {
__typename
...GlobalAccordion_DestinationCityPage
...SpecificAccordion_DestinationCityPage
}
}
}
fragment GlobalAccordion_DestinationCityPage on DestinationCityPageBlocksAccordionBlockAccordionsGlobalAccordion {
__typename
global_accordion {
global_accordionConnection {
edges {
node {
...AccordionBlock
}
}
}
}
}
fragment SpecificAccordion_DestinationCityPage on DestinationCityPageBlocksAccordionBlockAccordionsSpecificAccordion {
__typename
specific_accordion {
questions {
question
answer {
json
embedded_itemsConnection {
edges {
node {
__typename
...SysAsset
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
}
fragment Accordion_DestinationCityPageRefs on DestinationCityPageBlocksAccordion {
accordion {
accordions {
__typename
...GlobalAccordion_DestinationCityPageRefs
...SpecificAccordion_DestinationCityPageRefs
}
}
}
fragment GlobalAccordion_DestinationCityPageRefs on DestinationCityPageBlocksAccordionBlockAccordionsGlobalAccordion {
global_accordion {
global_accordionConnection {
edges {
node {
...AccordionBlockRefs
}
}
}
}
}
fragment SpecificAccordion_DestinationCityPageRefs on DestinationCityPageBlocksAccordionBlockAccordionsSpecificAccordion {
specific_accordion {
questions {
answer {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
}
fragment Accordion_DestinationCountryPage on DestinationCountryPageBlocksAccordion {
__typename
accordion {
title
accordions {
__typename
...GlobalAccordion_DestinationCountryPage
...SpecificAccordion_DestinationCountryPage
}
}
}
fragment GlobalAccordion_DestinationCountryPage on DestinationCountryPageBlocksAccordionBlockAccordionsGlobalAccordion {
__typename
global_accordion {
global_accordionConnection {
edges {
node {
...AccordionBlock
}
}
}
}
}
fragment SpecificAccordion_DestinationCountryPage on DestinationCountryPageBlocksAccordionBlockAccordionsSpecificAccordion {
__typename
specific_accordion {
questions {
question
answer {
json
embedded_itemsConnection {
edges {
node {
__typename
...SysAsset
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
}
fragment Accordion_DestinationCountryPageRefs on DestinationCountryPageBlocksAccordion {
accordion {
accordions {
__typename
...GlobalAccordion_DestinationCountryPageRefs
...SpecificAccordion_DestinationCountryPageRefs
}
}
}
fragment GlobalAccordion_DestinationCountryPageRefs on DestinationCountryPageBlocksAccordionBlockAccordionsGlobalAccordion {
global_accordion {
global_accordionConnection {
edges {
node {
...AccordionBlockRefs
}
}
}
}
}
fragment SpecificAccordion_DestinationCountryPageRefs on DestinationCountryPageBlocksAccordionBlockAccordionsSpecificAccordion {
specific_accordion {
questions {
answer {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
}
fragment Accordion_CampaignPage on CampaignPageBlocksAccordion {
__typename
accordion {
title
accordions {
__typename
...GlobalAccordion_CampaignPage
...SpecificAccordion_CampaignPage
}
}
}
fragment GlobalAccordion_CampaignPage on CampaignPageBlocksAccordionBlockAccordionsGlobalAccordion {
__typename
global_accordion {
global_accordionConnection {
edges {
node {
...AccordionBlock
}
}
}
}
}
fragment SpecificAccordion_CampaignPage on CampaignPageBlocksAccordionBlockAccordionsSpecificAccordion {
__typename
specific_accordion {
questions {
question
answer {
json
embedded_itemsConnection {
edges {
node {
__typename
...SysAsset
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
}
fragment Accordion_CampaignPageRefs on CampaignPageBlocksAccordion {
accordion {
accordions {
__typename
...GlobalAccordion_CampaignPageRefs
...SpecificAccordion_CampaignPageRefs
}
}
}
fragment GlobalAccordion_CampaignPageRefs on CampaignPageBlocksAccordionBlockAccordionsGlobalAccordion {
global_accordion {
global_accordionConnection {
edges {
node {
...AccordionBlockRefs
}
}
}
}
}
fragment SpecificAccordion_CampaignPageRefs on CampaignPageBlocksAccordionBlockAccordionsSpecificAccordion {
specific_accordion {
questions {
answer {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
}

View File

@@ -0,0 +1,77 @@
#import "../System.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
fragment CardBlock on Card {
background_image
body_text
has_primary_button
has_secondary_button
heading
scripted_top_title
title
primary_button {
cta_text
is_contentstack_link
open_in_new_tab
external_link {
href
title
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
secondary_button {
cta_text
is_contentstack_link
open_in_new_tab
external_link {
href
title
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,100 @@
#import "../System.graphql"
#import "./ContentCard.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment CardGallery_DestinationOverviewPage on DestinationOverviewPageBlocksCardGallery {
card_gallery {
heading
card_groups {
filter_identifier
filter_label
cardsConnection {
edges {
node {
...ContentCardBlock
}
}
}
}
link {
cta_text
is_contentstack_link
open_in_new_tab
external_link {
href
title
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment CardGallery_DestinationOverviewPageRefs on DestinationOverviewPageBlocksCardGallery {
card_gallery {
card_groups {
cardsConnection {
edges {
node {
...ContentCardBlockRef
}
}
}
}
link {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}

View File

@@ -0,0 +1,141 @@
#import "./Card.graphql"
#import "./InfoCard.graphql"
#import "./LoyaltyCard.graphql"
#import "./TeaserCard.graphql"
#import "./Refs/Card.graphql"
#import "./Refs/InfoCard.graphql"
#import "./Refs/LoyaltyCard.graphql"
#import "./Refs/TeaserCard.graphql"
fragment CardsGrid_ContentPage on ContentPageBlocksCardsGrid {
cards_grid {
layout
preamble
theme
title
cardConnection(limit: 10) {
edges {
node {
__typename
...CardBlock
...LoyaltyCardBlock
...TeaserCardBlock
}
}
}
}
}
fragment CardsGrid_ContentPageRefs on ContentPageBlocksCardsGrid {
cards_grid {
cardConnection(limit: 10) {
edges {
node {
__typename
...CardBlockRef
...LoyaltyCardBlockRef
...TeaserCardBlockRef
}
}
}
}
}
fragment CardsGrid_CollectionPage on CollectionPageBlocksCardsGrid {
cards_grid {
layout
preamble
theme
title
cardConnection(limit: 10) {
edges {
node {
__typename
...CardBlock
...TeaserCardBlock
}
}
}
}
}
fragment CardsGrid_CollectionPageRefs on CollectionPageBlocksCardsGrid {
cards_grid {
cardConnection(limit: 10) {
edges {
node {
__typename
...CardBlockRef
...TeaserCardBlockRef
}
}
}
}
}
fragment CardsGrid_LoyaltyPage on LoyaltyPageBlocksCardsGrid {
cards_grid {
layout
preamble
theme
title
cardConnection(limit: 10) {
edges {
node {
__typename
...CardBlock
...LoyaltyCardBlock
}
}
}
}
}
fragment CardsGrid_LoyaltyPageRefs on LoyaltyPageBlocksCardsGrid {
cards_grid {
cardConnection(limit: 10) {
edges {
node {
__typename
...CardBlockRef
...LoyaltyCardBlockRef
}
}
}
}
}
fragment CardsGrid_StartPage on StartPageBlocksCardsGrid {
cards_grid {
layout
preamble
theme
title
cardConnection(limit: 10) {
edges {
node {
__typename
...CardBlock
...TeaserCardBlock
...InfoCardBlock
}
}
}
}
}
fragment CardsGrid_StartPageRefs on StartPageBlocksCardsGrid {
cards_grid {
cardConnection(limit: 10) {
edges {
node {
__typename
...CardBlockRef
...TeaserCardBlockRef
...InfoCardBlockRef
}
}
}
}
}

View File

@@ -0,0 +1,131 @@
#import "../System.graphql"
#import "./ContentCard.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
fragment CarouselCards_StartPage on StartPageBlocksCarouselCards {
carousel_cards {
heading
enable_filters
card_groups {
filter_label
filter_identifier
cardConnection {
edges {
node {
...ContentCardBlock
}
}
}
}
link {
cta_text
is_contentstack_link
open_in_new_tab
external_link {
href
title
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
}
}
}
}
}
}
fragment CarouselCards_StartPageRefs on StartPageBlocksCarouselCards {
carousel_cards {
card_groups {
cardConnection {
edges {
node {
...ContentCardBlockRef
}
}
}
}
link {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
}
}
}
}
}
}
fragment CarouselCards_CampaignPage on CampaignPageBlocksCarouselCards {
carousel_cards {
heading
enable_filters
card_groups {
filter_label
filter_identifier
cardConnection {
edges {
node {
...ContentCardBlock
}
}
}
}
}
}
fragment CarouselCards_CampaignPageRefs on CampaignPageBlocksCarouselCards {
carousel_cards {
card_groups {
cardConnection {
edges {
node {
...ContentCardBlockRef
}
}
}
}
}
}

View File

@@ -0,0 +1,224 @@
#import "../SysAsset.graphql"
#import "../ImageContainer.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment Content_ContentPage on ContentPageBlocksContent {
content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...SysAsset
...ImageContainer
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
json
}
}
}
fragment Content_ContentPageRefs on ContentPageBlocksContent {
content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
fragment Content_LoyaltyPage on LoyaltyPageBlocksContent {
content {
content {
json
embedded_itemsConnection {
edges {
node {
__typename
...SysAsset
...ImageContainer
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment Content_LoyaltyPageRefs on LoyaltyPageBlocksContent {
content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
fragment Content_DestinationCityPage on DestinationCityPageBlocksContent {
content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
json
}
}
}
fragment Content_DestinationCityPageRefs on DestinationCityPageBlocksContent {
content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
fragment Content_DestinationCountryPage on DestinationCountryPageBlocksContent {
content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
json
}
}
}
fragment Content_DestinationCountryPageRefs on DestinationCountryPageBlocksContent {
content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}

View File

@@ -0,0 +1,87 @@
#import "../System.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment ContentCardBlock on ContentCard {
__typename
title
heading
image
body_text
has_card_link
promo_text
card_link {
is_contentstack_link
open_in_new_tab
external_link {
href
title
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
system {
...System
}
}
fragment ContentCardBlockRef on ContentCard {
__typename
card_link {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,229 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment DynamicContent_AccountPage on AccountPageContentDynamicContent {
dynamic_content {
component
subtitle: preamble
title
link {
text: link_text
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment DynamicContent_AccountPageRefs on AccountPageContentDynamicContent {
dynamic_content {
link {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
fragment DynamicContent_CollectionPage on CollectionPageBlocksDynamicContent {
dynamic_content {
component
subtitle
title
link {
text
linkConnection: pageConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment DynamicContent_CollectionPageRefs on CollectionPageBlocksDynamicContent {
dynamic_content {
link {
linkConnection: pageConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
fragment DynamicContent_ContentPage on ContentPageBlocksDynamicContent {
dynamic_content {
component
subtitle
title
link {
text
linkConnection: pageConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment DynamicContent_ContentPageRefs on ContentPageBlocksDynamicContent {
dynamic_content {
link {
linkConnection: pageConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
fragment DynamicContent_LoyaltyPage on LoyaltyPageBlocksDynamicContent {
dynamic_content {
component
subtitle
title
link {
text
linkConnection: pageConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment DynamicContent_LoyaltyPageRefs on LoyaltyPageBlocksDynamicContent {
dynamic_content {
link {
linkConnection: pageConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
fragment Essentials_CampaignPage on CampaignPageBlocksEssentials {
essentials {
title
preamble
items {
label
icon_identifier
description
}
}
}

View File

@@ -0,0 +1,123 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
fragment FullWidthCampaign on FullWidthCampaign {
background_image
scripted_top_title
heading
body_text
has_primary_button
primary_button {
cta_text
open_in_new_tab
is_contentstack_link
external_link {
href
title
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
}
}
}
}
has_secondary_button
secondary_button {
cta_text
open_in_new_tab
is_contentstack_link
external_link {
href
title
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
}
}
}
}
system {
...System
}
}
fragment FullWidthCampaignRefs on FullWidthCampaign {
primary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
}
}
}
}
secondary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,31 @@
fragment HotelListing on HotelListing {
heading
location_filter {
city_denmark
city_finland
city_germany
city_norway
city_poland
city_sweden
country
excluded
}
manual_filter {
hotels
}
content_type
}
fragment HotelListing_ContentPage on ContentPageBlocksHotelListing {
__typename
hotel_listing {
...HotelListing
}
}
fragment HotelListing_CampaignPage on CampaignPageBlocksHotelListing {
hotel_listing {
heading
}
}

View File

@@ -0,0 +1,77 @@
#import "../System.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
fragment InfoCardBlock on InfoCard {
scripted_top_title
heading
body_text
image
title
theme
primary_button {
is_contentstack_link
cta_text
open_in_new_tab
external_link {
title
href
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
secondary_button {
is_contentstack_link
cta_text
open_in_new_tab
external_link {
title
href
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,81 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
fragment JoinScandicFriends_StartPage on StartPageBlocksJoinScandicFriends {
__typename
join_scandic_friends {
show_header
scripted_top_title
title
preamble
image
show_usp
usp
has_primary_button
primary_button {
cta_text
open_in_new_tab
is_contentstack_link
external_link {
href
title
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
}
}
}
}
}
}
fragment JoinScandicFriends_StartPageRefs on StartPageBlocksJoinScandicFriends {
join_scandic_friends {
primary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
}
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
fragment ListItem on CurrentBlocksPageBlocksListBlockListItemsListItem {
list_item {
list_item_style
subtitle
title
}
}
fragment ListItemExternalLink on CurrentBlocksPageBlocksListBlockListItemsListItemExternalLink {
list_item_external_link {
link {
href
title
}
list_item_style
subtitle
}
}
fragment ListBlock on CurrentBlocksPageBlocksList {
list {
list_items {
__typename
...ListItem
...ListItemExternalLink
}
title
}
}

View File

@@ -0,0 +1,48 @@
#import "../System.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
fragment LoyaltyCardBlock on LoyaltyCard {
body_text
heading
image
title
link {
cta_text
open_in_new_tab
is_contentstack_link
external_link {
title
href
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,13 @@
#import "../Puff.graphql"
fragment PuffBlock on CurrentBlocksPageBlocksPuffs {
puffs {
puffs {
... on CurrentBlocksPageBlocksPuffsBlockPuffsPuff {
puff {
...Puff
}
}
}
}
}

View File

@@ -0,0 +1,58 @@
#import "../../AccountPage/Ref.graphql"
#import "../../CampaignPage/Ref.graphql"
#import "../../CollectionPage/Ref.graphql"
#import "../../ContentPage/Ref.graphql"
#import "../../DestinationCityPage/Ref.graphql"
#import "../../DestinationCountryPage/Ref.graphql"
#import "../../DestinationOverviewPage/Ref.graphql"
#import "../../HotelPage/Ref.graphql"
#import "../../LoyaltyPage/Ref.graphql"
#import "../../StartPage/Ref.graphql"
fragment AccordionBlockRefs on Accordion {
questions {
answer {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
fragment GlobalAccordionBlockRefs on GlobalAccordion {
questions {
answer {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}

View File

@@ -0,0 +1,54 @@
#import "../../AccountPage/Ref.graphql"
#import "../../CampaignPage/Ref.graphql"
#import "../../CollectionPage/Ref.graphql"
#import "../../ContentPage/Ref.graphql"
#import "../../DestinationCityPage/Ref.graphql"
#import "../../DestinationCountryPage/Ref.graphql"
#import "../../DestinationOverviewPage/Ref.graphql"
#import "../../HotelPage/Ref.graphql"
#import "../../LoyaltyPage/Ref.graphql"
#import "../../StartPage/Ref.graphql"
fragment CardBlockRef on Card {
secondary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
primary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,54 @@
#import "../../AccountPage/Ref.graphql"
#import "../../CampaignPage/Ref.graphql"
#import "../../CollectionPage/Ref.graphql"
#import "../../ContentPage/Ref.graphql"
#import "../../DestinationCityPage/Ref.graphql"
#import "../../DestinationCountryPage/Ref.graphql"
#import "../../DestinationOverviewPage/Ref.graphql"
#import "../../HotelPage/Ref.graphql"
#import "../../LoyaltyPage/Ref.graphql"
#import "../../StartPage/Ref.graphql"
fragment InfoCardBlockRef on InfoCard {
secondary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
primary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,35 @@
#import "../../AccountPage/Ref.graphql"
#import "../../CampaignPage/Ref.graphql"
#import "../../CollectionPage/Ref.graphql"
#import "../../ContentPage/Ref.graphql"
#import "../../DestinationCityPage/Ref.graphql"
#import "../../DestinationCountryPage/Ref.graphql"
#import "../../DestinationOverviewPage/Ref.graphql"
#import "../../HotelPage/Ref.graphql"
#import "../../LoyaltyPage/Ref.graphql"
#import "../../StartPage/Ref.graphql"
fragment LoyaltyCardBlockRef on LoyaltyCard {
link {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,113 @@
#import "../../AccountPage/Ref.graphql"
#import "../../CampaignPage/Ref.graphql"
#import "../../CollectionPage/Ref.graphql"
#import "../../ContentPage/Ref.graphql"
#import "../../DestinationCityPage/Ref.graphql"
#import "../../DestinationCountryPage/Ref.graphql"
#import "../../DestinationOverviewPage/Ref.graphql"
#import "../../HotelPage/Ref.graphql"
#import "../../LoyaltyPage/Ref.graphql"
#import "../../StartPage/Ref.graphql"
fragment TeaserCardBlockRef on TeaserCard {
secondary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
primary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
sidepeek_content {
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
primary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
secondary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,118 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment Shortcuts on Shortcuts {
subtitle: preamble
title
two_column_list
shortcuts {
open_in_new_tab
text
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
fragment Shortcuts_AccountPage on AccountPageContentShortcuts {
shortcuts {
...Shortcuts
}
}
fragment Shortcuts_CollectionPage on CollectionPageBlocksShortcuts {
shortcuts {
...Shortcuts
}
}
fragment Shortcuts_ContentPage on ContentPageBlocksShortcuts {
shortcuts {
...Shortcuts
}
}
fragment Shortcuts_LoyaltyPage on LoyaltyPageBlocksShortcuts {
shortcuts {
...Shortcuts
}
}
fragment ShortcutsRefs on Shortcuts {
shortcuts {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
fragment Shortcuts_AccountPageRefs on AccountPageContentShortcuts {
shortcuts {
...ShortcutsRefs
}
}
fragment Shortcuts_CollectionPageRefs on CollectionPageBlocksShortcuts {
shortcuts {
...ShortcutsRefs
}
}
fragment Shortcuts_ContentPageRefs on ContentPageBlocksShortcuts {
shortcuts {
...ShortcutsRefs
}
}
fragment Shortcuts_LoyaltyPageRefs on LoyaltyPageBlocksShortcuts {
shortcuts {
...ShortcutsRefs
}
}

View File

@@ -0,0 +1,9 @@
fragment Table_ContentPage on ContentPageBlocksTable {
__typename
table {
heading
preamble
column_widths
table
}
}

View File

@@ -0,0 +1,157 @@
#import "../System.graphql"
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
fragment TeaserCardBlock on TeaserCard {
heading
body_text
image
title
has_primary_button
has_secondary_button
has_sidepeek_button
primary_button {
is_contentstack_link
cta_text
open_in_new_tab
external_link {
title
href
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
secondary_button {
is_contentstack_link
cta_text
open_in_new_tab
external_link {
title
href
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
sidepeek_button {
call_to_action_text
}
sidepeek_content {
heading
content {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
json
}
has_primary_button
primary_button {
is_contentstack_link
cta_text
open_in_new_tab
external_link {
title
href
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
has_secondary_button
secondary_button {
is_contentstack_link
cta_text
open_in_new_tab
external_link {
title
href
}
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,18 @@
#import "../SysAsset.graphql"
fragment TextBlock on CurrentBlocksPageBlocksText {
text {
content {
embedded_itemsConnection {
totalCount
edges {
node {
__typename
...SysAsset
}
}
}
json
}
}
}

View File

@@ -0,0 +1,77 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment TextCols_ContentPage on ContentPageBlocksTextCols {
text_cols {
columns {
title
text {
json
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
}
fragment TextCols_ContentPageRef on ContentPageBlocksTextCols {
text_cols {
columns {
title
text {
json
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
}

View File

@@ -0,0 +1,18 @@
#import "../SysAsset.graphql"
fragment TextContent_AccountPage on AccountPageContentTextContent {
text_content {
content {
json
embedded_itemsConnection {
totalCount
edges {
node {
__typename
...SysAsset
}
}
}
}
}
}

View File

@@ -0,0 +1,165 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment UspGrid_ContentPage on ContentPageBlocksUspGrid {
__typename
usp_grid {
cardsConnection {
edges {
node {
... on UspGrid {
usp_card {
__typename
icon
text {
embedded_itemsConnection {
totalCount
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
json
}
}
}
}
}
}
}
}
fragment UspGrid_ContentPageRefs on ContentPageBlocksUspGrid {
usp_grid {
cardsConnection {
edges {
node {
... on UspGrid {
usp_card {
text {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
}
}
}
}
}
fragment UspGrid_CollectionPage on CollectionPageBlocksUspGrid {
__typename
usp_grid {
cardsConnection {
edges {
node {
... on UspGrid {
usp_card {
__typename
icon
text {
embedded_itemsConnection {
totalCount
edges {
node {
__typename
...AccountPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
json
}
}
}
}
}
}
}
}
fragment UspGrid_CollectionPageRefs on CollectionPageBlocksUspGrid {
usp_grid {
cardsConnection {
edges {
node {
... on UspGrid {
usp_card {
text {
embedded_itemsConnection {
edges {
node {
__typename
...AccountPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}
}
}
}
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment AccountPageBreadcrumb on AccountPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment AccountPageBreadcrumbRef on AccountPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,52 @@
#import "./AccountPage.graphql"
#import "./CampaignOverviewPage.graphql"
#import "./CampaignPage.graphql"
#import "./CollectionPage.graphql"
#import "./ContentPage.graphql"
#import "./DestinationCityPage.graphql"
#import "./DestinationCountryPage.graphql"
#import "./DestinationOverviewPage.graphql"
#import "./HotelPage.graphql"
#import "./LoyaltyPage.graphql"
fragment Breadcrumbs on Breadcrumbs {
title
parentsConnection {
edges {
node {
__typename
...AccountPageBreadcrumb
...CampaignOverviewPageBreadcrumb
...CampaignPageBreadcrumb
...CollectionPageBreadcrumb
...ContentPageBreadcrumb
...DestinationCityPageBreadcrumb
...DestinationCountryPageBreadcrumb
...DestinationOverviewPageBreadcrumb
...HotelPageBreadcrumb
...LoyaltyPageBreadcrumb
}
}
}
}
fragment BreadcrumbsRefs on Breadcrumbs {
title
parentsConnection {
edges {
node {
__typename
...AccountPageBreadcrumbRef
...CampaignOverviewPageBreadcrumbRef
...CampaignPageBreadcrumbRef
...CollectionPageBreadcrumbRef
...ContentPageBreadcrumbRef
...DestinationCityPageBreadcrumbRef
...DestinationCountryPageBreadcrumbRef
...DestinationOverviewPageBreadcrumbRef
...HotelPageBreadcrumbRef
...LoyaltyPageBreadcrumbRef
}
}
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment CampaignOverviewPageBreadcrumb on CampaignOverviewPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment CampaignOverviewPageBreadcrumbRef on CampaignOverviewPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment CampaignPageBreadcrumb on CampaignPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment CampaignPageBreadcrumbRef on CampaignPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment CollectionPageBreadcrumb on CollectionPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment CollectionPageBreadcrumbRef on CollectionPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment ContentPageBreadcrumb on ContentPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment ContentPageBreadcrumbRef on ContentPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,9 @@
fragment CurrentBlocksPageBreadcrumbs on CurrentBlocksPage {
breadcrumbs {
parents {
href
title
}
title
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment DestinationCityPageBreadcrumb on DestinationCityPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment DestinationCityPageBreadcrumbRef on DestinationCityPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment DestinationCountryPageBreadcrumb on DestinationCountryPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment DestinationCountryPageBreadcrumbRef on DestinationCountryPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment DestinationOverviewPageBreadcrumb on DestinationOverviewPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment DestinationOverviewPageBreadcrumbRef on DestinationOverviewPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment HotelPageBreadcrumb on HotelPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment HotelPageBreadcrumbRef on HotelPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
fragment LoyaltyPageBreadcrumb on LoyaltyPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
url
}
fragment LoyaltyPageBreadcrumbRef on LoyaltyPage {
web {
breadcrumbs {
title
}
}
system {
...System
}
}

View File

@@ -0,0 +1,70 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignOverviewPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignOverviewPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment NavigationLinks_CampaignOverviewPage on CampaignOverviewPageHeader {
navigation_links {
title
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignOverviewPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
fragment NavigationLinksRef_CampaignOverviewPage on CampaignOverviewPageHeader {
navigation_links {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignOverviewPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment CampaignOverviewPageRef on CampaignOverviewPage {
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../System.graphql"
#import "../Blocks/HotelListing.graphql"
#import "../CampaignPage/IncludedHotels.graphql"
#import "../CampaignPage/Hero.graphql"
fragment TopCampaign on CampaignPage {
heading
included_hotels {
...CampaignPageIncludedHotels
}
blocks {
__typename
...HotelListing_CampaignPage
}
url
...Hero_CampaignPage
}
fragment TopCampaignRef on CampaignPage {
system {
...System
}
}

View File

@@ -0,0 +1,78 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment Hero_CampaignPage on CampaignPage {
hero {
image
heading
theme
benefits
rate_text {
bold_text
text
}
button {
cta
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
}
fragment HeroRef_CampaignPage on CampaignPage {
hero {
button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}
}

View File

@@ -0,0 +1,45 @@
fragment CampaignPageIncludedHotels on CampaignPageIncludedHotels {
list_1Connection {
edges {
node {
... on HotelPage {
hotel_page_id
}
}
}
}
list_2Connection {
edges {
node {
... on HotelPage {
hotel_page_id
}
}
}
}
}
fragment CampaignPageIncludedHotelsRef on CampaignPageIncludedHotels {
list_1Connection {
edges {
node {
... on HotelPage {
system {
...System
}
}
}
}
}
list_2Connection {
edges {
node {
... on HotelPage {
system {
...System
}
}
}
}
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment CampaignPageRef on CampaignPage {
system {
...System
}
}

View File

@@ -0,0 +1,66 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment NavigationLinks_CollectionPage on CollectionPageHeader {
navigation_links {
title
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
fragment NavigationLinksRef_CollectionPage on CollectionPageHeader {
navigation_links {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment CollectionPageRef on CollectionPage {
system {
...System
}
}

View File

@@ -0,0 +1,66 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment TopPrimaryButton_CollectionPage on CollectionPageHeader {
top_primary_button {
title
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
fragment TopPrimaryButtonRef_CollectionPage on CollectionPageHeader {
top_primary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}

View File

@@ -0,0 +1,52 @@
fragment ContactExtraInfo on ContactBlockSectionsExtraInfo {
extra_info {
text
}
}
fragment ContactMailingAddress on ContactBlockSectionsMailingAddress {
mailing_address {
city
country
name
street
zip
}
}
fragment ContactPhone on ContactBlockSectionsPhone {
phone {
number
title
}
}
fragment ContactTitle on ContactBlockSectionsTitle {
title {
text
}
}
fragment ContactVisitingAddress on ContactBlockSectionsVisitingAddress {
visiting_address {
city
country
street
zip
}
}
fragment Contact on ContactBlock {
sections {
__typename
...ContactExtraInfo
...ContactMailingAddress
...ContactPhone
...ContactTitle
...ContactVisitingAddress
}
system {
locale
uid
}
}

View File

@@ -0,0 +1,66 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment NavigationLinks_ContentPage on ContentPageHeader {
navigation_links {
title
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
fragment NavigationLinksRef_ContentPage on ContentPageHeader {
navigation_links {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment ContentPageRef on ContentPage {
system {
...System
}
}

View File

@@ -0,0 +1,66 @@
#import "../PageLink/AccountPageLink.graphql"
#import "../PageLink/CampaignPageLink.graphql"
#import "../PageLink/CollectionPageLink.graphql"
#import "../PageLink/ContentPageLink.graphql"
#import "../PageLink/DestinationCityPageLink.graphql"
#import "../PageLink/DestinationCountryPageLink.graphql"
#import "../PageLink/DestinationOverviewPageLink.graphql"
#import "../PageLink/HotelPageLink.graphql"
#import "../PageLink/LoyaltyPageLink.graphql"
#import "../PageLink/StartPageLink.graphql"
#import "../AccountPage/Ref.graphql"
#import "../CampaignPage/Ref.graphql"
#import "../CollectionPage/Ref.graphql"
#import "../ContentPage/Ref.graphql"
#import "../DestinationCityPage/Ref.graphql"
#import "../DestinationCountryPage/Ref.graphql"
#import "../DestinationOverviewPage/Ref.graphql"
#import "../HotelPage/Ref.graphql"
#import "../LoyaltyPage/Ref.graphql"
#import "../StartPage/Ref.graphql"
fragment TopPrimaryButton_ContentPage on ContentPageHeader {
top_primary_button {
title
linkConnection {
edges {
node {
__typename
...AccountPageLink
...CampaignPageLink
...CollectionPageLink
...ContentPageLink
...DestinationCityPageLink
...DestinationCountryPageLink
...DestinationOverviewPageLink
...HotelPageLink
...LoyaltyPageLink
...StartPageLink
}
}
}
}
}
fragment TopPrimaryButtonRef_ContentPage on ContentPageHeader {
top_primary_button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...CampaignPageRef
...CollectionPageRef
...ContentPageRef
...DestinationCityPageRef
...DestinationCountryPageRef
...DestinationOverviewPageRef
...HotelPageRef
...LoyaltyPageRef
...StartPageRef
}
}
}
}
}

View File

@@ -0,0 +1,27 @@
#import "../SysAsset.graphql"
fragment CurrentFooterAppDownloads on CurrentFooter {
app_downloads {
title
app_store {
href
imageConnection {
edges {
node {
...SysAsset
}
}
}
}
google_play {
href
imageConnection {
edges {
node {
...SysAsset
}
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
#import "../SysAsset.graphql"
fragment Logo on CurrentFooter {
logoConnection {
edges {
node {
...SysAsset
}
}
}
}

View File

@@ -0,0 +1,29 @@
fragment MainLinks on Footer {
main_links {
title
open_in_new_tab
link {
href
title
}
pageConnection {
edges {
node {
__typename
... on AccountPage {
title
url
}
... on LoyaltyPage {
title
url
}
... on ContentPage {
title
url
}
}
}
}
}
}

View File

@@ -0,0 +1,9 @@
fragment Navigation on CurrentFooter {
navigation {
links {
href
title
}
title
}
}

View File

@@ -0,0 +1,18 @@
fragment MainLinksRef on Footer {
__typename
main_links {
pageConnection {
edges {
node {
__typename
...LoyaltyPageRef
...ContentPageRef
...AccountPageRef
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,20 @@
fragment SecondaryLinksRef on Footer {
__typename
secondary_links {
links {
pageConnection {
edges {
node {
__typename
...LoyaltyPageRef
...ContentPageRef
...AccountPageRef
}
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,24 @@
#import "../Refs/MyPages/AccountPage.graphql"
#import "../Refs/ContentPage/ContentPage.graphql"
#import "../Refs/LoyaltyPage/LoyaltyPage.graphql"
fragment SecondaryLinks on Footer {
secondary_links {
title
links {
title
open_in_new_tab
pageConnection {
edges {
node {
__typename
}
}
}
link {
href
title
}
}
}
}

View File

@@ -0,0 +1,17 @@
fragment CurrentFooterSocialMedia on CurrentFooter {
social_media {
title
facebook {
href
title
}
instagram {
href
title
}
twitter {
href
title
}
}
}

View File

@@ -0,0 +1,14 @@
#import "../SysAsset.graphql"
fragment TripAdvisor on CurrentFooter {
trip_advisor {
logoConnection {
edges {
node {
...SysAsset
}
}
}
title
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment DestinationCityPageRef on DestinationCityPage {
system {
...System
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment DestinationCountryPageRef on DestinationCountryPage {
system {
...System
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment DestinationOverviewPageRef on DestinationOverviewPage {
system {
...System
}
}

View File

@@ -0,0 +1,12 @@
fragment AppDownloads on Footer {
app_downloads {
title
links {
type
href {
href
title
}
}
}
}

View File

@@ -0,0 +1,22 @@
#import "../../Refs/LoyaltyPage/LoyaltyPage.graphql"
#import "../../Refs/MyPages/AccountPage.graphql"
#import "../../Refs/ContentPage/ContentPage.graphql"
fragment TertiaryLinksRef on Footer {
__typename
tertiary_links {
pageConnection {
edges {
node {
__typename
...LoyaltyPageRef
...ContentPageRef
...AccountPageRef
}
}
}
}
system {
...System
}
}

View File

@@ -0,0 +1,11 @@
fragment SocialMedia on Footer {
social_media {
links {
href {
href
title
}
type
}
}
}

View File

@@ -0,0 +1,17 @@
fragment Grid on Grid {
columns {
span
rows {
rowConnection {
edges {
node {
__typename
... on Card {
title
}
}
}
}
}
}
}

View File

@@ -0,0 +1,12 @@
#import "./SysAsset.graphql"
fragment Hero on Hero {
imagesConnection {
totalCount
edges {
node {
...SysAsset
}
}
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment HotelPageRef on HotelPage {
system {
...System
}
}

View File

@@ -0,0 +1,16 @@
#import "./System.graphql"
fragment ImageContainer on ImageContainer {
image_left
image_right
title
system {
...System
}
}
fragment ImageContainerRef on ImageContainer {
system {
...System
}
}

View File

@@ -0,0 +1,7 @@
#import "../System.graphql"
fragment LoyaltyPageRef on LoyaltyPage {
system {
...System
}
}

View File

@@ -0,0 +1,6 @@
fragment Metadata on SeoMetadata {
noindex
description
title
seo_image
}

View File

@@ -0,0 +1,9 @@
#import "../System.graphql"
fragment AccountPageLink on AccountPage {
system {
...System
}
title
url
}

View File

@@ -0,0 +1,9 @@
#import "../System.graphql"
fragment CampaignOverviewPageLink on CampaignOverviewPage {
title
url
system {
...System
}
}

Some files were not shown because too many files have changed in this diff Show More