From 990b84e0cb211c7f072fbbdbd4fe5a96394cd418 Mon Sep 17 00:00:00 2001 From: Arvid Norlin Date: Fri, 19 Apr 2024 14:03:06 +0200 Subject: [PATCH] feat: add mapping of benefits AccountPage --- .../(protected)/my-pages/benefits/page.tsx | 38 +++++------------- components/MyPages/AccountPage/Content.tsx | 22 +++++++++-- .../Benefits/CurrentLevel/current.module.css | 9 ++--- .../Blocks/Benefits/CurrentLevel/index.tsx | 39 +++++++++++++------ .../Blocks/Benefits/NextLevel/index.tsx | 17 +++++--- .../MyPages/Blocks/UpcomingStays/index.tsx | 1 + types/requests/myPages/accountpage.ts | 2 + 7 files changed, 74 insertions(+), 54 deletions(-) diff --git a/app/[lang]/(live)/(protected)/my-pages/benefits/page.tsx b/app/[lang]/(live)/(protected)/my-pages/benefits/page.tsx index ada9f3e70..85cfe427b 100644 --- a/app/[lang]/(live)/(protected)/my-pages/benefits/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/benefits/page.tsx @@ -1,39 +1,21 @@ -import CurrentBenefitsBlock from "@/components/MyPages/Blocks/Benefits/CurrentLevel" -import NextLevelBenefitsBlock from "@/components/MyPages/Blocks/Benefits/NextLevel" -import Shortcuts from "@/components/MyPages/Blocks/Shortcuts" -import Title from "@/components/Title" +import { serverClient } from "@/lib/trpc/server" -import { shortcuts } from "./_constants" +import Content from "@/components/MyPages/AccountPage/Content" import styles from "./page.module.css" import type { LangParams, PageArgs } from "@/types/params" -export default function BenefitsPage({ params }: PageArgs) { +export default async function BenefitsPage({ params }: PageArgs) { + const user = await serverClient().user.get() + const accountPage = await serverClient().contentstack.accountPage.get({ + lang: params.lang, + uri: "/my-pages/benefits", + }) + return (
-
- - Your Perks and benefits. Tailored just for{" "} - <span className={styles.red}>you.</span> - -

- Discover the exclusive benefits and delightful surprises our - friendship unlocks. -

-
- - - Perks and benefits{" "} - for All friends. - - } - subtitle="Always Yours. Universal Benefits for the Scandic Friends community." - /> - +
) } diff --git a/components/MyPages/AccountPage/Content.tsx b/components/MyPages/AccountPage/Content.tsx index e295f449c..d498233ff 100644 --- a/components/MyPages/AccountPage/Content.tsx +++ b/components/MyPages/AccountPage/Content.tsx @@ -1,14 +1,18 @@ import { Lang } from "@/constants/languages" + import { AccountPageContentItem, ContentEntries, DynamicContent, DynamicContentComponents, } from "@/types/requests/myPages/accountpage" -import { User } from "@/types/user" + +import CurrentBenefitsBlock from "@/components/MyPages/Blocks/Benefits/CurrentLevel" +import NextLevelBenefitsBlock from "@/components/MyPages/Blocks/Benefits/NextLevel" import Overview from "@/components/MyPages/Blocks/Overview" import Shortcuts from "@/components/MyPages/Blocks/Shortcuts" -import UpcomingStays from "@/components/MyPages/Blocks/UpcomingStays" +import UpcomingStays from "@/components/MyPages/Blocks/Stays/Upcoming" +import { User } from "@/types/user" function DynamicComponent({ user, @@ -37,8 +41,20 @@ function DynamicComponent({ case DynamicContentComponents.previous_stays: return null case DynamicContentComponents.upcoming_stays: + return + case DynamicContentComponents.current_benefits: return ( - + + ) + case DynamicContentComponents.next_benefits: + return ( + ) default: return null diff --git a/components/MyPages/Blocks/Benefits/CurrentLevel/current.module.css b/components/MyPages/Blocks/Benefits/CurrentLevel/current.module.css index 686f50847..3fa323200 100644 --- a/components/MyPages/Blocks/Benefits/CurrentLevel/current.module.css +++ b/components/MyPages/Blocks/Benefits/CurrentLevel/current.module.css @@ -1,13 +1,10 @@ -.container { +.cardContainer { display: grid; gap: 4px; } .title { - color: var(--some-black-color, #111); - /* font-family: var(--ff-brandon-text); */ - font-weight: 500; - text-align: center; + font-weight: 600; } .value { @@ -49,7 +46,7 @@ } @media screen and (min-width: 950px) { - .container { + .cardContainer { grid-template-areas: "card card2" "card card3"; diff --git a/components/MyPages/Blocks/Benefits/CurrentLevel/index.tsx b/components/MyPages/Blocks/Benefits/CurrentLevel/index.tsx index e106697c4..76789edf0 100644 --- a/components/MyPages/Blocks/Benefits/CurrentLevel/index.tsx +++ b/components/MyPages/Blocks/Benefits/CurrentLevel/index.tsx @@ -6,20 +6,37 @@ import Title from "@/components/Title" import styles from "./current.module.css" -export default async function CurrentBenefitsBlock() { +export type CurrentLevelProps = { + title: string + preamble?: string +} + +export default async function CurrentBenefitsBlock({ + title, + preamble, +}: CurrentLevelProps) { const benefits = await serverClient().user.benefits.current() return ( -
- {benefits.map((benefit) => ( - - - <span className={styles.value}>{benefit.value}</span>{" "} - {benefit.explanation} - -

{benefit.subtitle}

- - ))} +
+
+ + {title} + + {preamble &&

{preamble}

} +
+ +
+ {benefits.map((benefit) => ( + + + <span className={styles.value}>{benefit.value}</span>{" "} + {benefit.explanation} + +

{benefit.subtitle}

+ + ))} +
) } diff --git a/components/MyPages/Blocks/Benefits/NextLevel/index.tsx b/components/MyPages/Blocks/Benefits/NextLevel/index.tsx index 8bb4fc277..194c3fa75 100644 --- a/components/MyPages/Blocks/Benefits/NextLevel/index.tsx +++ b/components/MyPages/Blocks/Benefits/NextLevel/index.tsx @@ -8,19 +8,24 @@ import Title from "@/components/Title" import styles from "./next.module.css" -export default async function NextLevelBenefitsBlock() { +export type NextLevelProps = { + title: string + preamble?: string +} + +export default async function NextLevelBenefitsBlock({ + title, + preamble, +}: NextLevelProps) { const { nextLevel, perks } = await serverClient().user.benefits.nextLevel() return (
- Next Level perks and benefits. + {title} -

- Here's a sneak peek at the extra benefits waiting just for you, - when you level up to {nextLevel} -

+ {preamble &&

{preamble}

}
{perks.map((perk) => ( diff --git a/components/MyPages/Blocks/UpcomingStays/index.tsx b/components/MyPages/Blocks/UpcomingStays/index.tsx index 2201ab191..1d1a592a1 100644 --- a/components/MyPages/Blocks/UpcomingStays/index.tsx +++ b/components/MyPages/Blocks/UpcomingStays/index.tsx @@ -26,6 +26,7 @@ export default function UpcomingStays({ )} + {preamble}
{stays.map((stay) => ( diff --git a/types/requests/myPages/accountpage.ts b/types/requests/myPages/accountpage.ts index 6aef3f38b..4d7ac986b 100644 --- a/types/requests/myPages/accountpage.ts +++ b/types/requests/myPages/accountpage.ts @@ -8,6 +8,8 @@ export enum DynamicContentComponents { benefits = "benefits", previous_stays = "previous_stays", upcoming_stays = "upcoming_stays", + current_benefits = "current_benefits", + next_benefits = "next_benefits", } export enum ContentEntries {