fix: refactor breadcrumbs to take page type variants to better match margins

This commit is contained in:
Christel Westerberg
2025-01-03 11:39:24 +01:00
parent 053ef4a1c9
commit 5901cab440
46 changed files with 286 additions and 175 deletions

View File

@@ -5,13 +5,14 @@ import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/Bread
import { setLang } from "@/i18n/serverContext" import { setLang } from "@/i18n/serverContext"
import type { LangParams, PageArgs } from "@/types/params" import type { LangParams, PageArgs } from "@/types/params"
import { PageContentTypeEnum } from "@/types/requests/contentType"
export default function AllBreadcrumbs({ params }: PageArgs<LangParams>) { export default function AllBreadcrumbs({ params }: PageArgs<LangParams>) {
setLang(params.lang) setLang(params.lang)
return ( return (
<Suspense fallback={<BreadcrumbsSkeleton />}> <Suspense fallback={<BreadcrumbsSkeleton />}>
<Breadcrumbs /> <Breadcrumbs variant={PageContentTypeEnum.accountPage} />
</Suspense> </Suspense>
) )
} }

View File

@@ -1,15 +1,18 @@
.blocks { .blocks {
display: grid; display: grid;
gap: var(--Spacing-x5); gap: var(--Spacing-x5);
padding-left: var(--Spacing-x2); max-width: var(--max-width-page);
padding-right: var(--Spacing-x2);
align-content: flex-start; align-content: flex-start;
} }
@media screen and (min-width: 768px) {
.blocks {
gap: var(--Spacing-x7);
}
}
@media screen and (min-width: 1367px) { @media screen and (min-width: 1367px) {
.blocks { .blocks {
gap: var(--Spacing-x7); gap: var(--Spacing-x7);
padding-left: var(--Spacing-x0);
padding-right: var(--Spacing-x0);
} }
} }

View File

@@ -1,11 +1,11 @@
.layout { .layout {
display: grid; display: grid;
font-family: var(--typography-Body-Regular-fontFamily); font-family: var(--typography-Body-Regular-fontFamily);
gap: var(--Spacing-x3);
grid-template-rows: auto 1fr; grid-template-rows: auto 1fr;
min-height: 100dvh; min-height: 100dvh;
max-width: var(--max-width); max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
width: 100%;
} }
.container { .container {
@@ -15,8 +15,6 @@
.content { .content {
display: grid; display: grid;
padding-bottom: var(--Spacing-x9); padding-bottom: var(--Spacing-x9);
padding-left: var(--Spacing-x0);
padding-right: var(--Spacing-x0);
position: relative; position: relative;
} }
@@ -24,7 +22,5 @@
.content { .content {
gap: var(--Spacing-x5); gap: var(--Spacing-x5);
grid-template-columns: max(340px) 1fr; grid-template-columns: max(340px) 1fr;
padding-left: var(--Spacing-x5);
padding-right: var(--Spacing-x5);
} }
} }

View File

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

View File

@@ -1,7 +1,6 @@
.layout { .layout {
display: grid; display: grid;
font-family: var(--typography-Body-Regular-fontFamily); font-family: var(--typography-Body-Regular-fontFamily);
gap: var(--Spacing-x3);
grid-template-rows: auto 1fr; grid-template-rows: auto 1fr;
position: relative; position: relative;
} }

View File

@@ -17,6 +17,7 @@ import type {
PageArgs, PageArgs,
UIDParams, UIDParams,
} from "@/types/params" } from "@/types/params"
import { PageContentTypeEnum } from "@/types/requests/contentType"
export { generateMetadata } from "@/utils/generateMetadata" export { generateMetadata } from "@/utils/generateMetadata"
@@ -28,12 +29,12 @@ export default async function ContentTypePage({
const pathname = headers().get("x-pathname") || "" const pathname = headers().get("x-pathname") || ""
switch (params.contentType) { switch (params.contentType) {
case "collection-page": case PageContentTypeEnum.collectionPage:
if (env.HIDE_FOR_NEXT_RELEASE) { if (env.HIDE_FOR_NEXT_RELEASE) {
return notFound() return notFound()
} }
return <CollectionPage /> return <CollectionPage />
case "content-page": { case PageContentTypeEnum.contentPage: {
const isSignupRoute = isSignupPage(pathname) const isSignupRoute = isSignupPage(pathname)
if (env.HIDE_FOR_NEXT_RELEASE) { if (env.HIDE_FOR_NEXT_RELEASE) {
@@ -52,9 +53,9 @@ export default async function ContentTypePage({
return <ContentPage /> return <ContentPage />
} }
case "loyalty-page": case PageContentTypeEnum.loyaltyPage:
return <LoyaltyPage /> return <LoyaltyPage />
case "hotel-page": case PageContentTypeEnum.hotelPage:
if (env.HIDE_FOR_NEXT_RELEASE) { if (env.HIDE_FOR_NEXT_RELEASE) {
return notFound() return notFound()
} }

View File

@@ -5,6 +5,7 @@ import BookingWidget, { preload } from "@/components/BookingWidget"
import { getLang } from "@/i18n/serverContext" import { getLang } from "@/i18n/serverContext"
import type { ContentTypeParams, PageArgs } from "@/types/params" import type { ContentTypeParams, PageArgs } from "@/types/params"
import { PageContentTypeEnum } from "@/types/requests/contentType"
export default async function BookingWidgetPage({ export default async function BookingWidgetPage({
params, params,
@@ -16,7 +17,7 @@ export default async function BookingWidgetPage({
const urlParams = new URLSearchParams() const urlParams = new URLSearchParams()
if (params.contentType === "hotel-page") { if (params.contentType === PageContentTypeEnum.hotelPage) {
const hotelPageData = await getHotelPage() const hotelPageData = await getHotelPage()
const hotelData = await getHotelData({ const hotelData = await getHotelData({

View File

@@ -100,7 +100,7 @@
--current-max-width: 113.5rem; --current-max-width: 113.5rem;
--max-width: 94.5rem; --max-width: 94.5rem;
--max-width-content: 74.75rem; --max-width-content: min(calc(100dvw - var(--max-width-spacing)), 74.75rem);
--max-width-text-block: 49.5rem; --max-width-text-block: 49.5rem;
--current-mobile-site-header-height: 52.41px; --current-mobile-site-header-height: 52.41px;
--max-width-navigation: 89.5rem; --max-width-navigation: 89.5rem;

View File

@@ -3,7 +3,11 @@ import { serverClient } from "@/lib/trpc/server"
import BreadcrumbsComp from "@/components/TempDesignSystem/Breadcrumbs" import BreadcrumbsComp from "@/components/TempDesignSystem/Breadcrumbs"
import { generateBreadcrumbsSchema } from "@/utils/jsonSchemas" import { generateBreadcrumbsSchema } from "@/utils/jsonSchemas"
export default async function Breadcrumbs() { import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs"
export default async function Breadcrumbs({
variant,
}: Pick<BreadcrumbsProps, "variant">) {
const breadcrumbs = await serverClient().contentstack.breadcrumbs.get() const breadcrumbs = await serverClient().contentstack.breadcrumbs.get()
if (!breadcrumbs?.length) { if (!breadcrumbs?.length) {
@@ -19,7 +23,7 @@ export default async function Breadcrumbs() {
__html: JSON.stringify(jsonSchema.jsonLd), __html: JSON.stringify(jsonSchema.jsonLd),
}} }}
/> />
<BreadcrumbsComp breadcrumbs={breadcrumbs} /> <BreadcrumbsComp breadcrumbs={breadcrumbs} variant={variant} />
</> </>
) )
} }

View File

@@ -3,7 +3,7 @@
gap: 8px; gap: 8px;
position: relative; position: relative;
width: 100%; width: 100%;
padding: var(--Spacing-x2) var(--Spacing-x2) 0; padding: 0 var(--Spacing-x2);
z-index: 0; z-index: 0;
} }
@@ -14,6 +14,8 @@
height: 100%; height: 100%;
max-height: 30vh; max-height: 30vh;
cursor: pointer; cursor: pointer;
max-width: var(--max-width-page);
margin: 0 auto;
} }
.imageWrapper > :nth-child(2), .imageWrapper > :nth-child(2),
@@ -28,6 +30,12 @@
z-index: 1; z-index: 1;
} }
@media screen and (min-width: 768px) {
.seeAllButton {
right: calc(var(--Spacing-x2) + var(--Layout-Tablet-Margin-Margin-min));
}
}
@media screen and (min-width: 1367px) { @media screen and (min-width: 1367px) {
.imageWrapper { .imageWrapper {
grid-template-columns: 70% 30%; grid-template-columns: 70% 30%;
@@ -35,7 +43,7 @@
grid-template-areas: grid-template-areas:
"main side1" "main side1"
"main side2"; "main side2";
padding: var(--Spacing-x2) var(--Spacing-x5) 0; padding: 0 var(--Spacing-x5);
} }
.image { .image {

View File

@@ -12,9 +12,10 @@
display: flex; display: flex;
gap: var(--Spacing-x4); gap: var(--Spacing-x4);
justify-content: flex-start; justify-content: flex-start;
padding: 0 var(--Spacing-x2);
width: 100%; width: 100%;
overflow-x: auto; overflow-x: auto;
max-width: var(--max-width-page);
margin: 0 auto;
} }
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
@@ -28,5 +29,6 @@
padding: 0 var(--Spacing-x5); padding: 0 var(--Spacing-x5);
max-width: calc(100% - var(--hotel-page-map-desktop-width)); max-width: calc(100% - var(--hotel-page-map-desktop-width));
overflow-x: visible; overflow-x: visible;
margin: 0;
} }
} }

View File

@@ -13,7 +13,6 @@
"tabNavigation" "tabNavigation"
"mainSection" "mainSection"
"mapContainer"; "mapContainer";
margin: 0 auto;
max-width: var(--max-width); max-width: var(--max-width);
} }
@@ -26,7 +25,9 @@
grid-area: mainSection; grid-area: mainSection;
display: grid; display: grid;
gap: var(--Spacing-x9); gap: var(--Spacing-x9);
padding: var(--Spacing-x4) var(--Spacing-x2); padding: var(--Spacing-x4) 0;
max-width: var(--max-width-page);
margin: 0 auto;
} }
.mapContainer { .mapContainer {
@@ -51,6 +52,17 @@
gap: var(--Spacing-x2); gap: var(--Spacing-x2);
} }
@media screen and (min-width: 768px) {
.pageContainer {
margin: 0 auto;
}
.mainSection {
max-width: 100%;
padding: var(--Spacing-x6) var(--Layout-Tablet-Margin-Margin-min);
}
}
@media screen and (min-width: 1367px) { @media screen and (min-width: 1367px) {
.pageContainer { .pageContainer {
grid-template-areas: grid-template-areas:
@@ -61,7 +73,7 @@
} }
.mainSection { .mainSection {
grid-area: mainSection; grid-area: mainSection;
padding: var(--Spacing-x6) var(--Spacing-x4); padding: var(--Spacing-x6) var(--Layout-Desktop-Margin-Margin-min);
} }
.mapContainer { .mapContainer {
display: flex; display: flex;

View File

@@ -42,6 +42,7 @@ import { FacilityCardTypeEnum } from "@/types/components/hotelPage/facilities"
import type { HotelPageProps } from "@/types/components/hotelPage/hotelPage" import type { HotelPageProps } from "@/types/components/hotelPage/hotelPage"
import { HotelHashValues } from "@/types/components/hotelPage/tabNavigation" import { HotelHashValues } from "@/types/components/hotelPage/tabNavigation"
import type { Facility } from "@/types/hotel" import type { Facility } from "@/types/hotel"
import { PageContentTypeEnum } from "@/types/requests/contentType"
export default async function HotelPage({ hotelId }: HotelPageProps) { export default async function HotelPage({ hotelId }: HotelPageProps) {
const lang = getLang() const lang = getLang()
@@ -122,7 +123,7 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
/> />
<header className={styles.header}> <header className={styles.header}>
<Suspense fallback={<BreadcrumbsSkeleton />}> <Suspense fallback={<BreadcrumbsSkeleton />}>
<Breadcrumbs /> <Breadcrumbs variant={PageContentTypeEnum.hotelPage} />
</Suspense> </Suspense>
{images?.length ? ( {images?.length ? (
<PreviewImages images={images} hotelName={name} /> <PreviewImages images={images} hotelName={name} />

View File

@@ -3,8 +3,8 @@
grid-template-areas: "main"; grid-template-areas: "main";
grid-template-columns: 1fr; grid-template-columns: 1fr;
gap: var(--Spacing-x5); gap: var(--Spacing-x5);
padding: 0 var(--Spacing-x2) var(--Spacing-x9); padding-bottom: var(--Spacing-x9);
max-width: var(--max-width); max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
width: 100%; width: 100%;
} }
@@ -27,10 +27,6 @@
} }
@media screen and (min-width: 1367px) { @media screen and (min-width: 1367px) {
.content {
padding: 0 var(--Spacing-x5) var(--Spacing-x9);
}
.content:has(> aside) { .content:has(> aside) {
grid-template-areas: "sidebar main"; grid-template-areas: "sidebar main";
grid-template-columns: 360px 1fr; grid-template-columns: 360px 1fr;

View File

@@ -4,7 +4,7 @@
.header { .header {
background-color: var(--Base-Surface-Subtle-Normal); background-color: var(--Base-Surface-Subtle-Normal);
padding: var(--Spacing-x4) var(--Spacing-x2); padding: var(--Spacing-x4) 0;
} }
.headerContent { .headerContent {
@@ -32,9 +32,9 @@
} }
.contentContainer { .contentContainer {
padding-top: var(--Spacing-x4);
width: 100%;
padding: var(--Spacing-x4) var(--Spacing-x2) 0; padding: var(--Spacing-x4) var(--Spacing-x2) 0;
max-width: var(--max-width-content);
margin: 0 auto;
} }
.content .contentContainer { .content .contentContainer {
@@ -48,9 +48,10 @@
.mainContent { .mainContent {
display: grid; display: grid;
gap: var(--Spacing-x4);
width: 100%; width: 100%;
gap: var(--Spacing-x6); gap: var(--Spacing-x6);
margin: 0 auto;
max-width: var(--max-width-content);
} }
.content .mainContent { .content .mainContent {
@@ -58,9 +59,21 @@
} }
@media (min-width: 768px) { @media (min-width: 768px) {
.contentContainer {
padding: var(--Spacing-x4) 0;
}
.heroContainer {
padding: var(--Spacing-x4) 0;
}
.headerIntro { .headerIntro {
gap: var(--Spacing-x3); gap: var(--Spacing-x3);
} }
.header {
padding: var(--Spacing-x4) 0;
}
} }
@media (min-width: 1367px) { @media (min-width: 1367px) {
@@ -70,6 +83,8 @@
.contentContainer { .contentContainer {
padding: var(--Spacing-x4) 0 0; padding: var(--Spacing-x4) 0 0;
max-width: var(--max-width-content);
margin: 0 auto;
} }
.content .contentContainer { .content .contentContainer {
@@ -80,5 +95,8 @@
.mainContent { .mainContent {
gap: var(--Spacing-x9); gap: var(--Spacing-x9);
padding: 0;
max-width: none;
margin: 0;
} }
} }

View File

@@ -10,7 +10,7 @@
position: relative; position: relative;
text-align: center; text-align: center;
box-sizing: content-box; box-sizing: content-box;
max-width: 1200px; max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
padding: 70px 30px; padding: 70px 30px;
} }

View File

@@ -1,20 +1,23 @@
.details { .details {
background: var(--Base-Text-High-contrast); background: var(--Base-Text-High-contrast);
color: var(--Primary-Dark-On-Surface-Text); color: var(--Primary-Dark-On-Surface-Text);
padding: var(--Spacing-x3) var(--Spacing-x2) var(--Spacing-x6); padding: var(--Spacing-x3) 0 var(--Spacing-x6);
} }
.topContainer { .topContainer {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding-bottom: var(--Spacing-x2); padding-bottom: var(--Spacing-x2);
margin-bottom: var(--Spacing-x2); max-width: var(--max-width-page);
margin: 0 auto var(--Spacing-x2);
} }
.bottomContainer { .bottomContainer {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
flex-direction: column-reverse; flex-direction: column-reverse;
max-width: var(--max-width-page);
margin: 0 auto;
} }
.socialNav { .socialNav {
@@ -55,7 +58,7 @@
@media screen and (min-width: 767px) { @media screen and (min-width: 767px) {
.details { .details {
padding: var(--Spacing-x6) var(--Spacing-x5) var(--Spacing-x4); padding: var(--Spacing-x6) 0 var(--Spacing-x4);
} }
.bottomContainer { .bottomContainer {

View File

@@ -1,6 +1,6 @@
.section { .section {
background: var(--Base-Surface-Subtle-Normal); background: var(--Base-Surface-Subtle-Normal);
padding: var(--Spacing-x7) var(--Spacing-x2); padding: var(--Spacing-x7) 0;
} }
.maxWidth { .maxWidth {
@@ -8,12 +8,12 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
flex-direction: column; flex-direction: column;
max-width: var(--max-width-content); max-width: var(--max-width-page);
} }
@media screen and (min-width: 767px) { @media screen and (min-width: 767px) {
.section { .section {
padding: var(--Spacing-x9) var(--Spacing-x5); padding: var(--Spacing-x9) 0;
} }
} }

View File

@@ -104,10 +104,11 @@
@media screen and (min-width: 768px) and (max-width: 1366px) { @media screen and (min-width: 768px) and (max-width: 1366px) {
.inputContainer { .inputContainer {
padding: var(--Spacing-x2) var(--Spacing-x2); padding: var(--Spacing-x2) var(--Spacing-x2) var(--Spacing-x2)
var(--Layout-Tablet-Margin-Margin-min);
} }
.buttonContainer { .buttonContainer {
padding-right: var(--Spacing-x2); padding-right: var(--Layout-Tablet-Margin-Margin-min);
} }
.input .buttonContainer .button { .input .buttonContainer .button {
padding: var(--Spacing-x1); padding: var(--Spacing-x1);
@@ -125,7 +126,7 @@
display: flex; display: flex;
background: var(--Base-Surface-Primary-light-Hover); background: var(--Base-Surface-Primary-light-Hover);
border-bottom: 1px solid var(--Primary-Light-On-Surface-Divider-subtle); border-bottom: 1px solid var(--Primary-Light-On-Surface-Divider-subtle);
padding: var(--Spacing-x2); padding: var(--Spacing-x2) var(--Layout-Tablet-Margin-Margin-min);
} }
.voucherContainer { .voucherContainer {
display: none; display: none;

View File

@@ -2,15 +2,11 @@
align-items: center; align-items: center;
display: grid; display: grid;
margin: 0 auto; margin: 0 auto;
width: min( width: 100dvw;
calc(100dvw - (var(--Spacing-x2) * 2)),
var(--max-width-navigation)
);
} }
.form { .form {
display: grid; display: grid;
width: 100%;
} }
@media screen and (max-width: 767px) { @media screen and (max-width: 767px) {
@@ -20,11 +16,6 @@
} }
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
.section {
display: flex;
width: 100%;
}
.default { .default {
border-radius: var(--Corner-radius-Medium); border-radius: var(--Corner-radius-Medium);
} }
@@ -36,14 +27,12 @@
var(--Spacing-x-one-and-half) var(--Spacing-x1); var(--Spacing-x-one-and-half) var(--Spacing-x1);
} }
.section {
width: min(
calc(100dvw - (var(--Spacing-x2) * 2)),
var(--max-width-navigation)
);
}
.full { .full {
padding: var(--Spacing-x1) 0; padding: var(--Spacing-x1) 0;
} }
.form {
width: 100%;
max-width: var(--max-width-page);
margin: 0 auto;
}
} }

View File

@@ -6,7 +6,7 @@
background-color: transparent; background-color: transparent;
color: var(--Base-Text-High-contrast); color: var(--Base-Text-High-contrast);
border-width: 0; border-width: 0;
padding: var(--Spacing-x-half) var(--Spacing-x1); padding: var(--Spacing-x-half) 0;
cursor: pointer; cursor: pointer;
font-family: var(--typography-Body-Bold-fontFamily); font-family: var(--typography-Body-Bold-fontFamily);
font-weight: 500; /* Should be fixed when variables starts working: var(--typography-Body-Bold-fontWeight); */ font-weight: 500; /* Should be fixed when variables starts working: var(--typography-Body-Bold-fontWeight); */

View File

@@ -1,6 +1,6 @@
.mainMenu { .mainMenu {
background-color: var(--Base-Surface-Primary-light-Normal); background-color: var(--Base-Surface-Primary-light-Normal);
padding: var(--Spacing-x2); padding: var(--Spacing-x2) 0;
border-bottom: 1px solid var(--Primary-Light-On-Surface-Divider-subtle); border-bottom: 1px solid var(--Primary-Light-On-Surface-Divider-subtle);
} }
@@ -12,6 +12,8 @@
grid-template-columns: max-content 1fr; grid-template-columns: max-content 1fr;
align-items: center; align-items: center;
gap: var(--Spacing-x2); gap: var(--Spacing-x2);
max-width: var(--max-width-page);
margin: 0 auto;
} }
.menus { .menus {
@@ -31,6 +33,9 @@
} }
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
.mainMenu {
padding: var(--Spacing-x2) 0;
}
.nav { .nav {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;

View File

@@ -1,11 +1,11 @@
.topMenu { .topMenu {
display: none; display: none;
background-color: var(--Base-Surface-Subtle-Normal); background-color: var(--Base-Surface-Subtle-Normal);
padding: var(--Spacing-x2); padding: var(--Spacing-x2) 0;
} }
.content { .content {
max-width: var(--max-width-navigation); max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
} }

View File

@@ -11,10 +11,12 @@
.bottomSheet { .bottomSheet {
display: grid; display: grid;
grid-template-columns: 1fr auto; grid-template-columns: 1fr auto;
padding: var(--Spacing-x2) var(--Spacing-x3) var(--Spacing-x5) padding: var(--Spacing-x2) 0 var(--Spacing-x5);
var(--Spacing-x3);
align-items: flex-start; align-items: flex-start;
transition: 0.5s ease-in-out; transition: 0.5s ease-in-out;
max-width: var(--max-width-page);
width: 100%;
margin: 0 auto;
} }
.priceDetailsButton { .priceDetailsButton {
@@ -25,6 +27,7 @@
transition: padding 0.5s ease-in-out; transition: padding 0.5s ease-in-out;
cursor: pointer; cursor: pointer;
white-space: nowrap; white-space: nowrap;
padding: 0;
} }
.wrapper[data-open="true"] { .wrapper[data-open="true"] {
@@ -51,6 +54,12 @@
overflow: hidden; overflow: hidden;
} }
@media screen and (min-width: 768px) {
.bottomSheet {
padding: var(--Spacing-x2) 0 var(--Spacing-x7);
}
}
@keyframes fadeIn { @keyframes fadeIn {
from { from {
opacity: 0; opacity: 0;

View File

@@ -37,7 +37,8 @@
.listingContainer { .listingContainer {
background-color: var(--Base-Surface-Secondary-light-Normal); background-color: var(--Base-Surface-Secondary-light-Normal);
padding: var(--Spacing-x3) var(--Spacing-x4); padding: var(--Spacing-x3) var(--Spacing-x4) var(--Spacing-x3)
var(--Layout-Tablet-Margin-Margin-min);
overflow-y: auto; overflow-y: auto;
min-width: 420px; min-width: 420px;
width: 420px; width: 420px;
@@ -59,3 +60,10 @@
gap: var(--Spacing-x2); gap: var(--Spacing-x2);
} }
} }
@media (min-width: 1367px) {
.listingContainer {
padding: var(--Spacing-x3) var(--Spacing-x4) var(--Spacing-x3)
var(--Layout-Desktop-Margin-Margin-min);
}
}

View File

@@ -12,15 +12,18 @@ export function SelectHotelSkeleton({ count = 4 }: Props) {
return ( return (
<div className={styles.skeletonContainer}> <div className={styles.skeletonContainer}>
<header className={styles.header}> <header className={styles.header}>
<div className={styles.breadcrumbs}> <div className={styles.headerContent}>
<SkeletonShimmer height={"25px"} width={"300px"} /> <div className={styles.breadcrumbs}>
</div> <SkeletonShimmer height={"25px"} width={"300px"} />
<div className={styles.title}>
<div className={styles.cityInformation}>
<SkeletonShimmer height={"25px"} width={"200px"} />
</div> </div>
<div className={styles.sorter}>
<SkeletonShimmer height={"60px"} width={"100%"} /> <div className={styles.title}>
<div className={styles.cityInformation}>
<SkeletonShimmer height={"25px"} width={"200px"} />
</div>
<div className={styles.sorter}>
<SkeletonShimmer height={"60px"} width={"100%"} />
</div>
</div> </div>
</div> </div>
</header> </header>

View File

@@ -133,17 +133,19 @@ export default async function SelectHotel({
return ( return (
<> <>
<header className={styles.header}> <header className={styles.header}>
<Breadcrumbs breadcrumbs={breadcrumbs} /> <div className={styles.headerContent}>
<div className={styles.title}> <Breadcrumbs breadcrumbs={breadcrumbs} />
<div className={styles.cityInformation}> <div className={styles.title}>
<Subtitle>{city.name}</Subtitle> <div className={styles.cityInformation}>
<HotelCount /> <Subtitle>{city.name}</Subtitle>
</div> <HotelCount />
<div className={styles.sorter}> </div>
<HotelSorter discreet /> <div className={styles.sorter}>
<HotelSorter discreet />
</div>
</div> </div>
<MobileMapButtonContainer filters={filterList} />
</div> </div>
<MobileMapButtonContainer filters={filterList} />
</header> </header>
<main className={styles.main}> <main className={styles.main}>
<div className={styles.sideBar}> <div className={styles.sideBar}>

View File

@@ -1,21 +1,25 @@
.main { .main {
display: flex; display: flex;
padding: 0 var(--Spacing-x2) var(--Spacing-x3) var(--Spacing-x2);
background-color: var(--Scandic-Brand-Warm-White); background-color: var(--Scandic-Brand-Warm-White);
min-height: 100dvh; min-height: 100dvh;
flex-direction: column; flex-direction: column;
max-width: var(--max-width); max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
} }
.header { .header {
padding: var(--Spacing-x3) 0 var(--Spacing-x2);
}
.headerContent {
max-width: var(--max-width-page);
margin: 0 auto;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: var(--Spacing-x2); gap: var(--Spacing-x2);
padding: var(--Spacing-x3) var(--Spacing-x2) 0 var(--Spacing-x2);
} }
.header nav { .headerContent nav {
display: none; display: none;
} }
@@ -70,16 +74,18 @@
@media (min-width: 768px) { @media (min-width: 768px) {
.main { .main {
padding: var(--Spacing-x5); padding: var(--Spacing-x5) 0;
}
.header {
display: block;
background-color: var(--Base-Surface-Subtle-Normal);
padding: var(--Spacing-x4) var(--Spacing-x5) var(--Spacing-x3)
var(--Spacing-x5);
} }
.header nav { .headerContent {
display: block;
}
.header {
background-color: var(--Base-Surface-Subtle-Normal);
padding: var(--Spacing-x4) 0 var(--Spacing-x3);
}
.headerContent nav {
display: block; display: block;
max-width: var(--max-width-navigation); max-width: var(--max-width-navigation);
padding: 0; padding: 0;

View File

@@ -1,12 +1,12 @@
.container { .container {
background-color: var(--Base-Surface-Subtle-Normal); background-color: var(--Base-Surface-Subtle-Normal);
padding: var(--Spacing-x3) var(--Spacing-x2); padding: var(--Spacing-x3) 0;
} }
.wrapper { .wrapper {
display: flex; display: flex;
margin: 0 auto; margin: 0 auto;
max-width: var(--max-width-navigation); max-width: var(--max-width-page);
position: relative; position: relative;
flex-direction: column; flex-direction: column;
gap: var(--Spacing-x2); gap: var(--Spacing-x2);
@@ -62,11 +62,17 @@
} }
.hotelAlert { .hotelAlert {
max-width: var(--max-width-navigation); max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
padding-top: var(--Spacing-x-one-and-half); padding-top: var(--Spacing-x-one-and-half);
} }
@media screen and (min-width: 768px) {
.container {
padding: var(--Spacing-x4) 0;
}
}
@media screen and (min-width: 1367px) { @media screen and (min-width: 1367px) {
.container { .container {
padding: var(--Spacing-x4) var(--Spacing-x5); padding: var(--Spacing-x4) var(--Spacing-x5);

View File

@@ -13,7 +13,7 @@
.content { .content {
width: 100%; width: 100%;
max-width: var(--max-width-navigation); max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -29,7 +29,7 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: var(--Spacing-x4); gap: var(--Spacing-x4);
padding: var(--Spacing-x2) var(--Spacing-x3) 0; padding-top: var(--Spacing-x2);
width: 100%; width: 100%;
} }
@@ -72,7 +72,7 @@
@media (min-width: 768px) { @media (min-width: 768px) {
.summary { .summary {
padding: var(--Spacing-x3) var(--Spacing-x7) var(--Spacing-x5); padding: var(--Spacing-x3) 0 var(--Spacing-x5);
} }
.content { .content {
flex-direction: row; flex-direction: row;

View File

@@ -1,7 +1,6 @@
.container { .container {
padding: var(--Spacing-x2);
margin: 0 auto; margin: 0 auto;
max-width: var(--max-width); max-width: var(--max-width-page);
} }
.filterContainer { .filterContainer {

View File

@@ -1,8 +1,8 @@
.content { .content {
max-width: var(--max-width); max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: var(--Spacing-x2); gap: var(--Spacing-x2);
padding: var(--Spacing-x2); padding: var(--Spacing-x2) 0;
} }

View File

@@ -11,7 +11,7 @@
.content { .content {
width: 100%; width: 100%;
max-width: var(--max-width-navigation); max-width: var(--max-width-page);
margin: 0 auto; margin: 0 auto;
display: flex; display: flex;
gap: var(--Spacing-x2); gap: var(--Spacing-x2);
@@ -60,7 +60,6 @@
/* Intent: banner */ /* Intent: banner */
.banner { .banner {
padding: 0 var(--Spacing-x3);
border-left-width: 6px; border-left-width: 6px;
border-left-style: solid; border-left-style: solid;
} }
@@ -90,9 +89,6 @@
} }
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
.banner {
padding: 0 var(--Spacing-x5);
}
.innerContent { .innerContent {
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;

View File

@@ -1,17 +1,35 @@
.breadcrumbs { .breadcrumbs {
display: block; display: block;
padding: var(--Spacing-x2) var(--Spacing-x2) 0; padding: var(--Spacing-x4) 0 var(--Spacing-x3);
max-width: var(--max-width);
margin: 0 auto; margin: 0 auto;
width: 100%; width: 100%;
} }
.contentWidth.breadcrumbs {
background-color: var(--Base-Surface-Subtle-Normal);
padding-bottom: 0;
}
.hotelHeaderWidth.breadcrumbs {
max-width: min(var(--max-width-page), calc(100% - var(--max-width-spacing)));
}
.fullWidth .list {
max-width: var(--max-width-navigation);
}
.contentWidth .list {
max-width: var(--max-width-content);
}
.list { .list {
align-items: center; align-items: center;
display: flex; display: flex;
gap: var(--Spacing-x-quarter); gap: var(--Spacing-x-quarter);
justify-content: flex-start; justify-content: flex-start;
list-style: none; list-style: none;
margin: 0 auto;
max-width: var(--max-width-page);
} }
.listItem { .listItem {
@@ -23,10 +41,3 @@
.homeLink { .homeLink {
display: flex; display: flex;
} }
@media screen and (min-width: 1367px) {
.breadcrumbs {
padding-left: var(--Spacing-x5);
padding-right: var(--Spacing-x5);
}
}

View File

@@ -1,9 +1,14 @@
import type { VariantProps } from "class-variance-authority"
import type { breadcrumbsVariants } from "./variants"
type Breadcrumb = { type Breadcrumb = {
title: string title: string
uid: string uid: string
href?: string href?: string
} }
export interface BreadcrumbsProps { export interface BreadcrumbsProps
extends VariantProps<typeof breadcrumbsVariants> {
breadcrumbs: Breadcrumb[] breadcrumbs: Breadcrumb[]
} }

View File

@@ -3,18 +3,27 @@ import ChevronRightSmallIcon from "@/components/Icons/ChevronRightSmall"
import Link from "@/components/TempDesignSystem/Link" import Link from "@/components/TempDesignSystem/Link"
import Footnote from "@/components/TempDesignSystem/Text/Footnote" import Footnote from "@/components/TempDesignSystem/Text/Footnote"
import { breadcrumbsVariants } from "./variants"
import styles from "./breadcrumbs.module.css" import styles from "./breadcrumbs.module.css"
import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs" import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs"
export default function Breadcrumbs({ breadcrumbs }: BreadcrumbsProps) { export default function Breadcrumbs({
breadcrumbs,
variant,
}: BreadcrumbsProps) {
if (!breadcrumbs?.length) { if (!breadcrumbs?.length) {
return null return null
} }
const classNames = breadcrumbsVariants({
variant,
})
const homeBreadcrumb = breadcrumbs.shift() const homeBreadcrumb = breadcrumbs.shift()
return ( return (
<nav className={styles.breadcrumbs}> <nav className={classNames}>
<ul className={styles.list}> <ul className={styles.list}>
{homeBreadcrumb ? ( {homeBreadcrumb ? (
<li className={styles.listItem}> <li className={styles.listItem}>

View File

@@ -0,0 +1,21 @@
import { cva } from "class-variance-authority"
import styles from "./breadcrumbs.module.css"
import { PageContentTypeEnum } from "@/types/requests/contentType"
export const breadcrumbsVariants = cva(styles.breadcrumbs, {
variants: {
variant: {
[PageContentTypeEnum.accountPage]: styles.fullWidth,
[PageContentTypeEnum.contentPage]: styles.contentWidth,
[PageContentTypeEnum.collectionPage]: styles.contentWidth,
[PageContentTypeEnum.hotelPage]: styles.hotelHeaderWidth,
[PageContentTypeEnum.loyaltyPage]: styles.fullWidth,
default: styles.fullWidth,
},
},
defaultVariants: {
variant: "default",
},
})

View File

@@ -1,4 +1,3 @@
import { Lang } from "@/constants/languages"
import { getPublicNextURL } from "@/server/utils" import { getPublicNextURL } from "@/server/utils"
import { resolve as resolveEntry } from "@/utils/entry" import { resolve as resolveEntry } from "@/utils/entry"
@@ -7,6 +6,8 @@ import { removeTrailingSlash } from "@/utils/url"
import type { NextRequest } from "next/server" import type { NextRequest } from "next/server"
import type { Lang } from "@/constants/languages"
export function getDefaultRequestHeaders(request: NextRequest) { export function getDefaultRequestHeaders(request: NextRequest) {
const lang = findLang(request.nextUrl.pathname)! const lang = findLang(request.nextUrl.pathname)!
const nextUrlPublic = getPublicNextURL(request) const nextUrlPublic = getPublicNextURL(request)

View File

@@ -1,5 +1,3 @@
import { ValueOf } from "next/dist/shared/lib/constants"
import { import {
GetAccountPageSettings, GetAccountPageSettings,
GetCollectionPageSettings, GetCollectionPageSettings,
@@ -15,11 +13,13 @@ import { generateTag } from "@/utils/generateTag"
import { import {
validateBookingWidgetToggleSchema, validateBookingWidgetToggleSchema,
ValidateBookingWidgetToggleType, type ValidateBookingWidgetToggleType,
} from "./output" } from "./output"
import { affix as bookingwidgetAffix } from "./utils" import { affix as bookingwidgetAffix } from "./utils"
import { ContentTypeEnum } from "@/types/requests/contentType" import type { ValueOf } from "next/dist/shared/lib/constants"
import { PageContentTypeEnum } from "@/types/requests/contentType"
export const bookingwidgetQueryRouter = router({ export const bookingwidgetQueryRouter = router({
toggle: router({ toggle: router({
@@ -33,27 +33,27 @@ export const bookingwidgetQueryRouter = router({
return failedResponse return failedResponse
} }
let GetPageSettings = "" let GetPageSettings = ""
const contentTypeCMS = <ValueOf<typeof ContentTypeEnum>>( const contentTypeCMS = <ValueOf<typeof PageContentTypeEnum>>(
contentType.replaceAll("-", "_") contentType.replaceAll("-", "_")
) )
switch (contentTypeCMS) { switch (contentTypeCMS) {
case ContentTypeEnum.accountPage: case PageContentTypeEnum.accountPage:
GetPageSettings = GetAccountPageSettings GetPageSettings = GetAccountPageSettings
break break
case ContentTypeEnum.loyaltyPage: case PageContentTypeEnum.loyaltyPage:
GetPageSettings = GetLoyaltyPageSettings GetPageSettings = GetLoyaltyPageSettings
break break
case ContentTypeEnum.collectionPage: case PageContentTypeEnum.collectionPage:
GetPageSettings = GetCollectionPageSettings GetPageSettings = GetCollectionPageSettings
break break
case ContentTypeEnum.contentPage: case PageContentTypeEnum.contentPage:
GetPageSettings = GetContentPageSettings GetPageSettings = GetContentPageSettings
break break
case ContentTypeEnum.hotelPage: case PageContentTypeEnum.hotelPage:
GetPageSettings = GetHotelPageSettings GetPageSettings = GetHotelPageSettings
break break
case ContentTypeEnum.currentBlocksPage: case PageContentTypeEnum.currentBlocksPage:
GetPageSettings = GetCurrentBlocksPageSettings GetPageSettings = GetCurrentBlocksPageSettings
break break
} }

View File

@@ -28,7 +28,7 @@ import { contentstackExtendedProcedureUID, router } from "@/server/trpc"
import { breadcrumbsRefsSchema, breadcrumbsSchema } from "./output" import { breadcrumbsRefsSchema, breadcrumbsSchema } from "./output"
import { getTags } from "./utils" import { getTags } from "./utils"
import { PageTypeEnum } from "@/types/requests/pageType" import { PageContentTypeEnum } from "@/types/requests/contentType"
import type { import type {
BreadcrumbsRefsSchema, BreadcrumbsRefsSchema,
RawBreadcrumbsSchema, RawBreadcrumbsSchema,
@@ -170,7 +170,7 @@ export const breadcrumbsQueryRouter = router({
} }
switch (ctx.contentType) { switch (ctx.contentType) {
case PageTypeEnum.accountPage: case PageContentTypeEnum.accountPage:
return await getBreadcrumbs<{ return await getBreadcrumbs<{
account_page: RawBreadcrumbsSchema account_page: RawBreadcrumbsSchema
}>( }>(
@@ -181,7 +181,7 @@ export const breadcrumbsQueryRouter = router({
}, },
variables variables
) )
case PageTypeEnum.collectionPage: case PageContentTypeEnum.collectionPage:
return await getBreadcrumbs<{ return await getBreadcrumbs<{
collection_page: RawBreadcrumbsSchema collection_page: RawBreadcrumbsSchema
}>( }>(
@@ -192,7 +192,7 @@ export const breadcrumbsQueryRouter = router({
}, },
variables variables
) )
case PageTypeEnum.contentPage: case PageContentTypeEnum.contentPage:
return await getBreadcrumbs<{ return await getBreadcrumbs<{
content_page: RawBreadcrumbsSchema content_page: RawBreadcrumbsSchema
}>( }>(
@@ -203,7 +203,7 @@ export const breadcrumbsQueryRouter = router({
}, },
variables variables
) )
case PageTypeEnum.hotelPage: case PageContentTypeEnum.hotelPage:
return await getBreadcrumbs<{ return await getBreadcrumbs<{
hotel_page: RawBreadcrumbsSchema hotel_page: RawBreadcrumbsSchema
}>( }>(
@@ -214,7 +214,7 @@ export const breadcrumbsQueryRouter = router({
}, },
variables variables
) )
case PageTypeEnum.loyaltyPage: case PageContentTypeEnum.loyaltyPage:
return await getBreadcrumbs<{ return await getBreadcrumbs<{
loyalty_page: RawBreadcrumbsSchema loyalty_page: RawBreadcrumbsSchema
}>( }>(

View File

@@ -35,11 +35,11 @@ import { generateTag } from "@/utils/generateTag"
import { validateLanguageSwitcherData } from "./output" import { validateLanguageSwitcherData } from "./output"
import { languageSwitcherAffix } from "./utils" import { languageSwitcherAffix } from "./utils"
import { PageContentTypeEnum } from "@/types/requests/contentType"
import type { import type {
LanguageSwitcherData, LanguageSwitcherData,
LanguageSwitcherQueryDataRaw, LanguageSwitcherQueryDataRaw,
} from "@/types/requests/languageSwitcher" } from "@/types/requests/languageSwitcher"
import { PageTypeEnum } from "@/types/requests/pageType"
interface LanguageSwitcherVariables { interface LanguageSwitcherVariables {
contentType: string contentType: string
@@ -72,27 +72,27 @@ async function getLanguageSwitcher(options: LanguageSwitcherVariables) {
let daDeEnDocument = null let daDeEnDocument = null
let fiNoSvDocument = null let fiNoSvDocument = null
switch (options.contentType) { switch (options.contentType) {
case PageTypeEnum.accountPage: case PageContentTypeEnum.accountPage:
daDeEnDocument = GetDaDeEnUrlsAccountPage daDeEnDocument = GetDaDeEnUrlsAccountPage
fiNoSvDocument = GetFiNoSvUrlsAccountPage fiNoSvDocument = GetFiNoSvUrlsAccountPage
break break
case PageTypeEnum.currentBlocksPage: case PageContentTypeEnum.currentBlocksPage:
daDeEnDocument = GetDaDeEnUrlsCurrentBlocksPage daDeEnDocument = GetDaDeEnUrlsCurrentBlocksPage
fiNoSvDocument = GetFiNoSvUrlsCurrentBlocksPage fiNoSvDocument = GetFiNoSvUrlsCurrentBlocksPage
break break
case PageTypeEnum.loyaltyPage: case PageContentTypeEnum.loyaltyPage:
daDeEnDocument = GetDaDeEnUrlsLoyaltyPage daDeEnDocument = GetDaDeEnUrlsLoyaltyPage
fiNoSvDocument = GetFiNoSvUrlsLoyaltyPage fiNoSvDocument = GetFiNoSvUrlsLoyaltyPage
break break
case PageTypeEnum.hotelPage: case PageContentTypeEnum.hotelPage:
daDeEnDocument = GetDaDeEnUrlsHotelPage daDeEnDocument = GetDaDeEnUrlsHotelPage
fiNoSvDocument = GetFiNoSvUrlsHotelPage fiNoSvDocument = GetFiNoSvUrlsHotelPage
break break
case PageTypeEnum.contentPage: case PageContentTypeEnum.contentPage:
daDeEnDocument = GetDaDeEnUrlsContentPage daDeEnDocument = GetDaDeEnUrlsContentPage
fiNoSvDocument = GetFiNoSvUrlsContentPage fiNoSvDocument = GetFiNoSvUrlsContentPage
break break
case PageTypeEnum.collectionPage: case PageContentTypeEnum.collectionPage:
daDeEnDocument = GetDaDeEnUrlsCollectionPage daDeEnDocument = GetDaDeEnUrlsCollectionPage
fiNoSvDocument = GetFiNoSvUrlsCollectionPage fiNoSvDocument = GetFiNoSvUrlsCollectionPage
break break

View File

@@ -16,7 +16,7 @@ import { getHotelData } from "../../hotels/query"
import { metadataSchema } from "./output" import { metadataSchema } from "./output"
import { affix } from "./utils" import { affix } from "./utils"
import { PageTypeEnum } from "@/types/requests/pageType" import { PageContentTypeEnum } from "@/types/requests/contentType"
import type { RawMetadataSchema } from "@/types/trpc/routers/contentstack/metadata" import type { RawMetadataSchema } from "@/types/trpc/routers/contentstack/metadata"
import type { Lang } from "@/constants/languages" import type { Lang } from "@/constants/languages"
@@ -121,27 +121,27 @@ export const metadataQueryRouter = router({
} }
switch (ctx.contentType) { switch (ctx.contentType) {
case PageTypeEnum.accountPage: case PageContentTypeEnum.accountPage:
const accountPageResponse = await fetchMetadata<{ const accountPageResponse = await fetchMetadata<{
account_page: RawMetadataSchema account_page: RawMetadataSchema
}>(GetAccountPageMetadata, variables) }>(GetAccountPageMetadata, variables)
return getTransformedMetadata(accountPageResponse.account_page) return getTransformedMetadata(accountPageResponse.account_page)
case PageTypeEnum.collectionPage: case PageContentTypeEnum.collectionPage:
const collectionPageResponse = await fetchMetadata<{ const collectionPageResponse = await fetchMetadata<{
collection_page: RawMetadataSchema collection_page: RawMetadataSchema
}>(GetCollectionPageMetadata, variables) }>(GetCollectionPageMetadata, variables)
return getTransformedMetadata(collectionPageResponse.collection_page) return getTransformedMetadata(collectionPageResponse.collection_page)
case PageTypeEnum.contentPage: case PageContentTypeEnum.contentPage:
const contentPageResponse = await fetchMetadata<{ const contentPageResponse = await fetchMetadata<{
content_page: RawMetadataSchema content_page: RawMetadataSchema
}>(GetContentPageMetadata, variables) }>(GetContentPageMetadata, variables)
return getTransformedMetadata(contentPageResponse.content_page) return getTransformedMetadata(contentPageResponse.content_page)
case PageTypeEnum.loyaltyPage: case PageContentTypeEnum.loyaltyPage:
const loyaltyPageResponse = await fetchMetadata<{ const loyaltyPageResponse = await fetchMetadata<{
loyalty_page: RawMetadataSchema loyalty_page: RawMetadataSchema
}>(GetLoyaltyPageMetadata, variables) }>(GetLoyaltyPageMetadata, variables)
return getTransformedMetadata(loyaltyPageResponse.loyalty_page) return getTransformedMetadata(loyaltyPageResponse.loyalty_page)
case PageTypeEnum.hotelPage: case PageContentTypeEnum.hotelPage:
const hotelPageResponse = await fetchMetadata<{ const hotelPageResponse = await fetchMetadata<{
hotel_page: RawMetadataSchema hotel_page: RawMetadataSchema
}>(GetHotelPageMetadata, variables) }>(GetHotelPageMetadata, variables)

View File

@@ -1,4 +1,5 @@
import { Lang } from "@/constants/languages" import type { Lang } from "@/constants/languages"
import type { PageContentTypeEnum } from "./requests/contentType"
export type SearchParams<S = {}> = { export type SearchParams<S = {}> = {
searchParams: S & { [key: string]: string } searchParams: S & { [key: string]: string }
@@ -18,10 +19,10 @@ export type StatusParams = {
export type ContentTypeParams = { export type ContentTypeParams = {
contentType: contentType:
| "loyalty-page" | PageContentTypeEnum.loyaltyPage
| "content-page" | PageContentTypeEnum.contentPage
| "hotel-page" | PageContentTypeEnum.hotelPage
| "collection-page" | PageContentTypeEnum.collectionPage
} }
export type ContentTypeWebviewParams = { export type ContentTypeWebviewParams = {

View File

@@ -1,4 +1,4 @@
export enum ContentTypeEnum { export enum PageContentTypeEnum {
accountPage = "account_page", accountPage = "account_page",
loyaltyPage = "loyalty_page", loyaltyPage = "loyalty_page",
hotelPage = "hotel_page", hotelPage = "hotel_page",

View File

@@ -1,8 +0,0 @@
export enum PageTypeEnum {
accountPage = "account-page",
loyaltyPage = "loyalty-page",
hotelPage = "hotel-page",
contentPage = "content-page",
collectionPage = "collection-page",
currentBlocksPage = "current-blocks-page",
}

View File

@@ -29,7 +29,7 @@ export async function resolve(url: string, lang = Lang.en) {
if (value.total) { if (value.total) {
const { content_type_uid, uid } = value.items[0].system const { content_type_uid, uid } = value.items[0].system
return { return {
contentType: content_type_uid.replaceAll("_", "-"), contentType: content_type_uid,
uid, uid,
} }
} }