"use client" import { notFound, useParams } from "next/navigation" import { useIntl } from "react-intl" import { Lang } from "@/constants/languages" import { CheckIcon } from "@/components/Icons" import { BestFriend, CloseFriend, DearFriend, GoodFriend, LoyalFriend, NewFriend, TrueFriend, } from "@/components/Levels" import BiroScript from "@/components/TempDesignSystem/Text/BiroScript" import Caption from "@/components/TempDesignSystem/Text/Caption" import Title from "@/components/TempDesignSystem/Text/Title" import levelsData from "./data" import styles from "./loyaltyLevels.module.css" import type { Level, LevelCardProps } from "@/types/components/loyalty/blocks" export default function LoyaltyLevels() { const params = useParams() const lang = params.lang as Lang const { formatMessage } = useIntl() const { levels } = levelsData[lang] return (
{levels.map((level: Level) => ( ))}
) } function LevelCard({ formatMessage, lang, level }: LevelCardProps) { const pointsString = `${level.requiredPoints.toLocaleString(lang)} ${formatMessage({ id: "Points" })} ` const qualifications = level.requiredNights ? `${pointsString} ${formatMessage({ id: "or" })} ${level.requiredNights} ${formatMessage({ id: "nights" })}` : pointsString let Level = null switch (level.level) { case 1: Level = NewFriend break case 2: Level = GoodFriend break case 3: Level = CloseFriend break case 4: Level = DearFriend break case 5: Level = LoyalFriend break case 6: Level = TrueFriend break case 7: Level = BestFriend break default: { const loyaltyLevel = level.level as never console.error(`Unsupported loyalty level given: ${loyaltyLevel}`) notFound() } } return (
{formatMessage({ id: "Level" })} {level.level}
{qualifications}
{level.benefits.map((benefit) => ( {benefit.title} ))}
) }