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}

)}
) }