import { serverClient } from "@/lib/trpc/server" import { CheckIcon } from "@/components/Icons" import MembershipLevelIcon from "@/components/Levels/Icon" import BiroScript from "@/components/TempDesignSystem/Text/BiroScript" import Caption from "@/components/TempDesignSystem/Text/Caption" import Title from "@/components/TempDesignSystem/Text/Title" import { getIntl } from "@/i18n" import { getLang } from "@/i18n/serverContext" import SectionWrapper from "../SectionWrapper" import styles from "./loyaltyLevels.module.css" import type { LoyaltyLevelsProps } from "@/types/components/blocks/dynamicContent" import type { LevelCardProps } from "@/types/components/overviewTable" export default async function LoyaltyLevels({ dynamic_content, firstItem, }: LoyaltyLevelsProps) { const uniqueLevels = await serverClient().contentstack.rewards.all({ unique: true, }) return (
{uniqueLevels.map((level) => ( ))}
) } async function LevelCard({ level }: LevelCardProps) { const lang = getLang() const intl = await getIntl() const pointsString = `${level.required_points.toLocaleString(lang)} ${intl.formatMessage({ id: "points" })} ` return (
{intl.formatMessage({ id: "Level" })} {level.user_facing_tag}
{pointsString} {level.required_nights ? ( <span className={styles.redText}> {intl.formatMessage({ id: "or" })} {level.required_nights}{" "} {intl.formatMessage({ id: "nights" })} </span> ) : null}
{level.rewards.map((reward) => ( {reward.label} ))}
) }