import { MembershipLevelEnum } from "@scandic-hotels/common/constants/membershipLevels" import { dt } from "@scandic-hotels/common/dt" import { Typography } from "@scandic-hotels/design-system/Typography" import { TIER_TO_FRIEND_MAP } from "@/constants/membershipLevels" import { getProfile } from "@/lib/trpc/memoizedRequests" import { getIntl } from "@/i18n" import { getLang } from "@/i18n/serverContext" import { getTierStartDate } from "@/utils/getTierStartDate" import { ProgressSection } from "./ProgressSection" import styles from "./l6Progress.module.css" const MAX_NIGHTS = 100 export async function L6Progress() { const user = await getProfile() const intl = await getIntl() const lang = await getLang() if ( !user || "error" in user || user?.membership?.membershipLevel !== MembershipLevelEnum.L6 ) { return null } const nightsToTopTier = user?.membership?.nightsToTopTier if (nightsToTopTier == null) { return null } const nightsStayed = MAX_NIGHTS - nightsToTopTier // Cap progress at 100 to prevent overflow. const progressValue = Math.min(nightsStayed, MAX_NIGHTS) const tierStartDate = getTierStartDate(user.membership.tierExpirationDate) const formattedStartDate = tierStartDate ? dt(tierStartDate).locale(lang).format("D MMMM YYYY") : null const bestFriendLabel = TIER_TO_FRIEND_MAP[MembershipLevelEnum.L7] return (
{intl.formatMessage( { id: "previousStays.sinceDate", defaultMessage: "Since {date}", }, { date: formattedStartDate } )}