From e5b9da29d07779abfe1e69157dac83ae2fbe813d Mon Sep 17 00:00:00 2001 From: Arvid Norlin Date: Tue, 21 May 2024 14:14:45 +0200 Subject: [PATCH] feat: add rendering of detailed benefits --- .../DynamicContent/OverviewTable/data/EN.json | 14 ++--- .../DynamicContent/OverviewTable/index.tsx | 62 +++++++++++++++---- .../OverviewTable/overviewTable.module.css | 28 +++++++-- 3 files changed, 80 insertions(+), 24 deletions(-) diff --git a/components/Loyalty/Blocks/DynamicContent/OverviewTable/data/EN.json b/components/Loyalty/Blocks/DynamicContent/OverviewTable/data/EN.json index 6f0003cfd..f490a6d01 100644 --- a/components/Loyalty/Blocks/DynamicContent/OverviewTable/data/EN.json +++ b/components/Loyalty/Blocks/DynamicContent/OverviewTable/data/EN.json @@ -48,7 +48,7 @@ "unlocked": false }, { - "name": "Free upgrades wehen available", + "name": "Free upgrades when available", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "unlocked": false }, @@ -127,7 +127,7 @@ "unlocked": false }, { - "name": "Free upgrades wehen available", + "name": "Free upgrades when available", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "unlocked": false }, @@ -206,7 +206,7 @@ "unlocked": false }, { - "name": "Free upgrades wehen available", + "name": "Free upgrades when available", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "unlocked": false }, @@ -286,7 +286,7 @@ "unlocked": true }, { - "name": "Free upgrades wehen available", + "name": "Free upgrades when available", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "unlocked": false }, @@ -366,7 +366,7 @@ "unlocked": true }, { - "name": "Free upgrades wehen available", + "name": "Free upgrades when available", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "unlocked": true }, @@ -449,7 +449,7 @@ "unlocked": true }, { - "name": "Free upgrades wehen available", + "name": "Free upgrades when available", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "unlocked": true }, @@ -532,7 +532,7 @@ "unlocked": true }, { - "name": "Free upgrades wehen available", + "name": "Free upgrades when available", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "unlocked": true }, diff --git a/components/Loyalty/Blocks/DynamicContent/OverviewTable/index.tsx b/components/Loyalty/Blocks/DynamicContent/OverviewTable/index.tsx index 2a2a479a4..a5aac74d1 100644 --- a/components/Loyalty/Blocks/DynamicContent/OverviewTable/index.tsx +++ b/components/Loyalty/Blocks/DynamicContent/OverviewTable/index.tsx @@ -27,14 +27,24 @@ function createComparison(levelA: Level, levelB: Level) { {comparedLevels[1].benefits .filter((benefit) => benefit.unlocked) .map((benefit, idx) => { + const aBenefit = comparedLevels[0].benefits[idx] + const bBenefit = comparedLevels[1].benefits[idx] return ( ) @@ -135,13 +145,13 @@ type SelectProps = { function Select({ options, defaultOption, onChange }: SelectProps) { return (
- {options.map((option) => ( - ))} @@ -165,6 +175,8 @@ type Level = { name: string description: string unlocked: boolean + value?: string + valueDetails?: string }, ] } @@ -185,14 +197,13 @@ function LevelSummary({ level }: LevelSummaryProps) { type PerkCardProps = { comparedValues: { - a: boolean | string - b: boolean | string + a: { unlocked: boolean; value?: string; valueDetails?: string } + b: { unlocked: boolean; value?: string; valueDetails?: string } } title: string description: string } function PerkCard({ comparedValues, title, description }: PerkCardProps) { - const [isExpanded, setIsExpanded] = useState(false) return (
@@ -212,12 +223,37 @@ function PerkCard({ comparedValues, title, description }: PerkCardProps) {
- {comparedValues.a ? : "-"} +
- {comparedValues.b ? : "-"} +
) } + +function PerkValue({ + benefit, +}: { + benefit: { + unlocked: boolean + value?: string + valueDetails?: string + } +}) { + if (!benefit.unlocked) { + return "-" + } + if (!benefit.value) { + return + } + return ( +
+ {benefit.value} + {benefit.valueDetails && ( + {benefit.valueDetails} + )} +
+ ) +} diff --git a/components/Loyalty/Blocks/DynamicContent/OverviewTable/overviewTable.module.css b/components/Loyalty/Blocks/DynamicContent/OverviewTable/overviewTable.module.css index 9386b0711..80eea5fbb 100644 --- a/components/Loyalty/Blocks/DynamicContent/OverviewTable/overviewTable.module.css +++ b/components/Loyalty/Blocks/DynamicContent/OverviewTable/overviewTable.module.css @@ -48,7 +48,7 @@ .select { appearance: none; border: 1px solid var(--Base-Input-Controls-Border-Normal, #b8a79a); - border-radius: 8px; + border-radius: 0.8rem; padding: 1.6rem; width: 100%; } @@ -80,7 +80,7 @@ left: 50%; right: 0; z-index: 1; - border-top-left-radius: 8px; + border-top-left-radius: 0.8rem; } .levelSummary { @@ -92,9 +92,9 @@ .levelRequirements { background-color: var(--Main-Brand-Burgundy); - border-radius: 8px; + border-radius: 0.8rem; color: #f7e1d5; - padding: 4px 8px; + padding: 0.4rem 0.8rem; } .levelSummaryText { @@ -155,3 +155,23 @@ align-items: center; padding: 1rem; } + +.perkValueContainer { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; +} + +.perkValue { + background-color: var(--Main-Brand-Burgundy); + border-radius: 0.8rem; + color: var(--Base-Surface-Primary-Hover-alt, #fff); + font-size: var(--typography-Footnote-Regular-fontSize); + padding: 0.4rem 0.8rem; +} + +.perkValueDetails { + font-size: var(--typography-Footnote-Regular-fontSize); + text-align: center; +}