feat(WEB-304): remaning UI from design system primitives

This commit is contained in:
Simon Emanuelsson
2024-06-07 10:36:23 +02:00
parent 6737970f54
commit 7c4b8401e9
228 changed files with 3516 additions and 3237 deletions

View File

@@ -1,45 +1,21 @@
.container {
display: grid;
gap: 1.5rem;
gap: var(--Spacing-x7);
}
.script {
transform: rotate(-2deg);
}
.card {
display: flex;
flex: 1 1 0px;
flex-direction: column;
align-items: center;
background-color: var(--UI-Grey-10);
border-radius: var(--Corner-radius-Small);
display: flex;
flex-direction: column;
gap: var(--Spacing-x1);
justify-content: center;
gap: var(--Spacing-x2);
padding: var(--Spacing-x7) var(--Spacing-x3);
min-height: 280px;
background-color: var(--Scandic-Beige-00);
border-radius: var(--Corner-radius-Medium);
border: 1px solid var(--Scandic-Beige-20);
text-decoration: none;
text-align: center;
color: var(--Theme-Primary-Light-On-Surface-Text);
}
.title {
display: flex;
flex-direction: column;
text-wrap: balance;
}
.titleValue {
color: var(--UI-Red-60);
}
.titleExplanation {
color: var(--Theme-Primary-Light-On-Surface-Text);
}
.subtitle {
color: var(--Theme-Primary-Light-On-Surface-Text);
font-family: var(--typography-Body-Regular-fontFamily);
font-size: 16px;
font-weight: 400;
line-height: 150%;
letter-spacing: 0.096px;
text-align: center;
margin: 0;
padding: var(--Spacing-x3);
}

View File

@@ -1,13 +1,11 @@
import { Lang } from "@/constants/languages"
import { serverClient } from "@/lib/trpc/server"
import Header from "@/components/MyPages/Blocks/Header"
import CardGrid from "@/components/TempDesignSystem/CardGrid"
import Grids from "@/components/TempDesignSystem/Grids"
import Link from "@/components/TempDesignSystem/Link"
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
import BiroScript from "@/components/TempDesignSystem/Text/BiroScript"
import Title from "@/components/TempDesignSystem/Text/Title"
import levelsData from "../data"
import { getIntl } from "@/i18n"
import styles from "./current.module.css"
@@ -19,45 +17,36 @@ export default async function CurrentBenefitsBlock({
link,
}: AccountPageComponentProps) {
const user = await serverClient().user.get()
const { formatMessage } = await getIntl()
// TODO: level should be fetched from the `user` object once available
// TAKE NOTE: we need clarification on how benefits stack from different levels
// in order to determine if a benefit is specific to a level or if it is a cumulative benefit
// we might have to add a new boolean property "exclusive" or similar
const userLevel = 1
const currentLevel = levelsData[Lang.en].levels.find(
(level) => level.tier === userLevel
)
if (!currentLevel) {
// TODO: handle this case?
return null
}
const currentLevel = Array.of(...Array(3).keys())
return (
<section className={styles.container}>
<Header title={title} link={link} subtitle={subtitle} />
<CardGrid isMobileCarousel={true}>
{currentLevel.benefits.map((benefit, idx) => (
<Link
href={benefit.href}
key={`${currentLevel}-${idx}`}
className={styles.card}
>
<Title as="h5" level="h3" className={styles.title}>
<span className={styles.titleValue}>{benefit.value}</span>
{benefit.explaination ? (
<span className={styles.titleExplanation}>
{benefit.explaination}
</span>
) : null}
<Grids.Scrollable>
{currentLevel.map((benefit) => (
<Link className={styles.card} href="#" key={benefit}>
<BiroScript
className={styles.script}
color="primaryLightOnSurfaceAccent"
type="two"
>
{formatMessage({ id: "As our Close Friend" })}
</BiroScript>
<Title as="h5" level="h3" textAlign="center">
{formatMessage({
id: "Free soft drink voucher for the kids when staying",
})}
</Title>
<Subtitle className={styles.subtitle}>
{benefit.description}
</Subtitle>
</Link>
))}
</CardGrid>
</Grids.Scrollable>
</section>
)
}