import { cx } from "class-variance-authority" import { useIntl } from "react-intl" import { Divider } from "../../Divider" import { RateTypeEnum } from "@scandic-hotels/common/constants/rateType" import { Typography } from "../../Typography" import styles from "./hotelPriceCard.module.css" type Price = { pricePerStay: number pricePerNight: number currency: string } export type PriceCardProps = { productTypePrices: { rateType: RateTypeEnum localPrice: Price requestedPrice?: Price } isMemberPrice?: boolean className?: string isCampaign?: boolean isPartnerBrand: boolean } export function HotelPriceCard({ productTypePrices, isMemberPrice = false, className, isCampaign = false, isPartnerBrand, }: PriceCardProps) { const intl = useIntl() const isRegularOrPublicPromotionRate = productTypePrices.rateType === RateTypeEnum.Regular || productTypePrices.rateType === RateTypeEnum.PublicPromotion return (
{isRegularOrPublicPromotionRate && (isMemberPrice ? (

{isPartnerBrand ? intl.formatMessage({ id: "booking.scandicFriendsMemberPrice", defaultMessage: "Scandic Friends member price", description: { context: "Member price label in white label partner sites", }, }) : intl.formatMessage({ id: "booking.memberPrice", defaultMessage: "Member price", })}

) : (

{intl.formatMessage({ id: "booking.standardPrice", defaultMessage: "Standard price", })}

))}

{intl.formatMessage({ id: "common.from", defaultMessage: "From", })}

{productTypePrices.localPrice.pricePerNight}

{productTypePrices.localPrice.currency} {/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */} / {intl.formatMessage({ id: "common.night", defaultMessage: "night", })}

{productTypePrices?.requestedPrice && (

{intl.formatMessage({ id: "booking.approx", defaultMessage: "Approx.", })}

{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */} {`${productTypePrices.requestedPrice.pricePerNight} `} {productTypePrices.requestedPrice.currency}

)} {productTypePrices.localPrice.pricePerStay !== productTypePrices.localPrice.pricePerNight && // Handle undefined scenarios productTypePrices.localPrice.pricePerNight && ( <>

{intl.formatMessage({ id: "common.total", defaultMessage: "Total", })}

{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */} {`${productTypePrices.localPrice.pricePerStay} `} {productTypePrices.localPrice.currency}

)}
) }