diff --git a/components/ContentType/StartPage/index.tsx b/components/ContentType/StartPage/index.tsx index c7c817b81..670552c4c 100644 --- a/components/ContentType/StartPage/index.tsx +++ b/components/ContentType/StartPage/index.tsx @@ -2,20 +2,54 @@ import { Suspense } from "react" import { getStartPage } from "@/lib/trpc/memoizedRequests" +import Image from "@/components/Image" +import PageContainer from "@/components/PageContainer" +import Title from "@/components/TempDesignSystem/Text/Title" import TrackingSDK from "@/components/TrackingSDK" +import styles from "./startPage.module.css" + export default async function StartPage() { const content = await getStartPage() if (!content) { return null } + const { header } = content.startPage + return ( -

- {JSON.stringify(content, null, 2)} + +

+
+ + {header.heading} + +
+ 👉 Insert booking widget here 👈 +
+
+ {header.hero_image ? ( + { + ) : null} +
+
+ JSON data +
{JSON.stringify(content, null, 2)}
+
-

+ ) } diff --git a/components/ContentType/StartPage/startPage.module.css b/components/ContentType/StartPage/startPage.module.css new file mode 100644 index 000000000..00caa35d9 --- /dev/null +++ b/components/ContentType/StartPage/startPage.module.css @@ -0,0 +1,39 @@ +.header { + height: 560px; + position: relative; + overflow: hidden; +} + +.header:after { + content: ""; + background: linear-gradient( + 182deg, + rgba(38, 32, 30, 0.08) 13%, + rgba(77, 0, 27, 0.4) 100% + ); + position: absolute; + inset: 0; +} + +.headerContent { + position: absolute; + inset: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + grid-gap: var(--Spacing-x2); + padding: var(--Spacing-x2) var(--Spacing-x2) var(--Spacing-x4); +} + +@media screen and (min-width: 768px) { + .headerContent { + grid-gap: var(--Spacing-x4); + padding: 320px 160px 80px; + } +} + +.topImage { + max-width: 100%; +} diff --git a/components/PageContainer/index.tsx b/components/PageContainer/index.tsx new file mode 100644 index 000000000..8502c748c --- /dev/null +++ b/components/PageContainer/index.tsx @@ -0,0 +1,7 @@ +import styles from "./pageContainer.module.css" + +import type { PropsWithChildren } from "react" + +export default function PageContainer({ children }: PropsWithChildren) { + return
{children}
+} diff --git a/components/PageContainer/pageContainer.module.css b/components/PageContainer/pageContainer.module.css new file mode 100644 index 000000000..67e4abc17 --- /dev/null +++ b/components/PageContainer/pageContainer.module.css @@ -0,0 +1,6 @@ +.container { + width: 100%; + max-width: var(--max-width); + margin-left: auto; + margin-right: auto; +} diff --git a/lib/graphql/Query/StartPage/StartPage.graphql b/lib/graphql/Query/StartPage/StartPage.graphql index 4a8beb1e8..de058a81f 100644 --- a/lib/graphql/Query/StartPage/StartPage.graphql +++ b/lib/graphql/Query/StartPage/StartPage.graphql @@ -4,6 +4,10 @@ query GetStartPage($locale: String!, $uid: String!) { start_page(uid: $uid, locale: $locale) { title url + header { + heading + hero_image + } system { ...System created_at diff --git a/server/routers/contentstack/startPage/output.ts b/server/routers/contentstack/startPage/output.ts index b63a000b1..e9247a5f5 100644 --- a/server/routers/contentstack/startPage/output.ts +++ b/server/routers/contentstack/startPage/output.ts @@ -1,10 +1,15 @@ import { z } from "zod" +import { tempImageVaultAssetSchema } from "../schemas/imageVault" import { systemSchema } from "../schemas/system" export const startPageSchema = z.object({ start_page: z.object({ title: z.string(), + header: z.object({ + heading: z.string(), + hero_image: tempImageVaultAssetSchema, + }), system: systemSchema.merge( z.object({ created_at: z.string(),