Merged develop into feature/sw-352-page-loading

This commit is contained in:
Linus Flood
2024-09-04 07:26:17 +00:00
126 changed files with 2318 additions and 273 deletions
@@ -5,9 +5,9 @@ import styles from "./layout.module.css"
export default async function MyPagesLayout({
breadcrumbs,
children,
}: React.PropsWithChildren & {
}: React.PropsWithChildren<{
breadcrumbs: React.ReactNode
}) {
}>) {
return (
<section className={styles.layout}>
{breadcrumbs}
@@ -23,7 +23,7 @@ export default async function CreditCardSlot({ params }: PageArgs<LangParams>) {
<section className={styles.container}>
<article className={styles.content}>
<Subtitle type="two" color="black">
{formatMessage({ id: "My credit cards" })}
{formatMessage({ id: "My payment cards" })}
</Subtitle>
<Body color="black">
{formatMessage({
@@ -0,0 +1 @@
export { default } from "../page"
@@ -0,0 +1 @@
export { default } from "../../page"
@@ -0,0 +1 @@
export { default } from "./page"
@@ -0,0 +1 @@
export { default } from "../../page"
+18
View File
@@ -0,0 +1,18 @@
import { serverClient } from "@/lib/trpc/server"
import BookingWidget from "@/components/BookingWidget"
import { getLang } from "@/i18n/serverContext"
export default async function BookingWidgetPage() {
// Get the booking widget show/hide status based on page specific settings
const bookingWidgetToggle =
await serverClient().contentstack.bookingwidget.getToggle()
return (
<>
{bookingWidgetToggle && bookingWidgetToggle.hideBookingWidget ? null : (
<BookingWidget />
)}
</>
)
}
@@ -1,9 +0,0 @@
"use client"
import { baseUrls } from "@/constants/routes/baseUrls"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
export default function Error() {
return <LanguageSwitcher urls={baseUrls} />
}
@@ -1,18 +0,0 @@
import { serverClient } from "@/lib/trpc/server"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
import { setLang } from "@/i18n/serverContext"
import { LangParams, PageArgs } from "@/types/params"
export default async function LanguageSwitcherRoute({
params,
}: PageArgs<LangParams>) {
setLang(params.lang)
const data = await serverClient().contentstack.languageSwitcher.get()
if (!data) {
return null
}
return <LanguageSwitcher urls={data.urls} />
}
@@ -1,15 +0,0 @@
import { serverClient } from "@/lib/trpc/server"
import MyPagesMobileDropdown from "@/components/Current/Header/MyPagesMobileDropdown"
import { setLang } from "@/i18n/serverContext"
import { LangParams, PageArgs } from "@/types/params"
export default async function MyPagesMobileDropdownPage({
params,
}: PageArgs<LangParams>) {
setLang(params.lang)
const navigation = await serverClient().contentstack.myPages.navigation.get()
if (!navigation) return null
return <MyPagesMobileDropdown navigation={navigation} />
}
@@ -1,21 +0,0 @@
import Header from "@/components/Current/Header"
import { setLang } from "@/i18n/serverContext"
import type { LangParams, LayoutArgs } from "@/types/params"
export default function HeaderLayout({
languageSwitcher,
myPagesMobileDropdown,
params,
}: LayoutArgs<LangParams> & {
languageSwitcher: React.ReactNode
myPagesMobileDropdown: React.ReactNode
}) {
setLang(params.lang)
return (
<Header
myPagesMobileDropdown={myPagesMobileDropdown}
languageSwitcher={languageSwitcher}
/>
)
}
@@ -1,8 +1 @@
import { setLang } from "@/i18n/serverContext"
import type { LangParams, PageArgs } from "@/types/params"
export default function EmptyHeaderPage({ params }: PageArgs<LangParams>) {
setLang(params.lang)
return null
}
export { default } from "../page"
+2 -13
View File
@@ -1,9 +1,4 @@
import { baseUrls } from "@/constants/routes/baseUrls"
import { serverClient } from "@/lib/trpc/server"
import Header from "@/components/Current/Header"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
import MyPagesMobileDropdown from "@/components/Current/Header/MyPagesMobileDropdown"
import Header from "@/components/Header"
import { setLang } from "@/i18n/serverContext"
import { LangParams, PageArgs } from "@/types/params"
@@ -11,11 +6,5 @@ import { LangParams, PageArgs } from "@/types/params"
export default async function HeaderPage({ params }: PageArgs<LangParams>) {
setLang(params.lang)
const navigation = await serverClient().contentstack.myPages.navigation.get()
return (
<Header
myPagesMobileDropdown={<MyPagesMobileDropdown navigation={navigation} />}
languageSwitcher={<LanguageSwitcher urls={baseUrls} />}
/>
)
return <Header />
}
+3
View File
@@ -21,9 +21,11 @@ export default async function RootLayout({
children,
params,
header,
bookingwidget,
}: React.PropsWithChildren<
LayoutArgs<LangParams> & {
header: React.ReactNode
bookingwidget: React.ReactNode
}
>) {
setLang(params.lang)
@@ -52,6 +54,7 @@ export default async function RootLayout({
<ServerIntlProvider intl={{ defaultLocale, locale, messages }}>
<TrpcProvider>
{header}
{bookingwidget}
{children}
<ToastHandler />
<Footer />
+2
View File
@@ -4,6 +4,7 @@ import "@scandic-hotels/design-system/style.css"
import Script from "next/script"
import TokenRefresher from "@/components/Auth/TokenRefresher"
import BookingWidget from "@/components/BookingWidget"
import AdobeScript from "@/components/Current/AdobeScript"
import Footer from "@/components/Current/Footer"
import Header from "@/components/Current/Header"
@@ -71,6 +72,7 @@ export default async function RootLayout({
myPagesMobileDropdown={myPagesMobileDropdown}
languageSwitcher={languageSwitcher}
/>
<BookingWidget />
{children}
<Footer />
<TokenRefresher />
+17
View File
@@ -6,6 +6,7 @@ import { z } from "zod"
import { Lang } from "@/constants/languages"
import { env } from "@/env/server"
import { internalServerError } from "@/server/errors/next"
import { affix as bookingwidgetAffix } from "@/server/routers/contentstack/bookingwidget/utils"
import { affix as breadcrumbsAffix } from "@/server/routers/contentstack/breadcrumbs/utils"
import { languageSwitcherAffix } from "@/server/routers/contentstack/languageSwitcher/utils"
@@ -29,6 +30,11 @@ const validateJsonBody = z.object({
locale: z.nativeEnum(Lang),
uid: z.string(),
url: z.string().optional(),
page_settings: z
.object({
hide_booking_widget: z.boolean(),
})
.optional(),
}),
}),
})
@@ -105,6 +111,17 @@ export async function POST(request: NextRequest) {
revalidateTag(breadcrumbsTag)
}
if (entry.page_settings?.hide_booking_widget) {
const bookingwidgetTag = generateTag(
entry.locale,
entry.uid,
bookingwidgetAffix
)
console.info(`Revalidating breadcrumbsTag: ${bookingwidgetTag}`)
revalidateTag(bookingwidgetTag)
}
return Response.json({ revalidated: true, now: Date.now() })
} catch (error) {
console.error("Failed to revalidate tag(s)")
+10 -2
View File
@@ -97,10 +97,18 @@
}
:root {
--max-width: 113.5rem;
--current-max-width: 113.5rem;
--max-width: 94.5rem;
--max-width-content: 74.75rem;
--max-width-text-block: 49.5rem;
--mobile-site-header-height: 70.047px;
--current-mobile-site-header-height: 70.047px;
--max-width-navigation: 89.5rem;
--main-menu-mobile-height: 75px;
--header-z-index: 1;
--menu-overlay-z-index: 10;
}
* {