Merged in fix/move-sas-comparison-to-dynamic-content (pull request #1279)

Move SASTierComparison block to DynamicContent

Approved-by: Erik Tiekstra
This commit is contained in:
Anton Gunnarsson
2025-02-11 09:36:41 +00:00
parent 1d4993fb7f
commit 6eb01750e8
20 changed files with 211 additions and 147 deletions
@@ -0,0 +1,25 @@
import { serverClient } from "@/lib/trpc/server"
import { SasTierComparison } from "@/components/SasTierComparison"
type SASTierComparisonBlockProps = {
title: string
preamble: string
}
export default async function SASTierComparisonBlock({
title,
preamble,
}: SASTierComparisonBlockProps) {
const tierComparison =
await serverClient().contentstack.partner.getSasTierComparison()
if (!tierComparison) return null
return (
<SasTierComparison
title={title}
preamble={preamble}
tierComparison={tierComparison}
/>
)
}
@@ -11,6 +11,7 @@ import ExpiringPoints from "@/components/Blocks/DynamicContent/Points/ExpiringPo
import PointsOverview from "@/components/Blocks/DynamicContent/Points/Overview"
import CurrentRewardsBlock from "@/components/Blocks/DynamicContent/Rewards/CurrentRewards"
import NextLevelRewardsBlock from "@/components/Blocks/DynamicContent/Rewards/NextLevel"
import SASTierComparisonBlock from "@/components/Blocks/DynamicContent/SASTierComparison"
import SignupFormWrapper from "@/components/Blocks/DynamicContent/SignupFormWrapper"
import SignUpVerification from "@/components/Blocks/DynamicContent/SignUpVerification"
import PreviousStays from "@/components/Blocks/DynamicContent/Stays/Previous"
@@ -74,6 +75,13 @@ function DynamicContentBlocks(props: DynamicContentProps) {
return <SoonestStays {...dynamic_content} />
case DynamicContentEnum.Blocks.components.upcoming_stays:
return <UpcomingStays {...dynamic_content} />
case DynamicContentEnum.Blocks.components.sas_tier_comparison:
return (
<SASTierComparisonBlock
title={dynamic_content.title}
preamble={dynamic_content.subtitle}
/>
)
default:
return null
}
-3
View File
@@ -7,7 +7,6 @@ import ShortcutsList from "@/components/Blocks/ShortcutsList"
import TextCols from "@/components/Blocks/TextCols"
import UspGrid from "@/components/Blocks/UspGrid"
import JsonToHtml from "@/components/JsonToHtml"
import { SasTierComparison } from "@/components/SasTierComparison"
import AccordionSection from "./Accordion"
import FullWidthCampaign from "./FullWidthCampaign"
@@ -103,8 +102,6 @@ export default function Blocks({ blocks }: BlocksProps) {
)
case BlocksEnums.block.UspGrid:
return <UspGrid usp_grid={block.usp_grid} />
case BlocksEnums.block.SasTierComparison:
return <SasTierComparison content={block.sas_tier_comparison} />
case BlocksEnums.block.FullWidthCampaign:
return <FullWidthCampaign content={block.full_width_campaign} />
case BlocksEnums.block.JoinScandicFriends:
+19 -23
View File
@@ -12,30 +12,28 @@ import Caption from "../TempDesignSystem/Text/Caption"
import Subtitle from "../TempDesignSystem/Text/Subtitle"
import Title from "../TempDesignSystem/Text/Title"
import styles from "./sas-tier-comparison.module.css"
import styles from "./sasTierComparison.module.css"
import type { ReactNode } from "react"
import type { SasTierComparison } from "@/types/trpc/routers/contentstack/blocks"
type SasTierComparisonContent = SasTierComparison["sas_tier_comparison"]
import type { SasTierComparison } from "@/types/trpc/routers/contentstack/partner"
type TierComparisonProps = {
content: SasTierComparisonContent
title?: string
preamble?: string
tierComparison: NonNullable<SasTierComparison>
}
export function SasTierComparison({ content }: TierComparisonProps) {
const comparisonContent = content.sasTierComparison
if (!comparisonContent) return null
export function SasTierComparison({
title,
preamble,
tierComparison,
}: TierComparisonProps) {
return (
<SectionContainer className={styles.comparisonSection}>
<div className={styles.header}>
<Title level="h2">{comparisonContent.title}</Title>
{comparisonContent.preamble && (
<p className={styles.preamble}>{comparisonContent.preamble}</p>
)}
<Title level="h2">{title}</Title>
{preamble && <p className={styles.preamble}>{preamble}</p>}
</div>
<div>
<div className={styles.columnHeaders}>
@@ -53,11 +51,11 @@ export function SasTierComparison({ content }: TierComparisonProps) {
priority
width={215}
/>
<ColumnTitle>{comparisonContent.scandic_column_title}</ColumnTitle>
<ColumnTitle>{comparisonContent.sas_column_title}</ColumnTitle>
<ColumnTitle>{tierComparison.scandic_column_title}</ColumnTitle>
<ColumnTitle>{tierComparison.sas_column_title}</ColumnTitle>
</div>
<div className={styles.tierMatchList}>
{comparisonContent.tier_matches.map((tierMatch, i) => (
{tierComparison.tier_matches.map((tierMatch, i) => (
<TierDetails key={i} tierMatch={tierMatch}>
<JsonToHtml
nodes={tierMatch.content.json?.children}
@@ -68,10 +66,10 @@ export function SasTierComparison({ content }: TierComparisonProps) {
))}
</div>
</div>
{comparisonContent.cta?.href && (
{tierComparison.cta?.href && (
<Button theme="primaryLight" asChild className={styles.ctaButton}>
<Link href={comparisonContent.cta.href} color="white">
{comparisonContent.cta.title}
<Link href={tierComparison.cta.href} color="white">
{tierComparison.cta.title}
</Link>
</Button>
)}
@@ -79,9 +77,7 @@ export function SasTierComparison({ content }: TierComparisonProps) {
)
}
type TierMatch = NonNullable<
SasTierComparisonContent["sasTierComparison"]
>["tier_matches"][number]
type TierMatch = NonNullable<SasTierComparison>["tier_matches"][number]
function TierDetails({
children,