Merged master into feat/membership-cards-improvements

This commit is contained in:
Linus Flood
2024-12-16 12:32:00 +00:00
8 changed files with 91 additions and 9 deletions

View File

@@ -4,11 +4,16 @@ import Breadcrumbs from "@/components/Breadcrumbs"
import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton"
import { setLang } from "@/i18n/serverContext" import { setLang } from "@/i18n/serverContext"
import type { LangParams, PageArgs } from "@/types/params" import type { ContentTypeParams, LangParams, PageArgs } from "@/types/params"
export default function PageBreadcrumbs({ params }: PageArgs<LangParams>) { export default function PageBreadcrumbs({
params,
}: PageArgs<LangParams & ContentTypeParams>) {
setLang(params.lang) setLang(params.lang)
if (params.contentType === "hotel-page") {
return null
}
return ( return (
<Suspense fallback={<BreadcrumbsSkeleton />}> <Suspense fallback={<BreadcrumbsSkeleton />}>
<Breadcrumbs /> <Breadcrumbs />

View File

@@ -9,7 +9,7 @@
.image { .image {
object-fit: cover; object-fit: cover;
border-radius: var(--Corner-radius-Medium); border-radius: var(--Corner-radius-Small);
width: 100%; width: 100%;
height: 100%; height: 100%;
max-height: 30vh; max-height: 30vh;

View File

@@ -9,7 +9,7 @@
); );
display: grid; display: grid;
grid-template-areas: grid-template-areas:
"hotelImages" "header"
"tabNavigation" "tabNavigation"
"mainSection" "mainSection"
"mapContainer"; "mapContainer";
@@ -17,9 +17,9 @@
max-width: var(--max-width); max-width: var(--max-width);
} }
.hotelImages { .header {
grid-area: hotelImages;
background-color: var(--Base-Surface-Subtle-Normal); background-color: var(--Base-Surface-Subtle-Normal);
grid-area: header;
} }
.mainSection { .mainSection {
@@ -54,7 +54,7 @@
@media screen and (min-width: 1367px) { @media screen and (min-width: 1367px) {
.pageContainer { .pageContainer {
grid-template-areas: grid-template-areas:
"hotelImages mapContainer" "header mapContainer"
"tabNavigation mapContainer" "tabNavigation mapContainer"
"mainSection mapContainer"; "mainSection mapContainer";
grid-template-columns: 1fr var(--hotel-page-map-desktop-width); grid-template-columns: 1fr var(--hotel-page-map-desktop-width);

View File

@@ -1,12 +1,15 @@
import { notFound } from "next/navigation" import { notFound } from "next/navigation"
import { Suspense } from "react"
import { restaurantAndBar } from "@/constants/routes/hotelPageParams" import { restaurantAndBar } from "@/constants/routes/hotelPageParams"
import { env } from "@/env/server" import { env } from "@/env/server"
import { getHotelData, getHotelPage } from "@/lib/trpc/memoizedRequests" import { getHotelData, getHotelPage } from "@/lib/trpc/memoizedRequests"
import AccordionSection from "@/components/Blocks/Accordion" import AccordionSection from "@/components/Blocks/Accordion"
import Breadcrumbs from "@/components/Breadcrumbs"
import SidePeekProvider from "@/components/SidePeeks/SidePeekProvider" import SidePeekProvider from "@/components/SidePeeks/SidePeekProvider"
import Alert from "@/components/TempDesignSystem/Alert" import Alert from "@/components/TempDesignSystem/Alert"
import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton"
import SidePeek from "@/components/TempDesignSystem/SidePeek" import SidePeek from "@/components/TempDesignSystem/SidePeek"
import { getIntl } from "@/i18n" import { getIntl } from "@/i18n"
import { getLang } from "@/i18n/serverContext" import { getLang } from "@/i18n/serverContext"
@@ -117,14 +120,18 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
__html: JSON.stringify(jsonSchema.jsonLd), __html: JSON.stringify(jsonSchema.jsonLd),
}} }}
/> />
<div className={styles.hotelImages}> <header className={styles.header}>
<Suspense fallback={<BreadcrumbsSkeleton />}>
<Breadcrumbs />
</Suspense>
{images?.length && <PreviewImages images={images} hotelName={name} />} {images?.length && <PreviewImages images={images} hotelName={name} />}
</div> </header>
<TabNavigation <TabNavigation
restaurantTitle={getRestaurantHeading(detailedFacilities)} restaurantTitle={getRestaurantHeading(detailedFacilities)}
hasActivities={!!activitiesCard} hasActivities={!!activitiesCard}
hasFAQ={!!faq.accordions.length} hasFAQ={!!faq.accordions.length}
/> />
<main className={styles.mainSection}> <main className={styles.mainSection}>
<div id={HotelHashValues.overview} className={styles.overview}> <div id={HotelHashValues.overview} className={styles.overview}>
<div className={styles.introContainer}> <div className={styles.introContainer}>

View File

@@ -1,6 +1,7 @@
#import "./AccountPage.graphql" #import "./AccountPage.graphql"
#import "./CollectionPage.graphql" #import "./CollectionPage.graphql"
#import "./ContentPage.graphql" #import "./ContentPage.graphql"
#import "./HotelPage.graphql"
#import "./LoyaltyPage.graphql" #import "./LoyaltyPage.graphql"
fragment Breadcrumbs on Breadcrumbs { fragment Breadcrumbs on Breadcrumbs {
@@ -12,6 +13,7 @@ fragment Breadcrumbs on Breadcrumbs {
...AccountPageBreadcrumb ...AccountPageBreadcrumb
...CollectionPageBreadcrumb ...CollectionPageBreadcrumb
...ContentPageBreadcrumb ...ContentPageBreadcrumb
...HotelPageBreadcrumb
...LoyaltyPageBreadcrumb ...LoyaltyPageBreadcrumb
} }
} }
@@ -27,6 +29,7 @@ fragment BreadcrumbsRefs on Breadcrumbs {
...AccountPageBreadcrumbRef ...AccountPageBreadcrumbRef
...CollectionPageBreadcrumbRef ...CollectionPageBreadcrumbRef
...ContentPageBreadcrumbRef ...ContentPageBreadcrumbRef
...HotelPageBreadcrumbRef
...LoyaltyPageBreadcrumbRef ...LoyaltyPageBreadcrumbRef
} }
} }

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,28 @@
#import "../../Fragments/Breadcrumbs/Breadcrumbs.graphql"
#import "../../Fragments/System.graphql"
query GetHotelPageBreadcrumbs($locale: String!, $uid: String!) {
hotel_page(locale: $locale, uid: $uid) {
web {
breadcrumbs {
...Breadcrumbs
}
}
system {
...System
}
}
}
query GetHotelPageBreadcrumbsRefs($locale: String!, $uid: String!) {
hotel_page(locale: $locale, uid: $uid) {
web {
breadcrumbs {
...BreadcrumbsRefs
}
}
system {
...System
}
}
}

View File

@@ -13,6 +13,10 @@ import {
GetContentPageBreadcrumbs, GetContentPageBreadcrumbs,
GetContentPageBreadcrumbsRefs, GetContentPageBreadcrumbsRefs,
} from "@/lib/graphql/Query/Breadcrumbs/ContentPage.graphql" } from "@/lib/graphql/Query/Breadcrumbs/ContentPage.graphql"
import {
GetHotelPageBreadcrumbs,
GetHotelPageBreadcrumbsRefs,
} from "@/lib/graphql/Query/Breadcrumbs/HotelPage.graphql"
import { import {
GetLoyaltyPageBreadcrumbs, GetLoyaltyPageBreadcrumbs,
GetLoyaltyPageBreadcrumbsRefs, GetLoyaltyPageBreadcrumbsRefs,
@@ -199,6 +203,17 @@ export const breadcrumbsQueryRouter = router({
}, },
variables variables
) )
case PageTypeEnum.hotelPage:
return await getBreadcrumbs<{
hotel_page: RawBreadcrumbsSchema
}>(
{
dataKey: "hotel_page",
refQuery: GetHotelPageBreadcrumbsRefs,
query: GetHotelPageBreadcrumbs,
},
variables
)
case PageTypeEnum.loyaltyPage: case PageTypeEnum.loyaltyPage:
return await getBreadcrumbs<{ return await getBreadcrumbs<{
loyalty_page: RawBreadcrumbsSchema loyalty_page: RawBreadcrumbsSchema